Ruby 2.7.7p221 (2022-11-24 revision 168ec2b1e5ad0e4688e963d9de019557c78feed9)
rb_mjit_min_header-2.7.7.h
Go to the documentation of this file.
1#ifdef __GNUC__
2# pragma GCC system_header
3#endif
4#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
5typedef signed char __int8_t;
6typedef unsigned char __uint8_t;
7typedef short int __int16_t;
8typedef short unsigned int __uint16_t;
9typedef int __int32_t;
10typedef unsigned int __uint32_t;
11typedef long int __int64_t;
12typedef long unsigned int __uint64_t;
13typedef signed char __int_least8_t;
14typedef unsigned char __uint_least8_t;
15typedef short int __int_least16_t;
16typedef short unsigned int __uint_least16_t;
17typedef int __int_least32_t;
18typedef unsigned int __uint_least32_t;
19typedef long int __int_least64_t;
20typedef long unsigned int __uint_least64_t;
21typedef long int __intmax_t;
22typedef long unsigned int __uintmax_t;
23typedef long int __intptr_t;
24typedef long unsigned int __uintptr_t;
25typedef long unsigned int size_t;
26typedef long int ptrdiff_t;
27typedef short unsigned int wchar_t;
28typedef struct {
29 long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
30 long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
32typedef __builtin_va_list __gnuc_va_list;
34typedef unsigned int wint_t;
38typedef unsigned long __fsblkcnt_t;
39typedef unsigned long __fsfilcnt_t;
43typedef long long __key_t;
45typedef int __socklen_t;
46typedef long _off_t;
47typedef int __pid_t;
50__extension__ typedef long long _off64_t;
53typedef long _fpos_t;
55typedef long unsigned int __size_t;
56typedef long signed int _ssize_t;
58typedef struct
59{
61 union
62 {
64 unsigned char __wchb[4];
65 } __value;
67typedef void *_iconv_t;
68typedef unsigned long __clock_t;
69typedef long __time_t;
70typedef unsigned long __clockid_t;
71typedef unsigned long __timer_t;
72typedef int __nl_item;
73typedef unsigned short __nlink_t;
74typedef long __suseconds_t;
75typedef unsigned long __useconds_t;
76typedef __builtin_va_list __va_list;
77typedef unsigned int __ULong;
78typedef void *_LOCK_T;
86struct _reent;
87struct __locale_t;
88struct _Bigint
89{
90 struct _Bigint *_next;
93};
94struct __tm
95{
105};
107 void * _fnargs[32];
108 void * _dso_handle[32];
111};
112struct _atexit {
113 struct _atexit *_next;
114 int _ind;
115 void (*_fns[32])(void);
117};
118struct __sbuf {
119 unsigned char *_base;
120 int _size;
121};
122struct __sFILE {
123 unsigned char *_p;
124 int _r;
125 int _w;
126 short _flags;
127 short _file;
128 struct __sbuf _bf;
130 void * _cookie;
131 _ssize_t (*_read) (struct _reent *, void *,
132 char *, size_t);
133 _ssize_t (*_write) (struct _reent *, void *,
134 const char *,
135 size_t);
136 _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
137 int (*_close) (struct _reent *, void *);
138 struct __sbuf _ub;
139 unsigned char *_up;
140 int _ur;
141 unsigned char _ubuf[3];
142 unsigned char _nbuf[1];
143 struct __sbuf _lb;
146 struct _reent *_data;
150};
151struct __sFILE64 {
152 unsigned char *_p;
153 int _r;
154 int _w;
155 short _flags;
156 short _file;
157 struct __sbuf _bf;
159 struct _reent *_data;
160 void * _cookie;
161 _ssize_t (*_read) (struct _reent *, void *,
162 char *, size_t);
163 _ssize_t (*_write) (struct _reent *, void *,
164 const char *,
165 size_t);
166 _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
167 int (*_close) (struct _reent *, void *);
168 struct __sbuf _ub;
169 unsigned char *_up;
170 int _ur;
171 unsigned char _ubuf[3];
172 unsigned char _nbuf[1];
173 struct __sbuf _lb;
177 _fpos64_t (*_seek64) (struct _reent *, void *, _fpos64_t, int);
180};
181typedef struct __sFILE64 __FILE;
182struct _glue
183{
184 struct _glue *_next;
187};
188struct _rand48 {
189 unsigned short _seed[3];
190 unsigned short _mult[3];
191 unsigned short _add;
192};
193struct _reent
194{
197 int _inc;
198 char _emergency[25];
200 struct __locale_t *_locale;
202 void (*__cleanup) (struct _reent *);
205 struct _Bigint *_p5s;
208 char *_cvtbuf;
209 union
210 {
211 struct
212 {
213 unsigned int _unused_rand;
215 char _asctime_buf[26];
218 __extension__ unsigned long long _rand_next;
219 struct _rand48 _r48;
223 char _l64a_buf[8];
224 char _signal_buf[24];
233 struct
234 {
235 unsigned char * _nextf[30];
236 unsigned int _nmalloc[30];
244};
245extern struct _reent *_impure_ptr ;
246extern struct _reent *const _global_impure_ptr ;
247void _reclaim_reent (struct _reent *);
248 struct _reent * __getreent (void);
266static __inline__ __uint32_t __ntohl(__uint32_t);
267static __inline__ __uint16_t __ntohs(__uint16_t);
268static __inline__ __uint32_t
269__ntohl(__uint32_t _x)
270{
271 __asm__("bswap %0" : "=r" (_x) : "0" (_x));
272 return _x;
273}
274static __inline__ __uint16_t
275__ntohs(__uint16_t _x)
276{
277 __asm__("xchgb %b0,%h0"
278 : "=Q" (_x)
279 : "0" (_x));
280 return _x;
281}
282typedef unsigned long __sigset_t;
284typedef long time_t;
285struct timeval {
288};
289struct timespec {
292};
296};
298typedef unsigned long __fd_mask;
300typedef struct fd_set {
301 __fd_mask __fds_bits[(((64) + ((((int)sizeof(__fd_mask) * 8)) - 1)) / (((int)sizeof(__fd_mask) * 8)))];
303
304int select (int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout);
305int pselect (int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set);
306
310typedef unsigned char u_char;
311typedef unsigned short u_short;
312typedef unsigned int u_int;
313typedef unsigned long u_long;
314typedef unsigned short ushort;
315typedef unsigned int uint;
316typedef unsigned long ulong;
319typedef unsigned long clock_t;
320typedef long daddr_t;
321typedef char * caddr_t;
324typedef __id_t id_t;
339typedef long unsigned int __cpu_mask;
340typedef struct
341{
342 __cpu_mask __bits[(1024 / (8 * sizeof (__cpu_mask)))];
343} cpu_set_t;
345typedef struct __pthread_t {char __dummy;} *pthread_t;
347typedef struct __pthread_key_t {char __dummy;} *pthread_key_t;
354typedef struct
355{
357 int state;
358}
363static __inline unsigned short
364__bswap_16 (unsigned short __x)
365{
366 return (__x >> 8) | (__x << 8);
367}
368static __inline unsigned int
369__bswap_32 (unsigned int __x)
370{
371 return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
372}
373static __inline unsigned long long
374__bswap_64 (unsigned long long __x)
375{
376 return (((unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
377}
378typedef struct timespec timespec_t;
379typedef struct timespec timestruc_t;
381struct flock {
382 short l_type;
383 short l_whence;
387};
388typedef unsigned long vm_offset_t;
389typedef unsigned long vm_size_t;
390typedef void *vm_object_t;
391typedef char *addr_t;
392static __inline__ int gnu_dev_major(dev_t);
393static __inline__ int gnu_dev_minor(dev_t);
394static __inline__ dev_t gnu_dev_makedev(int, int);
395static __inline__ int
396gnu_dev_major(dev_t dev)
397{
398 return (int)(((dev) >> 16) & 0xffff);
399}
400static __inline__ int
401gnu_dev_minor(dev_t dev)
402{
403 return (int)((dev) & 0xffff);
404}
405static __inline__ dev_t
406gnu_dev_makedev(int maj, int min)
407{
408 return (((maj) << 16) | ((min) & 0xffff));
409}
410
411typedef __FILE FILE;
413
414ssize_t getline (char **, size_t *, FILE *);
415ssize_t getdelim (char **, size_t *, int, FILE *);
416
417char * ctermid (char *);
418char * cuserid (char *);
419FILE * tmpfile (void);
420char * tmpnam (char *);
421char * tempnam (const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
422int fclose (FILE *);
423int fflush (FILE *);
424FILE * freopen (const char *__restrict__, const char *__restrict__, FILE *__restrict__);
426int setvbuf (FILE *__restrict__, char *__restrict__, int, size_t);
427int fprintf (FILE *__restrict__, const char *__restrict__, ...)
428 __attribute__ ((__format__ (__printf__, 2, 3)));
430 __attribute__ ((__format__ (__scanf__, 2, 3)));
431int printf (const char *__restrict__, ...)
432 __attribute__ ((__format__ (__printf__, 1, 2)));
433int scanf (const char *__restrict__, ...)
434 __attribute__ ((__format__ (__scanf__, 1, 2)));
436 __attribute__ ((__format__ (__scanf__, 2, 3)));
438 __attribute__ ((__format__ (__printf__, 2, 0)));
440 __attribute__ ((__format__ (__printf__, 1, 0)));
442 __attribute__ ((__format__ (__printf__, 2, 0)));
443int fgetc (FILE *);
444char * fgets (char *__restrict__, int, FILE *__restrict__);
445int fputc (int, FILE *);
447int getc (FILE *);
448int getchar (void);
449char * gets (char *);
450int putc (int, FILE *);
451int putchar (int);
452int puts (const char *);
453int ungetc (int, FILE *);
454size_t fread (void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
455size_t fwrite (const void *__restrict__ , size_t _size, size_t _n, FILE *);
457int fseek (FILE *, long, int);
459long ftell ( FILE *);
460void rewind (FILE *);
461void clearerr (FILE *);
462int feof (FILE *);
463int ferror (FILE *);
464void perror (const char *);
465FILE * fopen (const char *__restrict__ _name, const char *__restrict__ _type);
466int sprintf (char *__restrict__, const char *__restrict__, ...)
467 __attribute__ ((__format__ (__printf__, 2, 3)));
468int remove (const char *);
469int rename (const char *, const char *);
470int fseeko (FILE *, off_t, int);
472int fcloseall (void);
473int snprintf (char *__restrict__, size_t, const char *__restrict__, ...)
474 __attribute__ ((__format__ (__printf__, 3, 4)));
476 __attribute__ ((__format__ (__printf__, 3, 0)));
478 __attribute__ ((__format__ (__scanf__, 2, 0)));
480 __attribute__ ((__format__ (__scanf__, 1, 0)));
482 __attribute__ ((__format__ (__scanf__, 2, 0)));
483int asprintf (char **__restrict__, const char *__restrict__, ...)
484 __attribute__ ((__format__ (__printf__, 2, 3)));
485int vasprintf (char **, const char *, __gnuc_va_list)
486 __attribute__ ((__format__ (__printf__, 2, 0)));
487int asiprintf (char **, const char *, ...)
488 __attribute__ ((__format__ (__printf__, 2, 3)));
489char * asniprintf (char *, size_t *, const char *, ...)
490 __attribute__ ((__format__ (__printf__, 3, 4)));
491char * asnprintf (char *__restrict__, size_t *__restrict__, const char *__restrict__, ...)
492 __attribute__ ((__format__ (__printf__, 3, 4)));
493int diprintf (int, const char *, ...)
494 __attribute__ ((__format__ (__printf__, 2, 3)));
495int fiprintf (FILE *, const char *, ...)
496 __attribute__ ((__format__ (__printf__, 2, 3)));
497int fiscanf (FILE *, const char *, ...)
498 __attribute__ ((__format__ (__scanf__, 2, 3)));
499int iprintf (const char *, ...)
500 __attribute__ ((__format__ (__printf__, 1, 2)));
501int iscanf (const char *, ...)
502 __attribute__ ((__format__ (__scanf__, 1, 2)));
503int siprintf (char *, const char *, ...)
504 __attribute__ ((__format__ (__printf__, 2, 3)));
505int siscanf (const char *, const char *, ...)
506 __attribute__ ((__format__ (__scanf__, 2, 3)));
507int sniprintf (char *, size_t, const char *, ...)
508 __attribute__ ((__format__ (__printf__, 3, 4)));
509int vasiprintf (char **, const char *, __gnuc_va_list)
510 __attribute__ ((__format__ (__printf__, 2, 0)));
511char * vasniprintf (char *, size_t *, const char *, __gnuc_va_list)
512 __attribute__ ((__format__ (__printf__, 3, 0)));
513char * vasnprintf (char *, size_t *, const char *, __gnuc_va_list)
514 __attribute__ ((__format__ (__printf__, 3, 0)));
516 __attribute__ ((__format__ (__printf__, 2, 0)));
518 __attribute__ ((__format__ (__printf__, 2, 0)));
520 __attribute__ ((__format__ (__scanf__, 2, 0)));
522 __attribute__ ((__format__ (__printf__, 1, 0)));
524 __attribute__ ((__format__ (__scanf__, 1, 0)));
525int vsiprintf (char *, const char *, __gnuc_va_list)
526 __attribute__ ((__format__ (__printf__, 2, 0)));
527int vsiscanf (const char *, const char *, __gnuc_va_list)
528 __attribute__ ((__format__ (__scanf__, 2, 0)));
529int vsniprintf (char *, size_t, const char *, __gnuc_va_list)
530 __attribute__ ((__format__ (__printf__, 3, 0)));
531FILE * fdopen (int, const char *);
532int fileno (FILE *);
533int pclose (FILE *);
534FILE * popen (const char *, const char *);
535void setbuffer (FILE *, char *, int);
537int getw (FILE *);
538int putw (int, FILE *);
540int getchar_unlocked (void);
544int putc_unlocked (int, FILE *);
546int dprintf (int, const char *__restrict__, ...)
547 __attribute__ ((__format__ (__printf__, 2, 3)));
548FILE * fmemopen (void *__restrict__, size_t, const char *__restrict__);
549FILE * open_memstream (char **, size_t *);
551 __attribute__ ((__format__ (__printf__, 2, 0)));
552int renameat (int, const char *, int, const char *);
553int renameat2 (int, const char *, int, const char *, unsigned int);
554int _asiprintf_r (struct _reent *, char **, const char *, ...)
555 __attribute__ ((__format__ (__printf__, 3, 4)));
556char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...)
557 __attribute__ ((__format__ (__printf__, 4, 5)));
558char * _asnprintf_r (struct _reent *, char *__restrict__, size_t *__restrict__, const char *__restrict__, ...)
559 __attribute__ ((__format__ (__printf__, 4, 5)));
560int _asprintf_r (struct _reent *, char **__restrict__, const char *__restrict__, ...)
561 __attribute__ ((__format__ (__printf__, 3, 4)));
562int _diprintf_r (struct _reent *, int, const char *, ...)
563 __attribute__ ((__format__ (__printf__, 3, 4)));
564int _dprintf_r (struct _reent *, int, const char *__restrict__, ...)
565 __attribute__ ((__format__ (__printf__, 3, 4)));
566int _fclose_r (struct _reent *, FILE *);
567int _fcloseall_r (struct _reent *);
568FILE * _fdopen_r (struct _reent *, int, const char *);
569int _fflush_r (struct _reent *, FILE *);
570int _fgetc_r (struct _reent *, FILE *);
571int _fgetc_unlocked_r (struct _reent *, FILE *);
572char * _fgets_r (struct _reent *, char *__restrict__, int, FILE *__restrict__);
573char * _fgets_unlocked_r (struct _reent *, char *__restrict__, int, FILE *__restrict__);
574int _fgetpos_r (struct _reent *, FILE *, fpos_t *);
575int _fsetpos_r (struct _reent *, FILE *, const fpos_t *);
576int _fiprintf_r (struct _reent *, FILE *, const char *, ...)
577 __attribute__ ((__format__ (__printf__, 3, 4)));
578int _fiscanf_r (struct _reent *, FILE *, const char *, ...)
579 __attribute__ ((__format__ (__scanf__, 3, 4)));
580FILE * _fmemopen_r (struct _reent *, void *__restrict__, size_t, const char *__restrict__);
584 __attribute__ ((__format__ (__printf__, 3, 4)));
585int _fpurge_r (struct _reent *, FILE *);
586int _fputc_r (struct _reent *, int, FILE *);
587int _fputc_unlocked_r (struct _reent *, int, FILE *);
590size_t _fread_r (struct _reent *, void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
591size_t _fread_unlocked_r (struct _reent *, void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
593 __attribute__ ((__format__ (__scanf__, 3, 4)));
594int _fseek_r (struct _reent *, FILE *, long, int);
595int _fseeko_r (struct _reent *, FILE *, _off_t, int);
596long _ftell_r (struct _reent *, FILE *);
598void _rewind_r (struct _reent *, FILE *);
599size_t _fwrite_r (struct _reent *, const void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
600size_t _fwrite_unlocked_r (struct _reent *, const void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
601int _getc_r (struct _reent *, FILE *);
602int _getc_unlocked_r (struct _reent *, FILE *);
603int _getchar_r (struct _reent *);
605char * _gets_r (struct _reent *, char *);
606int _iprintf_r (struct _reent *, const char *, ...)
607 __attribute__ ((__format__ (__printf__, 2, 3)));
608int _iscanf_r (struct _reent *, const char *, ...)
609 __attribute__ ((__format__ (__scanf__, 2, 3)));
610FILE * _open_memstream_r (struct _reent *, char **, size_t *);
611void _perror_r (struct _reent *, const char *);
612int _printf_r (struct _reent *, const char *__restrict__, ...)
613 __attribute__ ((__format__ (__printf__, 2, 3)));
614int _putc_r (struct _reent *, int, FILE *);
615int _putc_unlocked_r (struct _reent *, int, FILE *);
616int _putchar_unlocked_r (struct _reent *, int);
617int _putchar_r (struct _reent *, int);
618int _puts_r (struct _reent *, const char *);
619int _remove_r (struct _reent *, const char *);
620int _rename_r (struct _reent *,
621 const char *_old, const char *_new);
622int _scanf_r (struct _reent *, const char *__restrict__, ...)
623 __attribute__ ((__format__ (__scanf__, 2, 3)));
624int _siprintf_r (struct _reent *, char *, const char *, ...)
625 __attribute__ ((__format__ (__printf__, 3, 4)));
626int _siscanf_r (struct _reent *, const char *, const char *, ...)
627 __attribute__ ((__format__ (__scanf__, 3, 4)));
628int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...)
629 __attribute__ ((__format__ (__printf__, 4, 5)));
630int _snprintf_r (struct _reent *, char *__restrict__, size_t, const char *__restrict__, ...)
631 __attribute__ ((__format__ (__printf__, 4, 5)));
632int _sprintf_r (struct _reent *, char *__restrict__, const char *__restrict__, ...)
633 __attribute__ ((__format__ (__printf__, 3, 4)));
634int _sscanf_r (struct _reent *, const char *__restrict__, const char *__restrict__, ...)
635 __attribute__ ((__format__ (__scanf__, 3, 4)));
636char * _tempnam_r (struct _reent *, const char *, const char *);
637FILE * _tmpfile_r (struct _reent *);
638char * _tmpnam_r (struct _reent *, char *);
639int _ungetc_r (struct _reent *, int, FILE *);
640int _vasiprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
641 __attribute__ ((__format__ (__printf__, 3, 0)));
642char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
643 __attribute__ ((__format__ (__printf__, 4, 0)));
644char * _vasnprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
645 __attribute__ ((__format__ (__printf__, 4, 0)));
646int _vasprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
647 __attribute__ ((__format__ (__printf__, 3, 0)));
648int _vdiprintf_r (struct _reent *, int, const char *, __gnuc_va_list)
649 __attribute__ ((__format__ (__printf__, 3, 0)));
651 __attribute__ ((__format__ (__printf__, 3, 0)));
652int _vfiprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
653 __attribute__ ((__format__ (__printf__, 3, 0)));
654int _vfiscanf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
655 __attribute__ ((__format__ (__scanf__, 3, 0)));
657 __attribute__ ((__format__ (__printf__, 3, 0)));
659 __attribute__ ((__format__ (__scanf__, 3, 0)));
660int _viprintf_r (struct _reent *, const char *, __gnuc_va_list)
661 __attribute__ ((__format__ (__printf__, 2, 0)));
662int _viscanf_r (struct _reent *, const char *, __gnuc_va_list)
663 __attribute__ ((__format__ (__scanf__, 2, 0)));
665 __attribute__ ((__format__ (__printf__, 2, 0)));
667 __attribute__ ((__format__ (__scanf__, 2, 0)));
668int _vsiprintf_r (struct _reent *, char *, const char *, __gnuc_va_list)
669 __attribute__ ((__format__ (__printf__, 3, 0)));
670int _vsiscanf_r (struct _reent *, const char *, const char *, __gnuc_va_list)
671 __attribute__ ((__format__ (__scanf__, 3, 0)));
672int _vsniprintf_r (struct _reent *, char *, size_t, const char *, __gnuc_va_list)
673 __attribute__ ((__format__ (__printf__, 4, 0)));
675 __attribute__ ((__format__ (__printf__, 4, 0)));
677 __attribute__ ((__format__ (__printf__, 3, 0)));
679 __attribute__ ((__format__ (__scanf__, 3, 0)));
680int fpurge (FILE *);
681ssize_t __getdelim (char **, size_t *, int, FILE *);
682ssize_t __getline (char **, size_t *, FILE *);
689int fputc_unlocked (int, FILE *);
690size_t fread_unlocked (void *__restrict__, size_t _size, size_t _n, FILE *__restrict__);
691size_t fwrite_unlocked (const void *__restrict__ , size_t _size, size_t _n, FILE *);
694int __srget_r (struct _reent *, FILE *);
695int __swbuf_r (struct _reent *, int, FILE *);
696FILE *funopen (const void *__cookie,
697 int (*__readfn)(void *__c, char *__buf,
698 size_t __n),
699 int (*__writefn)(void *__c, const char *__buf,
700 size_t __n),
701 _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
702 int (*__closefn)(void *__c));
703FILE *_funopen_r (struct _reent *, const void *__cookie,
704 int (*__readfn)(void *__c, char *__buf,
705 size_t __n),
706 int (*__writefn)(void *__c, const char *__buf,
707 size_t __n),
708 _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
709 int (*__closefn)(void *__c));
710typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n);
711typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf,
712 size_t __n);
713typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off,
714 int __whence);
715typedef int cookie_close_function_t(void *__cookie);
716typedef struct
717{
723FILE *fopencookie (void *__cookie,
724 const char *__mode, cookie_io_functions_t __functions);
725FILE *_fopencookie_r (struct _reent *, void *__cookie,
726 const char *__mode, cookie_io_functions_t __functions);
727static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p);
728static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p)
729 {
730 int __c = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
731 if ((__p->_flags & 0x4000) && (__c == '\r'))
732 {
733 int __c2 = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
734 if (__c2 == '\n')
735 __c = __c2;
736 else
737 ungetc(__c2, __p);
738 }
739 return __c;
740 }
741static __inline__ int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
742 if ((_p->_flags & 0x4000) && _c == '\n')
743 __sputc_r (_ptr, '\r', _p);
744 if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
745 return (*_p->_p++ = _c);
746 else
747 return (__swbuf_r(_ptr, _c, _p));
748}
749static __inline int
750_getchar_unlocked(void)
751{
752 struct _reent *_ptr;
753 _ptr = (__getreent());
754 return (__sgetc_r(_ptr, ((_ptr)->_stdin)));
755}
756static __inline int
757_putchar_unlocked(int _c)
758{
759 struct _reent *_ptr;
760 _ptr = (__getreent());
761 return (__sputc_r(_ptr, _c, ((_ptr)->_stdout)));
762}
763
764
765void __stack_chk_fail(void) __attribute__((__noreturn__));
766void __chk_fail(void) __attribute__((__noreturn__));
767
768
769int __sprintf_chk(char *__restrict__, int, size_t, const char *__restrict__, ...)
770 __attribute__((__format__ (__printf__, 4, 5)));
771int __vsprintf_chk(char *__restrict__, int, size_t, const char *__restrict__,
772 __va_list)
773 __attribute__((__format__ (__printf__, 4, 0)));
774int __snprintf_chk(char *__restrict__, size_t, int, size_t,
775 const char *__restrict__, ...)
776 __attribute__((__format__ (__printf__, 5, 6)));
777int __vsnprintf_chk(char *__restrict__, size_t, int, size_t,
779 __attribute__((__format__ (__printf__, 5, 0)));
780char *__gets_chk(char *, size_t);
781
782char * __ssp_real_fgets (char *__restrict__ __buf, int __len, FILE *__fp) __asm__("" "fgets"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * fgets (char *__restrict__ __buf, int __len, FILE *__fp)
783{
784 if (__len > 0)
785 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
787}
788char * __ssp_real_fgets_unlocked (char *__restrict__ __buf, int __len, FILE *__fp) __asm__("" "fgets_unlocked"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * fgets_unlocked (char *__restrict__ __buf, int __len, FILE *__fp)
789{
790 if (__len > 0)
791 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
793}
794size_t __ssp_real_fread (void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp) __asm__("" "fread"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t fread (void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp)
795{
796 if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
797 return __ssp_real_fread(__ptr, __size, __n, __fp);
798}
799size_t __ssp_real_fread_unlocked (void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp) __asm__("" "fread_unlocked"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t fread_unlocked (void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp)
800{
801 if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
803}
804struct __locale_t;
805typedef struct __locale_t *locale_t;
806
807struct tm
808{
819 const char *tm_zone;
820};
822double difftime (time_t _time2, time_t _time1);
823time_t mktime (struct tm *_timeptr);
825char *asctime (const struct tm *_tblock);
826char *ctime (const time_t *_time);
827struct tm *gmtime (const time_t *_timer);
828struct tm *localtime (const time_t *_timer);
829size_t strftime (char *__restrict__ _s,
830 size_t _maxsize, const char *__restrict__ _fmt,
831 const struct tm *__restrict__ _t);
832extern size_t strftime_l (char *__restrict__ _s, size_t _maxsize,
833 const char *__restrict__ _fmt,
834 const struct tm *__restrict__ _t, locale_t _l);
835char *asctime_r (const struct tm *__restrict__,
836 char *__restrict__);
837char *ctime_r (const time_t *, char *);
838struct tm *gmtime_r (const time_t *__restrict__,
839 struct tm *__restrict__);
840struct tm *localtime_r (const time_t *__restrict__,
841 struct tm *__restrict__);
842
843char *strptime (const char *__restrict__,
844 const char *__restrict__,
845 struct tm *__restrict__);
846char *strptime_l (const char *__restrict__, const char *__restrict__,
847 struct tm *__restrict__, locale_t);
848void tzset (void);
849void _tzset_r (struct _reent *);
850extern __attribute__((dllimport)) long _timezone;
851extern __attribute__((dllimport)) int _daylight;
852extern __attribute__((dllimport)) char *_tzname[2];
853int __attribute__((__cdecl__)) clock_setres (clockid_t, struct timespec *);
854time_t __attribute__((__cdecl__)) timelocal (struct tm *);
855time_t __attribute__((__cdecl__)) timegm (struct tm *);
856extern int stime (const time_t *);
857extern int daylight __asm__ ( "_daylight");
858extern long timezone __asm__ ( "_timezone");
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
883 typedef signed char int_fast8_t;
884 typedef unsigned char uint_fast8_t;
885 typedef long int int_fast16_t;
886 typedef long unsigned int uint_fast16_t;
887 typedef long int int_fast32_t;
888 typedef long unsigned int uint_fast32_t;
889 typedef long int int_fast64_t;
890 typedef long unsigned int uint_fast64_t;
895};
898};
900{
909 struct _uc_fpxreg st[8];
910 struct _uc_xmmreg xmm[16];
912};
913struct __attribute__ ((__aligned__ (16))) __mcontext
914{
915 __uint64_t p1home;
916 __uint64_t p2home;
917 __uint64_t p3home;
918 __uint64_t p4home;
919 __uint64_t p5home;
920 __uint64_t p6home;
921 __uint32_t ctxflags;
922 __uint32_t mxcsr;
923 __uint16_t cs;
924 __uint16_t ds;
925 __uint16_t es;
926 __uint16_t fs;
927 __uint16_t gs;
928 __uint16_t ss;
929 __uint32_t eflags;
930 __uint64_t dr0;
931 __uint64_t dr1;
932 __uint64_t dr2;
933 __uint64_t dr3;
934 __uint64_t dr6;
935 __uint64_t dr7;
936 __uint64_t rax;
937 __uint64_t rcx;
938 __uint64_t rdx;
939 __uint64_t rbx;
940 __uint64_t rsp;
941 __uint64_t rbp;
942 __uint64_t rsi;
943 __uint64_t rdi;
944 __uint64_t r8;
945 __uint64_t r9;
946 __uint64_t r10;
947 __uint64_t r11;
948 __uint64_t r12;
949 __uint64_t r13;
950 __uint64_t r14;
951 __uint64_t r15;
952 __uint64_t rip;
953 struct _fpstate fpregs;
954 __uint64_t vregs[52];
955 __uint64_t vcx;
956 __uint64_t dbc;
957 __uint64_t btr;
958 __uint64_t bfr;
959 __uint64_t etr;
960 __uint64_t efr;
961 __uint64_t oldmask;
962 __uint64_t cr2;
963};
964typedef union sigval
965{
969typedef struct sigevent
970{
978{
983 __extension__ union
984 {
985 struct {
988 };
990 char *_si_str;
991 };
992};
993typedef struct
994{
1000 __extension__ union
1001 {
1002 __uint32_t __pad[32];
1003 struct _sigcommune _si_commune;
1004 __extension__ struct
1005 {
1006 __extension__ union
1007 {
1010 };
1011 __extension__ struct
1012 {
1014 unsigned int si_overrun;
1015 };
1016 };
1017 __extension__ struct
1018 {
1022 };
1023 void *si_addr;
1024 };
1025} siginfo_t;
1026enum
1027{
1062enum
1063{
1070{
1071 __extension__ union
1072 {
1074 void (*sa_sigaction) ( int, siginfo_t *, void * );
1075 };
1078};
1079void psiginfo (const siginfo_t *, const char *);
1080int sigwait (const sigset_t *, int *);
1082int sighold (int);
1083int sigignore (int);
1084int sigrelse (int);
1086int sigqueue(pid_t, int, const union sigval);
1087int siginterrupt (int, int);
1088extern const char __attribute__((dllimport)) *sys_sigabbrev[];
1089extern const char __attribute__((dllimport)) *sys_siglist[];
1090typedef struct sigaltstack {
1091 void *ss_sp;
1093 size_t ss_size;
1095int sigprocmask (int, const sigset_t *, sigset_t *);
1096int pthread_sigmask (int, const sigset_t *, sigset_t *);
1097int kill (pid_t, int);
1098int killpg (pid_t, int);
1099int sigaction (int, const struct sigaction *, struct sigaction *);
1100int sigaddset (sigset_t *, const int);
1101int sigdelset (sigset_t *, const int);
1102int sigismember (const sigset_t *, int);
1106int sigsuspend (const sigset_t *);
1107int sigwait (const sigset_t *, int *);
1108int sigpause (int) __asm__ ("" "__xpg_sigpause");
1111int sigwaitinfo (const sigset_t *, siginfo_t *);
1112int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);
1113int sigqueue (pid_t, int, const union sigval);
1114int sig2str(int, char *);
1115int str2sig(const char *__restrict__, int *__restrict__);
1116typedef struct __mcontext mcontext_t;
1117typedef __attribute__ ((__aligned__ (16))) struct __ucontext {
1118 mcontext_t uc_mcontext;
1119 struct __ucontext *uc_link;
1120 sigset_t uc_sigmask;
1121 stack_t uc_stack;
1122 unsigned long int uc_flags;
1124
1125typedef int sig_atomic_t;
1128struct _reent;
1130int _raise_r (struct _reent *, int);
1132int raise (int);
1133void psignal (int, const char *);
1134
1135int clock_settime (clockid_t clock_id, const struct timespec *tp);
1136int clock_gettime (clockid_t clock_id, struct timespec *tp);
1137int clock_getres (clockid_t clock_id, struct timespec *res);
1139 struct sigevent *__restrict__ evp,
1140 timer_t *__restrict__ timerid);
1141int timer_delete (timer_t timerid);
1142int timer_settime (timer_t timerid, int flags,
1143 const struct itimerspec *__restrict__ value,
1144 struct itimerspec *__restrict__ ovalue);
1145int timer_gettime (timer_t timerid, struct itimerspec *value);
1147int nanosleep (const struct timespec *rqtp, struct timespec *rmtp);
1148int clock_nanosleep (clockid_t clock_id, int flags,
1149 const struct timespec *rqtp, struct timespec *rmtp);
1151int clock_setenable_attr (clockid_t clock_id, int attr);
1152int clock_getenable_attr (clockid_t clock_id, int *attr);
1153struct stat
1154{
1169};
1170int chmod (const char *__path, mode_t __mode );
1171int fchmod (int __fd, mode_t __mode);
1172int fstat (int __fd, struct stat *__sbuf );
1173int mkdir (const char *_path, mode_t __mode );
1174int mkfifo (const char *__path, mode_t __mode );
1175int stat (const char *__restrict__ __path, struct stat *__restrict__ __sbuf );
1177int lstat (const char *__restrict__ __path, struct stat *__restrict__ __buf );
1178int mknod (const char *__path, mode_t __mode, dev_t __dev );
1179int fchmodat (int, const char *, mode_t, int);
1180int fstatat (int, const char *__restrict__ , struct stat *__restrict__, int);
1181int mkdirat (int, const char *, mode_t);
1182int mkfifoat (int, const char *, mode_t);
1183int mknodat (int, const char *, mode_t, dev_t);
1184int utimensat (int, const char *, const struct timespec [2], int);
1185int futimens (int, const struct timespec [2]);
1186char *mkdtemp (char *);
1187const char *getprogname (void);
1188void setprogname (const char *);
1189char *canonicalize_file_name (const char *);
1190int unsetenv (const char *);
1191int clearenv (void);
1192char *ptsname (int);
1193int grantpt (int);
1194int unlockpt (int);
1195int ptsname_r(int, char *, size_t);
1196int getpt (void);
1198extern void *memalign (size_t, size_t);
1199extern void *valloc (size_t);
1200int getloadavg(double loadavg[], int nelem);
1201
1202typedef struct
1203{
1204 int quot;
1205 int rem;
1206} div_t;
1207typedef struct
1208{
1209 long quot;
1210 long rem;
1211} ldiv_t;
1212typedef struct
1213{
1214 long long int quot;
1215 long long int rem;
1216} lldiv_t;
1217typedef int (*__compar_fn_t) (const void *, const void *);
1219void abort (void) __attribute__ ((__noreturn__));
1220int abs (int);
1223void arc4random_buf (void *, size_t);
1224int atexit (void (*__func)(void));
1225double atof (const char *__nptr);
1226float atoff (const char *__nptr);
1227int atoi (const char *__nptr);
1228int _atoi_r (struct _reent *, const char *__nptr);
1229long atol (const char *__nptr);
1230long _atol_r (struct _reent *, const char *__nptr);
1231void * bsearch (const void *__key,
1232 const void *__base,
1233 size_t __nmemb,
1234 size_t __size,
1235 __compar_fn_t _compar);
1236void *calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
1237 __attribute__((__alloc_size__(1, 2))) ;
1238div_t div (int __numer, int __denom);
1239void exit (int __status) __attribute__ ((__noreturn__));
1240void free (void *) ;
1241char * getenv (const char *__string);
1242char * _getenv_r (struct _reent *, const char *__string);
1243char * secure_getenv (const char *__string);
1244char * _findenv (const char *, int *);
1245char * _findenv_r (struct _reent *, const char *, int *);
1246extern char *suboptarg;
1247int getsubopt (char **, char * const *, char **);
1248long labs (long);
1249ldiv_t ldiv (long __numer, long __denom);
1250void *malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1))) ;
1251int mblen (const char *, size_t);
1252int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
1253int mbtowc (wchar_t *__restrict__, const char *__restrict__, size_t);
1254int _mbtowc_r (struct _reent *, wchar_t *__restrict__, const char *__restrict__, size_t, _mbstate_t *);
1255int wctomb (char *, wchar_t);
1256int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
1257size_t mbstowcs (wchar_t *__restrict__, const char *__restrict__, size_t);
1258size_t _mbstowcs_r (struct _reent *, wchar_t *__restrict__, const char *__restrict__, size_t, _mbstate_t *);
1259size_t wcstombs (char *__restrict__, const wchar_t *__restrict__, size_t);
1260size_t _wcstombs_r (struct _reent *, char *__restrict__, const wchar_t *__restrict__, size_t, _mbstate_t *);
1261char * mkdtemp (char *);
1262int mkostemp (char *, int);
1263int mkostemps (char *, int, int);
1264int mkstemp (char *);
1265int mkstemps (char *, int);
1266char * mktemp (char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
1267char * _mkdtemp_r (struct _reent *, char *);
1268int _mkostemp_r (struct _reent *, char *, int);
1269int _mkostemps_r (struct _reent *, char *, int, int);
1270int _mkstemp_r (struct _reent *, char *);
1271int _mkstemps_r (struct _reent *, char *, int);
1272char * _mktemp_r (struct _reent *, char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
1273void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar);
1274int rand (void);
1275void *realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2))) ;
1276void *reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2, 3)));
1277void *reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)));
1278char * realpath (const char *__restrict__ path, char *__restrict__ resolved_path);
1279int rpmatch (const char *response);
1280void setkey (const char *__key);
1281void srand (unsigned __seed);
1282double strtod (const char *__restrict__ __n, char **__restrict__ __end_PTR);
1283double _strtod_r (struct _reent *,const char *__restrict__ __n, char **__restrict__ __end_PTR);
1284float strtof (const char *__restrict__ __n, char **__restrict__ __end_PTR);
1285long strtol (const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1286long _strtol_r (struct _reent *,const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1287unsigned long strtoul (const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1288unsigned long _strtoul_r (struct _reent *,const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1289double strtod_l (const char *__restrict__, char **__restrict__, locale_t);
1290float strtof_l (const char *__restrict__, char **__restrict__, locale_t);
1291extern long double strtold_l (const char *__restrict__, char **__restrict__,
1292 locale_t);
1293long strtol_l (const char *__restrict__, char **__restrict__, int, locale_t);
1294unsigned long strtoul_l (const char *__restrict__, char **__restrict__, int,
1295 locale_t __loc);
1296long long strtoll_l (const char *__restrict__, char **__restrict__, int, locale_t);
1297unsigned long long strtoull_l (const char *__restrict__, char **__restrict__, int,
1298 locale_t __loc);
1299int system (const char *__string);
1300long a64l (const char *__input);
1301char * l64a (long __input);
1302char * _l64a_r (struct _reent *,long __input);
1303int on_exit (void (*__func)(int, void *),void *__arg);
1304void _Exit (int __status) __attribute__ ((__noreturn__));
1305int putenv (char *__string);
1306int _putenv_r (struct _reent *, char *__string);
1307void * _reallocf_r (struct _reent *, void *, size_t);
1308int setenv (const char *__string, const char *__value, int __overwrite);
1309int _setenv_r (struct _reent *, const char *__string, const char *__value, int __overwrite);
1310char * __itoa (int, char *, int);
1311char * __utoa (unsigned, char *, int);
1312char * itoa (int, char *, int);
1313char * utoa (unsigned, char *, int);
1314int rand_r (unsigned *__seed);
1315double drand48 (void);
1316double _drand48_r (struct _reent *);
1317double erand48 (unsigned short [3]);
1318double _erand48_r (struct _reent *, unsigned short [3]);
1319long jrand48 (unsigned short [3]);
1320long _jrand48_r (struct _reent *, unsigned short [3]);
1321void lcong48 (unsigned short [7]);
1322void _lcong48_r (struct _reent *, unsigned short [7]);
1323long lrand48 (void);
1324long _lrand48_r (struct _reent *);
1325long mrand48 (void);
1326long _mrand48_r (struct _reent *);
1327long nrand48 (unsigned short [3]);
1328long _nrand48_r (struct _reent *, unsigned short [3]);
1329unsigned short *
1330 seed48 (unsigned short [3]);
1331unsigned short *
1332 _seed48_r (struct _reent *, unsigned short [3]);
1333void srand48 (long);
1334void _srand48_r (struct _reent *, long);
1335char * initstate (unsigned, char *, size_t);
1336long random (void);
1337char * setstate (char *);
1338void srandom (unsigned);
1339long long atoll (const char *__nptr);
1340long long _atoll_r (struct _reent *, const char *__nptr);
1341long long llabs (long long);
1342lldiv_t lldiv (long long __numer, long long __denom);
1343long long strtoll (const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1344long long _strtoll_r (struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1345unsigned long long strtoull (const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1346unsigned long long _strtoull_r (struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base);
1347int posix_memalign (void **, size_t, size_t) __attribute__((__nonnull__ (1)))
1348 __attribute__((__warn_unused_result__));
1349char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);
1350int _system_r (struct _reent *, const char *);
1351void __eprintf (const char *, const char *, unsigned int, const char *);
1352void qsort_r (void *__base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void *__thunk);
1353extern long double _strtold_r (struct _reent *, const char *__restrict__, char **__restrict__);
1354extern long double strtold (const char *__restrict__, char **__restrict__);
1355void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1)))
1356 __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__));
1357int at_quick_exit(void (*)(void));
1358_Noreturn void
1360
1361
1362size_t __ssp_real_mbstowcs (wchar_t *__buf, const char *__src, size_t __n) __asm__("" "mbstowcs"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t mbstowcs (wchar_t *__buf, const char *__src, size_t __n)
1363{
1364 if (__buf != ((void *)0))
1365 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(wchar_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1367}
1368size_t __ssp_real_wcstombs (char *__buf, const wchar_t *__src, size_t __len) __asm__("" "wcstombs"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t wcstombs (char *__buf, const wchar_t *__src, size_t __len) { if (__buf != ((void *)0)) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_wcstombs (__buf, __src, __len); };
1369int __ssp_real_wctomb (char *__buf, wchar_t __wc) __asm__("" "wctomb"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int wctomb (char *__buf, wchar_t __wc)
1370{
1371 if (__buf != ((void *)0))
1372 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __locale_mb_cur_max() > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1374}
1375
1376
1377int bcmp(const void *, const void *, size_t) __attribute__((__pure__));
1378void bcopy(const void *, void *, size_t);
1379void bzero(void *, size_t);
1380void explicit_bzero(void *, size_t);
1381int ffs(int) __attribute__((__const__));
1382int ffsl(long) __attribute__((__const__));
1383int ffsll(long long) __attribute__((__const__));
1384int fls(int) __attribute__((__const__));
1385int flsl(long) __attribute__((__const__));
1386int flsll(long long) __attribute__((__const__));
1387char *index(const char *, int) __attribute__((__pure__));
1388char *rindex(const char *, int) __attribute__((__pure__));
1389int strcasecmp(const char *, const char *) __attribute__((__pure__));
1390int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__));
1391int strcasecmp_l (const char *, const char *, locale_t);
1392int strncasecmp_l (const char *, const char *, size_t, locale_t);
1393
1394void __ssp_real_explicit_bzero (void *__buf, size_t __len) __asm__("" "explicit_bzero"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void explicit_bzero (void *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 0) != (size_t)-1 && __len > __builtin_object_size(__buf, 0)) __chk_fail(); return __ssp_real_explicit_bzero (__buf, __len); };
1395
1396void * memchr (const void *, int, size_t);
1397int memcmp (const void *, const void *, size_t);
1398void * memcpy (void *__restrict__, const void *__restrict__, size_t);
1399void * memmove (void *, const void *, size_t);
1400void * memset (void *, int, size_t);
1401char *strcat (char *__restrict__, const char *__restrict__);
1402char *strchr (const char *, int);
1403int strcmp (const char *, const char *);
1404int strcoll (const char *, const char *);
1405char *strcpy (char *__restrict__, const char *__restrict__);
1406size_t strcspn (const char *, const char *);
1407char *strerror (int);
1408size_t strlen (const char *);
1409char *strncat (char *__restrict__, const char *__restrict__, size_t);
1410int strncmp (const char *, const char *, size_t);
1411char *strncpy (char *__restrict__, const char *__restrict__, size_t);
1412char *strpbrk (const char *, const char *);
1413char *strrchr (const char *, int);
1414size_t strspn (const char *, const char *);
1415char *strstr (const char *, const char *);
1416char *strtok (char *__restrict__, const char *__restrict__);
1417size_t strxfrm (char *__restrict__, const char *__restrict__, size_t);
1418int strcoll_l (const char *, const char *, locale_t);
1420size_t strxfrm_l (char *__restrict__, const char *__restrict__, size_t, locale_t);
1421char *strtok_r (char *__restrict__, const char *__restrict__, char **__restrict__);
1422int timingsafe_bcmp (const void *, const void *, size_t);
1423int timingsafe_memcmp (const void *, const void *, size_t);
1424void * memccpy (void *__restrict__, const void *__restrict__, int, size_t);
1425void * mempcpy (void *, const void *, size_t);
1426void * memmem (const void *, size_t, const void *, size_t);
1427void * memrchr (const void *, int, size_t);
1428void * rawmemchr (const void *, int);
1429char *stpcpy (char *__restrict__, const char *__restrict__);
1430char *stpncpy (char *__restrict__, const char *__restrict__, size_t);
1431char *strcasestr (const char *, const char *);
1432char *strchrnul (const char *, int);
1433char *strdup (const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
1434char *_strdup_r (struct _reent *, const char *);
1435char *strndup (const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
1436char *_strndup_r (struct _reent *, const char *, size_t);
1437char *strerror_r (int, char *, size_t);
1438char * _strerror_r (struct _reent *, int, int, int *);
1439size_t strlcat (char *, const char *, size_t);
1440size_t strlcpy (char *, const char *, size_t);
1441size_t strnlen (const char *, size_t);
1442char *strsep (char **, const char *);
1443char *strnstr(const char *, const char *, size_t) __attribute__((__pure__));
1444char *strlwr (char *);
1445char *strupr (char *);
1446char *strsignal (int __signo);
1447int strtosigno (const char *__name);
1448int strverscmp (const char *, const char *);
1449char *__attribute__((__nonnull__ (1))) basename (const char *) __asm__("" "__gnu_basename");
1450
1451
1452void *__memcpy_chk(void *, const void *, size_t, size_t);
1453void *__memmove_chk(void *, void *, size_t, size_t);
1454void *__mempcpy_chk(void *, const void *, size_t, size_t);
1455void *__memset_chk(void *, int, size_t, size_t);
1456char *__stpcpy_chk(char *, const char *, size_t);
1457char *__strcat_chk(char *, const char *, size_t);
1458char *__strcpy_chk(char *, const char *, size_t);
1459char *__strncat_chk(char *, const char *, size_t, size_t);
1460char *__strncpy_chk(char *, const char *, size_t, size_t);
1461
1462
1463extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memcpy_ichk(void * __restrict__, const void * __restrict__, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memcpy_ichk(void * __restrict__ dst, const void * __restrict__ src, size_t len) { return __builtin___memcpy_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1464extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memmove_ichk(void *, const void *, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memmove_ichk(void * dst, const void * src, size_t len) { return __builtin___memmove_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1465extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __mempcpy_ichk(void * __restrict__, const void * __restrict__, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __mempcpy_ichk(void * __restrict__ dst, const void * __restrict__ src, size_t len) { return __builtin___mempcpy_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1466extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memset_ichk(void *, int, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void * __memset_ichk(void * dst, int src, size_t len) { return __builtin___memset_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1467extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpcpy_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpcpy_ichk(char * __restrict__ dst, const char * __restrict__ src) { return __builtin___stpcpy_chk(dst, src, __builtin_object_size(dst, 0)); }
1468extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpncpy_ichk(char * __restrict__, const char * __restrict__, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpncpy_ichk(char * __restrict__ dst, const char * __restrict__ src, size_t len) { return __builtin___stpncpy_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1469extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcpy_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcpy_ichk(char * __restrict__ dst, const char * __restrict__ src) { return __builtin___strcpy_chk(dst, src, __builtin_object_size(dst, 0)); }
1470extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcat_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcat_ichk(char * __restrict__ dst, const char * __restrict__ src) { return __builtin___strcat_chk(dst, src, __builtin_object_size(dst, 0)); }
1471extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strncpy_ichk(char * __restrict__, const char * __restrict__, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strncpy_ichk(char * __restrict__ dst, const char * __restrict__ src, size_t len) { return __builtin___strncpy_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1472extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strncat_ichk(char * __restrict__, const char * __restrict__, size_t); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strncat_ichk(char * __restrict__ dst, const char * __restrict__ src, size_t len) { return __builtin___strncat_chk(dst, src, len, __builtin_object_size(dst, 0)); }
1473
1474typedef struct {
1477} imaxdiv_t;
1478struct _reent;
1480extern imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denomer);
1481extern intmax_t strtoimax(const char *__restrict__, char **__restrict__, int);
1482extern intmax_t _strtoimax_r(struct _reent *, const char *__restrict__, char **__restrict__, int);
1483extern uintmax_t strtoumax(const char *__restrict__, char **__restrict__, int);
1484extern uintmax_t _strtoumax_r(struct _reent *, const char *__restrict__, char **__restrict__, int);
1485extern intmax_t wcstoimax(const wchar_t *__restrict__, wchar_t **__restrict__, int);
1486extern intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict__, wchar_t **__restrict__, int);
1487extern uintmax_t wcstoumax(const wchar_t *__restrict__, wchar_t **__restrict__, int);
1488extern uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict__, wchar_t **__restrict__, int);
1489extern intmax_t strtoimax_l(const char *__restrict__, char **_restrict, int, locale_t);
1490extern uintmax_t strtoumax_l(const char *__restrict__, char **_restrict, int, locale_t);
1491extern intmax_t wcstoimax_l(const wchar_t *__restrict__, wchar_t **_restrict, int, locale_t);
1492extern uintmax_t wcstoumax_l(const wchar_t *__restrict__, wchar_t **_restrict, int, locale_t);
1493extern char **environ;
1494void _exit (int __status) __attribute__ ((__noreturn__));
1495int access (const char *__path, int __amode);
1496unsigned alarm (unsigned __secs);
1497int chdir (const char *__path);
1498int chmod (const char *__path, mode_t __mode);
1499int chown (const char *__path, uid_t __owner, gid_t __group);
1500int chroot (const char *__path);
1501int close (int __fildes);
1502size_t confstr (int __name, char *__buf, size_t __len);
1503char * crypt (const char *__key, const char *__salt);
1504int daemon (int nochdir, int noclose);
1505int dup (int __fildes);
1506int dup2 (int __fildes, int __fildes2);
1507int dup3 (int __fildes, int __fildes2, int flags);
1508int eaccess (const char *__path, int __mode);
1509void encrypt (char *__block, int __edflag);
1510void endusershell (void);
1511int euidaccess (const char *__path, int __mode);
1512int execl (const char *__path, const char *, ...);
1513int execle (const char *__path, const char *, ...);
1514int execlp (const char *__file, const char *, ...);
1515int execlpe (const char *__file, const char *, ...);
1516int execv (const char *__path, char * const __argv[]);
1517int execve (const char *__path, char * const __argv[], char * const __envp[]);
1518int execvp (const char *__file, char * const __argv[]);
1519int execvpe (const char *__file, char * const __argv[], char * const __envp[]);
1520int faccessat (int __dirfd, const char *__path, int __mode, int __flags);
1521int fchdir (int __fildes);
1522int fchmod (int __fildes, mode_t __mode);
1523int fchown (int __fildes, uid_t __owner, gid_t __group);
1524int fchownat (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags);
1525int fexecve (int __fd, char * const __argv[], char * const __envp[]);
1527long fpathconf (int __fd, int __name);
1528int fsync (int __fd);
1529int fdatasync (int __fd);
1531char * getcwd (char *__buf, size_t __size);
1532int getdomainname (char *__name, size_t __len);
1533int getentropy (void *, size_t);
1534gid_t getegid (void);
1535uid_t geteuid (void);
1536gid_t getgid (void);
1537int getgroups (int __gidsetsize, gid_t __grouplist[]);
1538long gethostid (void);
1539char * getlogin (void);
1540int getlogin_r (char *name, size_t namesize) ;
1541char * getpass (const char *__prompt);
1542int getpagesize (void);
1543int getpeereid (int, uid_t *, gid_t *);
1549uid_t getuid (void);
1550char * getusershell (void);
1551char * getwd (char *__buf);
1552int iruserok (unsigned long raddr, int superuser, const char *ruser, const char *luser);
1553int isatty (int __fildes);
1554int issetugid (void);
1555int lchown (const char *__path, uid_t __owner, gid_t __group);
1556int link (const char *__path1, const char *__path2);
1557int linkat (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags);
1558int nice (int __nice_value);
1559off_t lseek (int __fildes, off_t __offset, int __whence);
1560int lockf (int __fd, int __cmd, off_t __len);
1561long pathconf (const char *__path, int __name);
1562int pause (void);
1563int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
1564int pipe (int __fildes[2]);
1565int pipe2 (int __fildes[2], int flags);
1566ssize_t pread (int __fd, void *__buf, size_t __nbytes, off_t __offset);
1567ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, off_t __offset);
1568_ssize_t read (int __fd, void *__buf, size_t __nbyte);
1569int rresvport (int *__alport);
1570int revoke (char *__path);
1571int rmdir (const char *__path);
1572int ruserok (const char *rhost, int superuser, const char *ruser, const char *luser);
1573void * sbrk (ptrdiff_t __incr);
1574int setegid (gid_t __gid);
1575int seteuid (uid_t __uid);
1576int setgid (gid_t __gid);
1577int setgroups (int ngroups, const gid_t *grouplist);
1578int sethostname (const char *, size_t);
1579int setpgid (pid_t __pid, pid_t __pgid);
1580int setpgrp (void);
1581int setregid (gid_t __rgid, gid_t __egid);
1582int setreuid (uid_t __ruid, uid_t __euid);
1584int setuid (uid_t __uid);
1585void setusershell (void);
1586unsigned sleep (unsigned int __seconds);
1587void swab (const void *__restrict__, void *__restrict__, ssize_t);
1588long sysconf (int __name);
1589pid_t tcgetpgrp (int __fildes);
1590int tcsetpgrp (int __fildes, pid_t __pgrp_id);
1591char * ttyname (int __fildes);
1592int ttyname_r (int, char *, size_t);
1593int unlink (const char *__path);
1594int usleep (useconds_t __useconds);
1595int vhangup (void);
1596_ssize_t write (int __fd, const void *__buf, size_t __nbyte);
1597extern int __attribute__((dllimport)) opterr;
1598extern int __attribute__((dllimport)) optind;
1599extern int __attribute__((dllimport)) optopt;
1600extern int __attribute__((dllimport)) optreset;
1601extern char __attribute__((dllimport)) *optarg;
1602int getopt (int, char * const *, const char *);
1604int ftruncate (int __fd, off_t __length);
1605int truncate (const char *, off_t __length);
1606int getdtablesize (void);
1607useconds_t ualarm (useconds_t __useconds, useconds_t __interval);
1608 int gethostname (char *__name, size_t __len);
1610void sync (void);
1612 char *__restrict__ __buf, size_t __buflen);
1613int symlink (const char *__name1, const char *__name2);
1614ssize_t readlinkat (int __dirfd1, const char *__restrict__ __path,
1615 char *__restrict__ __buf, size_t __buflen);
1616int symlinkat (const char *, int, const char *);
1617int unlinkat (int, const char *, int);
1618
1619size_t __ssp_real_confstr (int __name, char *__buf, size_t __len) __asm__("" "confstr"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t confstr (int __name, char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_confstr (__name, __buf, __len); };
1620char * __ssp_real_getcwd (char *__buf, size_t __len) __asm__("" "getcwd"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * getcwd (char *__buf, size_t __len) { if (__buf != 0) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getcwd (__buf, __len); };
1621int __ssp_real_getdomainname (char *__buf, size_t __len) __asm__("" "getdomainname"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getdomainname (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getdomainname (__buf, __len); };
1622int __ssp_real_getgroups (int __n, gid_t __buf[]) __asm__("" "getgroups"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getgroups (int __n, gid_t __buf[])
1623{
1624 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(gid_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1626}
1627int __ssp_real_gethostname (char *__buf, size_t __len) __asm__("" "gethostname"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int gethostname (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_gethostname (__buf, __len); };
1628int __ssp_real_getlogin_r (char *__buf, size_t __len) __asm__("" "getlogin_r"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getlogin_r (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getlogin_r (__buf, __len); };
1629ssize_t __ssp_real_pread (int __fd, void *__buf, size_t __len, off_t __off) __asm__("" "pread"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) ssize_t pread (int __fd, void *__buf, size_t __len, off_t __off) { if (1) if (__builtin_object_size(__buf, 0) != (size_t)-1 && __len > __builtin_object_size(__buf, 0)) __chk_fail(); return __ssp_real_pread (__fd, __buf, __len, __off); };
1630_ssize_t __ssp_real_read (int __fd, void *__buf, size_t __len) __asm__("" "read"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) _ssize_t read (int __fd, void *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 0) != (size_t)-1 && __len > __builtin_object_size(__buf, 0)) __chk_fail(); return __ssp_real_read (__fd, __buf, __len); };
1631ssize_t __ssp_real_readlink (const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) __asm__("" "readlink"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) ssize_t readlink (const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_readlink (__path, __buf, __len); };
1632ssize_t __ssp_real_readlinkat (int __dirfd1, const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) __asm__("" "readlinkat"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) ssize_t readlinkat (int __dirfd1, const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_readlinkat (__dirfd1, __path, __buf, __len); };
1633int __ssp_real_ttyname_r (int __fd, char *__buf, size_t __len) __asm__("" "ttyname_r"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int ttyname_r (int __fd, char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_ttyname_r (__fd, __buf, __len); };
1634
1635
1636extern double atan (double);
1637extern double cos (double);
1638extern double sin (double);
1639extern double tan (double);
1640extern double tanh (double);
1641extern double frexp (double, int *);
1642extern double modf (double, double *);
1643extern double ceil (double);
1644extern double fabs (double);
1645extern double floor (double);
1646extern double acos (double);
1647extern double asin (double);
1648extern double atan2 (double, double);
1649extern double cosh (double);
1650extern double sinh (double);
1651extern double exp (double);
1652extern double ldexp (double, int);
1653extern double log (double);
1654extern double log10 (double);
1655extern double pow (double, double);
1656extern double sqrt (double);
1657extern double fmod (double, double);
1658extern int finite (double);
1659extern int finitef (float);
1660extern int finitel (long double);
1661extern int isinff (float);
1662extern int isnanf (float);
1663extern int isinfl (long double);
1664extern int isnanl (long double);
1665extern int isinf (double);
1666extern int isnan (double);
1667 typedef float float_t;
1668 typedef double double_t;
1669extern int __isinff (float);
1670extern int __isinfd (double);
1671extern int __isnanf (float);
1672extern int __isnand (double);
1673extern int __fpclassifyf (float);
1674extern int __fpclassifyd (double);
1675extern int __signbitf (float);
1676extern int __signbitd (double);
1677extern double infinity (void);
1678extern double nan (const char *);
1679extern double copysign (double, double);
1680extern double logb (double);
1681extern int ilogb (double);
1682extern double asinh (double);
1683extern double cbrt (double);
1684extern double nextafter (double, double);
1685extern double rint (double);
1686extern double scalbn (double, int);
1687extern double exp2 (double);
1688extern double scalbln (double, long int);
1689extern double tgamma (double);
1690extern double nearbyint (double);
1691extern long int lrint (double);
1692extern long long int llrint (double);
1693extern double round (double);
1694extern long int lround (double);
1695extern long long int llround (double);
1696extern double trunc (double);
1697extern double remquo (double, double, int *);
1698extern double fdim (double, double);
1699extern double fmax (double, double);
1700extern double fmin (double, double);
1701extern double fma (double, double, double);
1702extern double log1p (double);
1703extern double expm1 (double);
1704extern double acosh (double);
1705extern double atanh (double);
1706extern double remainder (double, double);
1707extern double gamma (double);
1708extern double lgamma (double);
1709extern double erf (double);
1710extern double erfc (double);
1711extern double log2 (double);
1712extern double hypot (double, double);
1713extern float atanf (float);
1714extern float cosf (float);
1715extern float sinf (float);
1716extern float tanf (float);
1717extern float tanhf (float);
1718extern float frexpf (float, int *);
1719extern float modff (float, float *);
1720extern float ceilf (float);
1721extern float fabsf (float);
1722extern float floorf (float);
1723extern float acosf (float);
1724extern float asinf (float);
1725extern float atan2f (float, float);
1726extern float coshf (float);
1727extern float sinhf (float);
1728extern float expf (float);
1729extern float ldexpf (float, int);
1730extern float logf (float);
1731extern float log10f (float);
1732extern float powf (float, float);
1733extern float sqrtf (float);
1734extern float fmodf (float, float);
1735extern float exp2f (float);
1736extern float scalblnf (float, long int);
1737extern float tgammaf (float);
1738extern float nearbyintf (float);
1739extern long int lrintf (float);
1740extern long long int llrintf (float);
1741extern float roundf (float);
1742extern long int lroundf (float);
1743extern long long int llroundf (float);
1744extern float truncf (float);
1745extern float remquof (float, float, int *);
1746extern float fdimf (float, float);
1747extern float fmaxf (float, float);
1748extern float fminf (float, float);
1749extern float fmaf (float, float, float);
1750extern float infinityf (void);
1751extern float nanf (const char *);
1752extern float copysignf (float, float);
1753extern float logbf (float);
1754extern int ilogbf (float);
1755extern float asinhf (float);
1756extern float cbrtf (float);
1757extern float nextafterf (float, float);
1758extern float rintf (float);
1759extern float scalbnf (float, int);
1760extern float log1pf (float);
1761extern float expm1f (float);
1762extern float acoshf (float);
1763extern float atanhf (float);
1764extern float remainderf (float, float);
1765extern float gammaf (float);
1766extern float lgammaf (float);
1767extern float erff (float);
1768extern float erfcf (float);
1769extern float log2f (float);
1770extern float hypotf (float, float);
1771extern long double atanl (long double);
1772extern long double cosl (long double);
1773extern long double sinl (long double);
1774extern long double tanl (long double);
1775extern long double tanhl (long double);
1776extern long double frexpl (long double, int *);
1777extern long double modfl (long double, long double *);
1778extern long double ceill (long double);
1779extern long double fabsl (long double);
1780extern long double floorl (long double);
1781extern long double log1pl (long double);
1782extern long double expm1l (long double);
1783extern long double acosl (long double);
1784extern long double asinl (long double);
1785extern long double atan2l (long double, long double);
1786extern long double coshl (long double);
1787extern long double sinhl (long double);
1788extern long double expl (long double);
1789extern long double ldexpl (long double, int);
1790extern long double logl (long double);
1791extern long double log10l (long double);
1792extern long double powl (long double, long double);
1793extern long double sqrtl (long double);
1794extern long double fmodl (long double, long double);
1795extern long double hypotl (long double, long double);
1796extern long double copysignl (long double, long double);
1797extern long double nanl (const char *);
1798extern int ilogbl (long double);
1799extern long double asinhl (long double);
1800extern long double cbrtl (long double);
1801extern long double nextafterl (long double, long double);
1802extern float nexttowardf (float, long double);
1803extern double nexttoward (double, long double);
1804extern long double nexttowardl (long double, long double);
1805extern long double logbl (long double);
1806extern long double log2l (long double);
1807extern long double rintl (long double);
1808extern long double scalbnl (long double, int);
1809extern long double exp2l (long double);
1810extern long double scalblnl (long double, long);
1811extern long double tgammal (long double);
1812extern long double nearbyintl (long double);
1813extern long int lrintl (long double);
1814extern long long int llrintl (long double);
1815extern long double roundl (long double);
1816extern long lroundl (long double);
1817extern long long int llroundl (long double);
1818extern long double truncl (long double);
1819extern long double remquol (long double, long double, int *);
1820extern long double fdiml (long double, long double);
1821extern long double fmaxl (long double, long double);
1822extern long double fminl (long double, long double);
1823extern long double fmal (long double, long double, long double);
1824extern long double acoshl (long double);
1825extern long double atanhl (long double);
1826extern long double remainderl (long double, long double);
1827extern long double lgammal (long double);
1828extern long double erfl (long double);
1829extern long double erfcl (long double);
1830extern double drem (double, double);
1831extern float dremf (float, float);
1832extern float dreml (long double, long double);
1833extern double gamma_r (double, int *);
1834extern double lgamma_r (double, int *);
1835extern float gammaf_r (float, int *);
1836extern float lgammaf_r (float, int *);
1837extern double y0 (double);
1838extern double y1 (double);
1839extern double yn (int, double);
1840extern double j0 (double);
1841extern double j1 (double);
1842extern double jn (int, double);
1843extern float y0f (float);
1844extern float y1f (float);
1845extern float ynf (int, float);
1846extern float j0f (float);
1847extern float j1f (float);
1848extern float jnf (int, float);
1849extern void sincos (double, double *, double *);
1850extern void sincosf (float, float *, float *);
1851extern void sincosl (long double, long double *, long double *);
1852extern double exp10 (double);
1853extern double pow10 (double);
1854extern float exp10f (float);
1855extern float pow10f (float);
1856extern float exp10l (float);
1857extern float pow10l (float);
1858extern int *__signgam (void);
1859
1860
1861
1862extern void setproctitle(const char *fmt, ...);
1863
1864
1865
1866
1867void *ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1)));
1868void *ruby_xmalloc2(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
1869void *ruby_xcalloc(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
1870void *ruby_xrealloc(void*,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2)));
1871void *ruby_xrealloc2(void*,size_t,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2,3)));
1872void ruby_xfree(void*);
1873
1874
1875__attribute__ ((__noreturn__)) void rb_assert_failure(const char *, int, const char *, const char *);
1876
1877
1878typedef unsigned long VALUE;
1879typedef unsigned long ID;
1880typedef char ruby_check_sizeof_int[4 == sizeof(int) ? 1 : -1];
1881typedef char ruby_check_sizeof_long[8 == sizeof(long) ? 1 : -1];
1882typedef char ruby_check_sizeof_long_long[8 == sizeof(long long) ? 1 : -1];
1883typedef char ruby_check_sizeof_voidp[8 == sizeof(void*) ? 1 : -1];
1887VALUE rb_ull2inum(unsigned long long);
1888__attribute__ ((__noreturn__)) void rb_out_of_int(long num);
1889static inline int
1890rb_long2int_inline(long n)
1891{
1892 int i = (int)n;
1893 if ((long)i != n)
1894 rb_out_of_int(n);
1895 return i;
1896}
1897static inline long
1898rb_fix2long(VALUE x)
1899{
1900 return ((long)(((long)(x))>>(int)(1)));
1901}
1902static inline unsigned long
1903rb_fix2ulong(VALUE x)
1904{
1905 return ((unsigned long)((long)(((long)(x))>>(int)(1))));
1906}
1949 RUBY_T_MASK = 0x1f
1951static inline int rb_type(VALUE obj);
1952void rb_check_type(VALUE,int);
1954VALUE rb_string_value(volatile VALUE*);
1955char *rb_string_value_ptr(volatile VALUE*);
1956char *rb_string_value_cstr(volatile VALUE*);
1958void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")));
1963void rb_secure(int);
1964int rb_safe_level(void);
1965void rb_set_safe_level(int);
1966int ruby_safe_level_2_error(void) __attribute__((error("$SAFE=2 to 4 are obsolete")));
1967int ruby_safe_level_2_warning(void) __attribute__((const,warning("$SAFE=2 to 4 are obsolete")));
1968void rb_set_safe_level_force(int);
1970__attribute__ ((__noreturn__)) void rb_insecure_operation(void);
1971VALUE rb_errinfo(void);
1972void rb_set_errinfo(VALUE);
1973long rb_num2long(VALUE);
1974unsigned long rb_num2ulong(VALUE);
1975static inline long
1976rb_num2long_inline(VALUE x)
1977{
1978 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
1979 return ((long)(((long)(x))>>(int)(1)));
1980 else
1981 return rb_num2long(x);
1982}
1983static inline unsigned long
1984rb_num2ulong_inline(VALUE x)
1985{
1986 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
1987 return ((unsigned long)((long)(((long)(x))>>(int)(1))));
1988 else
1989 return rb_num2ulong(x);
1990}
1991long rb_num2int(VALUE);
1992long rb_fix2int(VALUE);
1993static inline int
1994rb_num2int_inline(VALUE x)
1995{
1996 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
1997 return (int)rb_fix2int(x);
1998 else
1999 return (int)rb_num2int(x);
2000}
2001unsigned long rb_num2uint(VALUE);
2002unsigned long rb_fix2uint(VALUE);
2003short rb_num2short(VALUE);
2004unsigned short rb_num2ushort(VALUE);
2005short rb_fix2short(VALUE);
2006unsigned short rb_fix2ushort(VALUE);
2007static inline short
2008rb_num2short_inline(VALUE x)
2009{
2010 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
2011 return rb_fix2short(x);
2012 else
2013 return rb_num2short(x);
2014}
2015long long rb_num2ll(VALUE);
2016unsigned long long rb_num2ull(VALUE);
2017static inline long long
2018rb_num2ll_inline(VALUE x)
2019{
2020 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
2021 return ((long)(((long)(x))>>(int)(1)));
2022 else
2023 return rb_num2ll(x);
2024}
2025double rb_num2dbl(VALUE);
2028VALUE rb_newobj(void);
2031__extension__
2032enum ruby_fl_type {
2033 RUBY_FL_WB_PROTECTED = (1<<5),
2034 RUBY_FL_PROMOTED0 = (1<<5),
2035 RUBY_FL_PROMOTED1 = (1<<6),
2037 RUBY_FL_FINALIZE = (1<<7),
2038 RUBY_FL_TAINT = (1<<8),
2040 RUBY_FL_SEEN_OBJ_ID = (1<<9),
2041 RUBY_FL_EXIVAR = (1<<10),
2042 RUBY_FL_FREEZE = (1<<11),
2043 RUBY_FL_USHIFT = 12,
2044 RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
2045 RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
2046 RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
2047 RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
2048 RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
2049 RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
2050 RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
2051 RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
2052 RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
2053 RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
2054 RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
2055 RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
2056 RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
2057 RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
2058 RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
2059 RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
2060 RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
2061 RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
2062 RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
2063 RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
2064 RUBY_ELTS_SHARED = RUBY_FL_USER2,
2066 RUBY_FL_SINGLETON = RUBY_FL_USER0
2067};
2068struct __attribute__((aligned(8))) RBasic {
2069 VALUE flags;
2070 const VALUE klass;
2071};
2074enum ruby_rvalue_flags {
2076};
2077enum ruby_robject_flags {
2079 ROBJECT_EMBED = RUBY_FL_USER1,
2081};
2082struct RObject {
2083 struct RBasic basic;
2084 union {
2085 struct {
2087 VALUE *ivptr;
2088 void *iv_index_tbl;
2089 } heap;
2091 } as;
2092};
2093enum ruby_rmodule_flags {
2094 RMODULE_IS_OVERLAID = RUBY_FL_USER2,
2095 RMODULE_IS_REFINEMENT = RUBY_FL_USER3,
2096 RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4,
2098};
2099__attribute__ ((__pure__)) double rb_float_value(VALUE);
2100VALUE rb_float_new(double);
2102enum ruby_rstring_flags {
2103 RSTRING_NOEMBED = RUBY_FL_USER1,
2104 RSTRING_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|
2105 RUBY_FL_USER5|RUBY_FL_USER6),
2107 RSTRING_EMBED_LEN_MAX = (int)((sizeof(VALUE)*RVALUE_EMBED_LEN_MAX)/sizeof(char)-1),
2108 RSTRING_FSTR = RUBY_FL_USER17,
2110};
2111struct RString {
2112 struct RBasic basic;
2113 union {
2114 struct {
2115 long len;
2116 char *ptr;
2117 union {
2118 long capa;
2119 VALUE shared;
2120 } aux;
2121 } heap;
2122 char ary[RSTRING_EMBED_LEN_MAX + 1];
2123 } as;
2124};
2125enum ruby_rarray_flags {
2127 RARRAY_EMBED_FLAG = RUBY_FL_USER1,
2128 RARRAY_EMBED_LEN_MASK = (RUBY_FL_USER4|RUBY_FL_USER3),
2130 RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13,
2132};
2133struct RArray {
2134 struct RBasic basic;
2135 union {
2136 struct {
2137 long len;
2138 union {
2139 long capa;
2140 const
2142 } aux;
2143 const VALUE *ptr;
2144 } heap;
2146 } as;
2147};
2148struct RRegexp {
2149 struct RBasic basic;
2150 struct re_pattern_buffer *ptr;
2151 const VALUE src;
2152 unsigned long usecnt;
2153};
2154size_t rb_hash_size_num(VALUE hash);
2155struct RFile {
2156 struct RBasic basic;
2157 struct rb_io_t *fptr;
2158};
2159struct RData {
2160 struct RBasic basic;
2161 void (*dmark)(void*);
2162 void (*dfree)(void*);
2163 void *data;
2164};
2165typedef struct rb_data_type_struct rb_data_type_t;
2166struct rb_data_type_struct {
2167 const char *wrap_struct_name;
2168 struct {
2169 void (*dmark)(void*);
2170 void (*dfree)(void*);
2171 size_t (*dsize)(const void *);
2172 void (*dcompact)(void*);
2173 void *reserved[1];
2174 } function;
2175 const rb_data_type_t *parent;
2176 void *data;
2177 VALUE flags;
2178};
2179struct RTypedData {
2180 struct RBasic basic;
2181 const rb_data_type_t *type;
2183 void *data;
2184};
2185typedef void (*RUBY_DATA_FUNC)(void*);
2190int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
2193int rb_big_sign(VALUE);
2195static inline void
2196rb_obj_freeze_inline(VALUE x)
2197{
2198 if ((!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) != RUBY_T_NODE)) {
2199 (void)(((struct RBasic*)(x))->flags |= RUBY_FL_FREEZE);
2200 if ((((struct RBasic*)(x))->klass) && !(((struct RBasic*)(x))->flags & RUBY_FL_SINGLETON)) {
2202 }
2203 }
2204}
2205static inline VALUE rb_data_object_wrap_warning(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC) __attribute__((warning("untyped Data is unsafe; use TypedData instead")));
2206static inline void *rb_data_object_get_warning(VALUE) __attribute__((warning("untyped Data is unsafe; use TypedData instead")));
2207static inline VALUE
2209{
2210 return rb_data_object_wrap(klass, ptr, mark, free);
2211}
2212static inline void *
2214{
2216 return ((struct RData *)obj)->data;
2217}
2218static inline void *
2219rb_data_object_get_warning(VALUE obj)
2220{
2221 return rb_data_object_get(obj);
2222}
2223static inline VALUE
2224rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
2225{
2226 VALUE result = rb_data_object_zalloc((klass), (size), (RUBY_DATA_FUNC)(mark_func), (RUBY_DATA_FUNC)(free_func)); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
2227 return result;
2228}
2229static inline VALUE
2230rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
2231{
2232 VALUE result = rb_data_typed_object_zalloc(klass, size, type); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
2233 return result;
2234}
2235__attribute__ ((__deprecated__("by ""rb_data_object_wrap"))) static inline VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
2236static inline VALUE
2238{
2239 return rb_data_object_wrap(klass, data, dmark, dfree);
2240}
2241__attribute__ ((__deprecated__("by ""rb_data_typed_object_wrap"))) static inline VALUE rb_data_typed_object_alloc(VALUE,void*,const rb_data_type_t*);
2242static inline VALUE
2244{
2245 return rb_data_typed_object_wrap(klass, datap, type);
2246}
2247void rb_gc_writebarrier(VALUE a, VALUE b);
2249static inline VALUE
2250rb_obj_wb_unprotect(VALUE x, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
2251{
2253 return x;
2254}
2255static inline VALUE
2256rb_obj_written(VALUE a, VALUE oldv __attribute__ ((unused)), VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
2257{
2258 if (!(((VALUE)(b) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(b) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
2259 rb_gc_writebarrier(a, b);
2260 }
2261 return a;
2262}
2263static inline VALUE
2264rb_obj_write(VALUE a, VALUE *slot, VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
2265{
2266 *slot = b;
2267 rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
2268 return a;
2269}
2270static inline int
2271rb_integer_type_p(VALUE obj)
2272{
2273 return ((((int)(long)(obj))&RUBY_FIXNUM_FLAG) ||
2274 (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) &&
2275 (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_BIGNUM));
2276}
2277static inline VALUE
2278rb_long2num_inline(long v)
2279{
2280 if ((((v) < (0x7fffffffffffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))))
2281 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
2282 else
2283 return rb_int2big(v);
2284}
2285static inline VALUE
2286rb_ulong2num_inline(unsigned long v)
2287{
2288 if (((v) < (0x7fffffffffffffffL>>1)+1))
2289 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
2290 else
2291 return rb_uint2big(v);
2292}
2293static inline char
2294rb_num2char_inline(VALUE x)
2295{
2296 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(x))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((x) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((x) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((x) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((x) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(x))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && ((!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(x))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(x))->as.heap.len)>=1))
2297 return (!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? ((struct RString*)(x))->as.ary : ((struct RString*)(x))->as.heap.ptr)[0];
2298 else
2299 return (char)(rb_num2int_inline(x) & 0xff);
2300}
2301void *rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__ ((alloc_size (2)));
2302void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count) __attribute__ ((alloc_size (2,3)));
2303void rb_free_tmp_buffer(volatile VALUE *store);
2304__attribute__ ((__noreturn__)) void ruby_malloc_size_overflow(size_t, size_t);
2305static inline int
2306rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
2307{
2308 __extension__
2309 unsigned __int128 c2 = (unsigned __int128)a * (unsigned __int128)b;
2310 if (c2 > max) return 1;
2311 *c = (size_t)c2;
2312 return 0;
2313}
2314static inline void *
2315rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
2316{
2317 size_t cnt = (size_t)count;
2318 if (elsize == sizeof(VALUE)) {
2319 if ((__builtin_expect(!!(cnt > 0x7fffffffffffffffL / sizeof(VALUE)), 0))) {
2321 }
2322 }
2323 else {
2324 size_t size, max = 0x7fffffffffffffffL - sizeof(VALUE) + 1;
2325 if ((__builtin_expect(!!(rb_mul_size_overflow(cnt, elsize, max, &size)), 0))) {
2327 }
2328 cnt = (size + sizeof(VALUE) - 1) / sizeof(VALUE);
2329 }
2330 return rb_alloc_tmp_buffer_with_count(store, cnt * sizeof(VALUE), cnt);
2331}
2332void rb_obj_infect(VALUE victim, VALUE carrier);
2333typedef int ruby_glob_func(const char*,VALUE, void*);
2334void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
2335int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
2336int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
2337VALUE rb_define_class(const char*,VALUE);
2338VALUE rb_define_module(const char*);
2339VALUE rb_define_class_under(VALUE, const char*, VALUE);
2340VALUE rb_define_module_under(VALUE, const char*);
2344typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
2345typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
2346typedef void rb_gvar_marker_t(VALUE *var);
2357void rb_define_variable(const char*,VALUE*);
2360void rb_define_readonly_variable(const char*,const VALUE*);
2361void rb_define_const(VALUE,const char*,VALUE);
2362void rb_define_global_const(const char*,VALUE);
2363void rb_define_method(VALUE,const char*,VALUE(*)(),int);
2364void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
2365void rb_define_global_function(const char*,VALUE(*)(),int);
2366void rb_undef_method(VALUE,const char*);
2367void rb_define_alias(VALUE,const char*,const char*);
2368void rb_define_attr(VALUE,const char*,int,int);
2373ID rb_intern(const char*);
2374ID rb_intern2(const char*, long);
2376const char *rb_id2name(ID);
2377ID rb_check_id(volatile VALUE *);
2382VALUE rb_check_symbol(volatile VALUE *namep);
2383__attribute__ ((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
2386void rb_p(VALUE);
2389VALUE rb_eval_string_wrap(const char*, int*);
2390VALUE rb_funcall(VALUE, ID, int, ...);
2392VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE*, int);
2399int rb_scan_args(int, const VALUE*, const char*, ...);
2400int rb_scan_args_kw(int, int, const VALUE*, const char*, ...);
2402VALUE rb_call_super_kw(int, const VALUE*, int);
2404int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *);
2406VALUE rb_gv_set(const char*, VALUE);
2407VALUE rb_gv_get(const char*);
2408VALUE rb_iv_get(VALUE, const char*);
2414__attribute__ ((__noreturn__)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
2415__attribute__ ((__noreturn__)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
2416__attribute__((cold)) __attribute__ ((__noreturn__)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
2417__attribute__ ((__noreturn__)) void rb_bug_errno(const char*, int);
2418__attribute__ ((__noreturn__)) void rb_sys_fail(const char*);
2419__attribute__ ((__noreturn__)) void rb_sys_fail_str(VALUE);
2420__attribute__ ((__noreturn__)) void rb_mod_sys_fail(VALUE, const char*);
2421__attribute__ ((__noreturn__)) void rb_mod_sys_fail_str(VALUE, VALUE);
2422__attribute__ ((__noreturn__)) void rb_readwrite_sys_fail(enum rb_io_wait_readwrite, const char*);
2423__attribute__ ((__noreturn__)) void rb_iter_break(void);
2424__attribute__ ((__noreturn__)) void rb_iter_break_value(VALUE);
2425__attribute__ ((__noreturn__)) void rb_exit(int);
2426__attribute__ ((__noreturn__)) void rb_notimplement(void);
2427VALUE rb_syserr_new(int, const char *);
2429__attribute__ ((__noreturn__)) void rb_syserr_fail(int, const char*);
2430__attribute__ ((__noreturn__)) void rb_syserr_fail_str(int, VALUE);
2431__attribute__ ((__noreturn__)) void rb_mod_syserr_fail(VALUE, int, const char*);
2432__attribute__ ((__noreturn__)) void rb_mod_syserr_fail_str(VALUE, int, VALUE);
2433__attribute__ ((__noreturn__)) void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite, int, const char*);
2434void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
2435void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
2436void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
2437__attribute__((cold)) void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
2438void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
2439typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
2443VALUE rb_yield_values(int n, ...);
2445VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat);
2448VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
2449int rb_keyword_given_p(void);
2450int rb_block_given_p(void);
2451void rb_need_block(void);
2461__attribute__ ((__noreturn__)) void rb_throw(const char*,VALUE);
2462__attribute__ ((__noreturn__)) void rb_throw_obj(VALUE,VALUE);
2463VALUE rb_require(const char*);
2464extern VALUE rb_mKernel;
2465extern VALUE rb_mComparable;
2466extern VALUE rb_mEnumerable;
2467extern VALUE rb_mErrno;
2468extern VALUE rb_mFileTest;
2469extern VALUE rb_mGC;
2470extern VALUE rb_mMath;
2471extern VALUE rb_mProcess;
2472extern VALUE rb_mWaitReadable;
2473extern VALUE rb_mWaitWritable;
2474extern VALUE rb_cBasicObject;
2475extern VALUE rb_cObject;
2476extern VALUE rb_cArray;
2477extern VALUE rb_cBinding;
2478extern VALUE rb_cClass;
2479extern VALUE rb_cCont;
2480extern VALUE rb_cData;
2481extern VALUE rb_cDir;
2482extern VALUE rb_cEncoding;
2483extern VALUE rb_cEnumerator;
2484extern VALUE rb_cFalseClass;
2485extern VALUE rb_cFile;
2486extern VALUE rb_cComplex;
2487extern VALUE rb_cFloat;
2488extern VALUE rb_cHash;
2489extern VALUE rb_cIO;
2490extern VALUE rb_cInteger;
2491extern VALUE rb_cMatch;
2492extern VALUE rb_cMethod;
2493extern VALUE rb_cModule;
2495extern VALUE rb_cNilClass;
2496extern VALUE rb_cNumeric;
2497extern VALUE rb_cProc;
2498extern VALUE rb_cRandom;
2499extern VALUE rb_cRange;
2500extern VALUE rb_cRational;
2501extern VALUE rb_cRegexp;
2502extern VALUE rb_cStat;
2503extern VALUE rb_cString;
2504extern VALUE rb_cStruct;
2505extern VALUE rb_cSymbol;
2506extern VALUE rb_cThread;
2507extern VALUE rb_cTime;
2508extern VALUE rb_cTrueClass;
2510extern VALUE rb_eException;
2512extern VALUE rb_eSystemExit;
2513extern VALUE rb_eInterrupt;
2514extern VALUE rb_eSignal;
2515extern VALUE rb_eFatal;
2516extern VALUE rb_eArgError;
2517extern VALUE rb_eEOFError;
2518extern VALUE rb_eIndexError;
2520extern VALUE rb_eKeyError;
2521extern VALUE rb_eRangeError;
2522extern VALUE rb_eIOError;
2523extern VALUE rb_eRuntimeError;
2524extern VALUE rb_eFrozenError;
2527extern VALUE rb_eThreadError;
2528extern VALUE rb_eTypeError;
2529extern VALUE rb_eZeroDivError;
2530extern VALUE rb_eNotImpError;
2531extern VALUE rb_eNoMemError;
2536extern VALUE rb_eRegexpError;
2540extern VALUE rb_eScriptError;
2541extern VALUE rb_eNameError;
2542extern VALUE rb_eSyntaxError;
2543extern VALUE rb_eLoadError;
2546static inline VALUE
2547rb_class_of(VALUE obj)
2548{
2549 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
2550 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cInteger;
2551 if (((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) return rb_cFloat;
2552 if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
2553 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return rb_cSymbol;
2554 }
2555 else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
2556 if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
2557 if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
2558 }
2559 return ((struct RBasic*)(obj))->klass;
2560}
2561static inline int
2562rb_type(VALUE obj)
2563{
2564 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
2565 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
2566 if (((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) return RUBY_T_FLOAT;
2567 if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
2568 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
2569 if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
2570 }
2571 else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
2572 if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
2573 if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
2574 }
2575 return (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK);
2576}
2577
2578
2579typedef unsigned long st_data_t;
2580typedef struct st_table st_table;
2584typedef char st_check_for_sizeof_st_index_t[8 == (int)sizeof(st_index_t) ? 1 : -1];
2588};
2590struct st_table_entry;
2591struct st_table {
2593 unsigned int rebuilds_num;
2594 const struct st_hash_type *type;
2599};
2616typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
2632__attribute__ ((__const__)) int rb_st_numcmp(st_data_t, st_data_t);
2633__attribute__ ((__const__)) st_index_t rb_st_numhash(st_data_t);
2634__attribute__ ((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
2635__attribute__ ((__pure__)) int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
2636__attribute__ ((__pure__)) size_t rb_st_memsize(const st_table *);
2637__attribute__ ((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h);
2638__attribute__ ((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
2639__attribute__ ((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
2640__attribute__ ((__const__)) st_index_t rb_st_hash_end(st_index_t h);
2642void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);
2643
2644
2645
2646
2647void rb_mem_clear(VALUE*, long);
2650VALUE rb_ary_new(void);
2651VALUE rb_ary_new_capa(long capa);
2652VALUE rb_ary_new_from_args(long n, ...);
2653VALUE rb_ary_new_from_values(long n, const VALUE *elts);
2654VALUE rb_ary_tmp_new(long);
2655void rb_ary_free(VALUE);
2656void rb_ary_modify(VALUE);
2659VALUE rb_ary_aref(int, const VALUE*, VALUE);
2660VALUE rb_ary_subseq(VALUE, long, long);
2661void rb_ary_store(VALUE, long, VALUE);
2666VALUE rb_ary_cat(VALUE, const VALUE *, long);
2671VALUE rb_ary_entry(VALUE, long);
2687VALUE rb_ary_replace(VALUE copy, VALUE orig);
2688VALUE rb_get_values_at(VALUE, long, int, const VALUE*, VALUE(*)(VALUE,long));
2689VALUE rb_ary_resize(VALUE ary, long len);
2690VALUE rb_big_new(size_t, int);
2691int rb_bigzero_p(VALUE x);
2693void rb_big_2comp(VALUE);
2695void rb_big_resize(VALUE big, size_t len);
2696VALUE rb_cstr_to_inum(const char*, int, int);
2697VALUE rb_str_to_inum(VALUE, int, int);
2698VALUE rb_cstr2inum(const char*, int);
2699VALUE rb_str2inum(VALUE, int);
2700VALUE rb_big2str(VALUE, int);
2701long rb_big2long(VALUE);
2702unsigned long rb_big2ulong(VALUE);
2703long long rb_big2ll(VALUE);
2704unsigned long long rb_big2ull(VALUE);
2705void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
2706VALUE rb_big_unpack(unsigned long *buf, long num_longs);
2707int rb_uv_to_utf8(char[6],unsigned long);
2708VALUE rb_dbl2big(double);
2709double rb_big2dbl(VALUE);
2726int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
2727VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
2728size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
2729size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
2741__attribute__ ((__deprecated__("by ""rb_complex_new_polar"))) VALUE rb_complex_polar(VALUE abs, VALUE arg);
2753VALUE rb_dbl_complex_new(double real, double imag);
2762VALUE rb_module_new(void);
2774void rb_undef(VALUE, ID);
2779int rb_cmpint(VALUE, VALUE, VALUE);
2780__attribute__ ((__noreturn__)) void rb_cmperr(VALUE, VALUE);
2783VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat);
2785VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
2793typedef struct {
2800VALUE rb_exc_new(VALUE, const char*, long);
2801VALUE rb_exc_new_cstr(VALUE, const char*);
2803__attribute__ ((__noreturn__)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
2804__attribute__ ((__noreturn__)) void rb_loaderror_with_path(VALUE path, const char*, ...) __attribute__((format(printf, 2, 3)));
2805__attribute__ ((__noreturn__)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
2806__attribute__ ((__noreturn__)) void rb_name_error_str(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
2807__attribute__ ((__noreturn__)) void rb_frozen_error_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
2808__attribute__ ((__noreturn__)) void rb_invalid_str(const char*, const char*);
2809__attribute__ ((__noreturn__)) void rb_error_frozen(const char*);
2810__attribute__ ((__noreturn__)) void rb_error_frozen_object(VALUE);
2814void rb_check_copyable(VALUE obj, VALUE orig);
2815int rb_sourceline(void);
2816const char *rb_sourcefile(void);
2819__attribute__ ((__noreturn__)) static void rb_error_arity(int, int, int);
2820static inline int
2821rb_check_arity(int argc, int min, int max)
2822{
2823 if ((argc < min) || (max != (-1) && argc > max))
2824 rb_error_arity(argc, min, max);
2825 return argc;
2826}
2827typedef struct {
2830} rb_fdset_t;
2836int rb_fd_isset(int, const rb_fdset_t *);
2837void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
2839struct timeval;
2841__attribute__ ((__noreturn__)) void rb_exc_raise(VALUE);
2842__attribute__ ((__noreturn__)) void rb_exc_fatal(VALUE);
2843__attribute__ ((__noreturn__)) VALUE rb_f_exit(int, const VALUE*);
2844__attribute__ ((__noreturn__)) VALUE rb_f_abort(int, const VALUE*);
2845void rb_remove_method(VALUE, const char*);
2851void rb_clear_constant_cache(void);
2853void rb_alias(VALUE, ID, ID);
2854void rb_attr(VALUE,ID,int,int,int);
2855int rb_method_boundp(VALUE, ID, int);
2859int rb_obj_respond_to(VALUE, ID, int);
2860int rb_respond_to(VALUE, ID);
2862__attribute__ ((__noreturn__)) void rb_interrupt(void);
2864void rb_backtrace(void);
2868VALUE rb_mod_module_eval(int, const VALUE*, VALUE);
2869VALUE rb_mod_module_exec(int, const VALUE*, VALUE);
2870void rb_load(VALUE, int);
2871void rb_load_protect(VALUE, int, int*);
2872__attribute__ ((__noreturn__)) void rb_jump_tag(int);
2873int rb_provided(const char*);
2874int rb_feature_provided(const char *, const char **);
2875void rb_provide(const char*);
2879void rb_obj_call_init(VALUE, int, const VALUE*);
2880void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
2882VALUE rb_class_new_instance_kw(int, const VALUE*, VALUE, int);
2883VALUE rb_block_proc(void);
2891int rb_proc_arity(VALUE);
2893VALUE rb_binding_new(void);
2896VALUE rb_method_call(int, const VALUE*, VALUE);
2897VALUE rb_method_call_kw(int, const VALUE*, VALUE, int);
2902VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
2903void rb_set_end_proc(void (*)(VALUE), VALUE);
2904void rb_thread_schedule(void);
2905void rb_thread_wait_fd(int);
2906int rb_thread_fd_writable(int);
2907void rb_thread_fd_close(int);
2908int rb_thread_alone(void);
2909void rb_thread_sleep(int);
2910void rb_thread_sleep_forever(void);
2911void rb_thread_sleep_deadly(void);
2912VALUE rb_thread_stop(void);
2917VALUE rb_thread_create(VALUE (*)(void *), void*);
2918int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
2919void rb_thread_wait_for(struct timeval);
2921VALUE rb_thread_main(void);
2924void rb_thread_atfork(void);
2930VALUE rb_dir_getwd(void);
2931VALUE rb_file_s_expand_path(int, const VALUE *);
2933VALUE rb_file_s_absolute_path(int, const VALUE *);
2936int rb_find_file_ext_safe(VALUE*, const char* const*, int);
2938int rb_find_file_ext(VALUE*, const char* const*);
2942int rb_is_absolute_path(const char *);
2943__attribute__((cold)) __attribute__ ((__noreturn__)) void rb_memerror(void);
2944__attribute__ ((__pure__)) int rb_during_gc(void);
2945void rb_gc_mark_locations(const VALUE*, const VALUE*);
2946void rb_mark_tbl(struct st_table*);
2947void rb_mark_tbl_no_pin(struct st_table*);
2948void rb_mark_set(struct st_table*);
2949void rb_mark_hash(struct st_table*);
2952void rb_gc_mark(VALUE);
2956void rb_gc(void);
2958VALUE rb_gc_enable(void);
2959VALUE rb_gc_disable(void);
2960VALUE rb_gc_start(void);
2963size_t rb_gc_count(void);
2964size_t rb_gc_stat(VALUE);
2971VALUE rb_hash_new(void);
2982VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
2983void rb_hash_bulk_insert(long, const VALUE *, VALUE);
2984typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
2986struct st_table *rb_hash_tbl(VALUE, const char *file, int line);
2987int rb_path_check(const char*);
2988int rb_env_path_tainted(void);
2989VALUE rb_env_clear(void);
2992extern VALUE rb_fs;
2993extern VALUE rb_output_fs;
2994extern VALUE rb_rs;
2995extern VALUE rb_default_rs;
2996extern VALUE rb_output_rs;
3008VALUE rb_io_printf(int, const VALUE*, VALUE);
3009VALUE rb_io_print(int, const VALUE*, VALUE);
3010VALUE rb_io_puts(int, const VALUE*, VALUE);
3011VALUE rb_io_fdopen(int, int, const char*);
3013VALUE rb_file_open(const char*, const char*);
3014VALUE rb_file_open_str(VALUE, const char*);
3015VALUE rb_gets(void);
3016void rb_write_error(const char*);
3017void rb_write_error2(const char*, long);
3018void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
3019int rb_pipe(int *pipes);
3021int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
3022int rb_cloexec_dup(int oldfd);
3023int rb_cloexec_dup2(int oldfd, int newfd);
3024int rb_cloexec_pipe(int fildes[2]);
3025int rb_cloexec_fcntl_dupfd(int fd, int minfd);
3026void rb_update_max_fd(int fd);
3027void rb_fd_fix_cloexec(int fd);
3030void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
3031__attribute__ ((__noreturn__)) void rb_num_zerodiv(void);
3037VALUE rb_fix2str(VALUE, int);
3038__attribute__ ((__const__)) VALUE rb_dbl_cmp(double, double);
3039int rb_eql(VALUE, VALUE);
3063VALUE rb_convert_type(VALUE,int,const char*,const char*);
3064VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
3065VALUE rb_check_to_integer(VALUE, const char *);
3075double rb_cstr_to_dbl(const char*, int);
3076double rb_str_to_dbl(VALUE, int);
3078__attribute__ ((__const__)) int rb_is_const_id(ID);
3079__attribute__ ((__const__)) int rb_is_global_id(ID);
3080__attribute__ ((__const__)) int rb_is_instance_id(ID);
3081__attribute__ ((__const__)) int rb_is_attrset_id(ID);
3082__attribute__ ((__const__)) int rb_is_class_id(ID);
3083__attribute__ ((__const__)) int rb_is_local_id(ID);
3084__attribute__ ((__const__)) int rb_is_junk_id(ID);
3085int rb_symname_p(const char*);
3087VALUE rb_backref_get(void);
3088void rb_backref_set(VALUE);
3091void rb_last_status_set(int status, pid_t pid);
3093int rb_proc_exec(const char*);
3094__attribute__ ((__noreturn__)) VALUE rb_f_exec(int, const VALUE*);
3095pid_t rb_waitpid(pid_t pid, int *status, int flags);
3097pid_t rb_spawn(int, const VALUE*);
3098pid_t rb_spawn_err(int, const VALUE*, char*, size_t);
3102VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
3103int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
3104unsigned int rb_genrand_int32(void);
3105double rb_genrand_real(void);
3106void rb_reset_random_seed(void);
3107VALUE rb_random_bytes(VALUE rnd, long n);
3109unsigned int rb_random_int32(VALUE rnd);
3110double rb_random_real(VALUE rnd);
3111unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
3112unsigned long rb_genrand_ulong_limited(unsigned long i);
3113int rb_memcicmp(const void*,const void*,long);
3114void rb_match_busy(VALUE);
3117int rb_reg_backref_number(VALUE match, VALUE backref);
3123VALUE rb_reg_new(const char *, long, int);
3124VALUE rb_reg_alloc(void);
3125VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
3129extern VALUE rb_argv0;
3130VALUE rb_get_argv(void);
3131void *rb_load_file(const char*);
3132void *rb_load_file_str(VALUE);
3133VALUE rb_f_kill(int, const VALUE*);
3134void (*ruby_posix_signal(int, void (*)(int)))(int);
3135const char *ruby_signal_name(int);
3136void ruby_default_signal(int);
3137VALUE rb_f_sprintf(int, const VALUE*);
3138VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
3140VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
3143VALUE rb_str_new(const char*, long);
3149VALUE rb_tainted_str_new(const char*, long);
3150VALUE rb_external_str_new(const char*, long);
3152VALUE rb_locale_str_new(const char*, long);
3154VALUE rb_filesystem_str_new(const char*, long);
3156VALUE rb_str_buf_new(long);
3159VALUE rb_str_tmp_new(long);
3160VALUE rb_usascii_str_new(const char*, long);
3162VALUE rb_utf8_str_new(const char*, long);
3164VALUE rb_str_new_static(const char *, long);
3166VALUE rb_utf8_str_new_static(const char *, long);
3167void rb_str_free(VALUE);
3183long rb_str_sublen(VALUE, long);
3184VALUE rb_str_substr(VALUE, long, long);
3185VALUE rb_str_subseq(VALUE, long, long);
3186char *rb_str_subpos(VALUE, long, long*);
3187void rb_str_modify(VALUE);
3188void rb_str_modify_expand(VALUE, long);
3190void rb_str_set_len(VALUE, long);
3192VALUE rb_str_cat(VALUE, const char*, long);
3197st_index_t rb_memhash(const void *ptr, long len);
3205int rb_str_cmp(VALUE, VALUE);
3206VALUE rb_str_equal(VALUE str1, VALUE str2);
3208void rb_str_update(VALUE, long, long, VALUE);
3216long rb_str_strlen(VALUE);
3218long rb_str_offset(VALUE, long);
3219__attribute__ ((__pure__)) size_t rb_str_capacity(VALUE);
3224VALUE rb_struct_define(const char*, ...);
3236VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
3237typedef void rb_unblock_function_t(void *);
3239void rb_thread_check_ints(void);
3240int rb_thread_interrupted(VALUE thval);
3241VALUE rb_mutex_new(void);
3246VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
3248struct timespec;
3249void rb_timespec_now(struct timespec *);
3250VALUE rb_time_new(time_t, long);
3254struct timeval rb_time_interval(VALUE num);
3262void rb_set_class_path(VALUE, VALUE, const char*);
3272void rb_alias_variable(ID, ID);
3283void *rb_mod_const_at(VALUE, void*);
3284void *rb_mod_const_of(VALUE, void*);
3285VALUE rb_const_list(void*);
3294void rb_const_set(VALUE, ID, VALUE);
3297void rb_cvar_set(VALUE, ID, VALUE);
3299void rb_cv_set(VALUE, const char*, VALUE);
3300VALUE rb_cv_get(VALUE, const char*);
3304ID rb_frame_callee(void);
3305int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
3310
3311
3312static inline void
3313rb_clone_setup(VALUE clone, VALUE obj)
3314{
3316 ((struct RBasic*)(obj))->flags & ~(((VALUE)RUBY_FL_PROMOTED0)|((VALUE)RUBY_FL_PROMOTED1)|((VALUE)RUBY_FL_FINALIZE)));
3317 rb_singleton_class_attached((((struct RBasic*)(clone))->klass), clone);
3318 if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(clone, obj);
3319}
3320static inline void
3321rb_dup_setup(VALUE dup, VALUE obj)
3322{
3323 rb_obj_setup(dup, rb_obj_class(obj), (((struct RBasic*)(obj))->flags&(RUBY_FL_DUPPED)));
3324 if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(dup, obj);
3325}
3326static inline long
3327rb_array_len(VALUE a)
3328{
3329 return (((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ?
3330 (long)((((struct RBasic*)(a))->flags >> RARRAY_EMBED_LEN_SHIFT) & ((VALUE)RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : ((struct RArray*)(a))->as.heap.len;
3331}
3332static inline const VALUE *
3333rb_array_const_ptr_transient(VALUE a)
3334{
3335 return ((((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ? ((struct RArray*)(a))->as.ary : ((struct RArray*)(a))->as.heap.ptr);
3336}
3337static inline const VALUE *
3338rb_array_const_ptr(VALUE a)
3339{
3340 void rb_ary_detransient(VALUE a);
3341 if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
3343 }
3344 return rb_array_const_ptr_transient(a);
3345}
3346static inline VALUE *
3347rb_array_ptr_use_start(VALUE a, int allow_transient)
3348{
3350 if (!allow_transient) {
3351 if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
3352 void rb_ary_detransient(VALUE a);
3354 }
3355 }
3356 (void)allow_transient;
3357 return rb_ary_ptr_use_start(a);
3358}
3359static inline void
3360rb_array_ptr_use_end(VALUE a, int allow_transient)
3361{
3362 void rb_ary_ptr_use_end(VALUE a);
3364 (void)allow_transient;
3365}
3366int ruby_native_thread_p(void);
3368typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
3371static inline int rb_isascii(int c){ return '\0' <= c && c <= '\x7f'; }
3372static inline int rb_isupper(int c){ return 'A' <= c && c <= 'Z'; }
3373static inline int rb_islower(int c){ return 'a' <= c && c <= 'z'; }
3374static inline int rb_isalpha(int c){ return rb_isupper(c) || rb_islower(c); }
3375static inline int rb_isdigit(int c){ return '0' <= c && c <= '9'; }
3376static inline int rb_isalnum(int c){ return rb_isalpha(c) || rb_isdigit(c); }
3377static inline int rb_isxdigit(int c){ return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); }
3378static inline int rb_isblank(int c){ return c == ' ' || c == '\t'; }
3379static inline int rb_isspace(int c){ return c == ' ' || ('\t' <= c && c <= '\r'); }
3380static inline int rb_iscntrl(int c){ return ('\0' <= c && c < ' ') || c == '\x7f'; }
3381static inline int rb_isprint(int c){ return ' ' <= c && c <= '\x7e'; }
3382static inline int rb_ispunct(int c){ return !rb_isalnum(c); }
3383static inline int rb_isgraph(int c){ return '!' <= c && c <= '\x7e'; }
3384static inline int rb_tolower(int c) { return rb_isupper(c) ? (c|0x20) : c; }
3385static inline int rb_toupper(int c) { return rb_islower(c) ? (c&0x5f) : c; }
3386int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
3387int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
3388unsigned long ruby_strtoul(const char *str, char **endptr, int base);
3389int ruby_snprintf(char *str, size_t n, char const *fmt, ...) __attribute__((format(printf, 3, 4)));
3390int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
3391int rb_empty_keyword_given_p(void);
3392__attribute__ ((__error__ ("bad scan arg format"))) void rb_scan_args_bad_format(const char*);
3393__attribute__ ((__error__ ("variable argument length doesn't match"))) void rb_scan_args_length_mismatch(const char*,int);
3394__attribute__ ((__always_inline__)) static int rb_scan_args_lead_p(const char *fmt);
3395static inline int
3396rb_scan_args_lead_p(const char *fmt)
3397{
3398 return ((unsigned char)((fmt[0])-'0')<10);
3399}
3400__attribute__ ((__always_inline__)) static int rb_scan_args_n_lead(const char *fmt);
3401static inline int
3402rb_scan_args_n_lead(const char *fmt)
3403{
3404 return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
3405}
3406__attribute__ ((__always_inline__)) static int rb_scan_args_opt_p(const char *fmt);
3407static inline int
3408rb_scan_args_opt_p(const char *fmt)
3409{
3410 return (rb_scan_args_lead_p(fmt) && ((unsigned char)((fmt[1])-'0')<10));
3411}
3412__attribute__ ((__always_inline__)) static int rb_scan_args_n_opt(const char *fmt);
3413static inline int
3414rb_scan_args_n_opt(const char *fmt)
3415{
3416 return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
3417}
3418__attribute__ ((__always_inline__)) static int rb_scan_args_var_idx(const char *fmt);
3419static inline int
3420rb_scan_args_var_idx(const char *fmt)
3421{
3422 return (!rb_scan_args_lead_p(fmt) ? 0 : !((unsigned char)((fmt[1])-'0')<10) ? 1 : 2);
3423}
3424__attribute__ ((__always_inline__)) static int rb_scan_args_f_var(const char *fmt);
3425static inline int
3426rb_scan_args_f_var(const char *fmt)
3427{
3428 return (fmt[rb_scan_args_var_idx(fmt)]=='*');
3429}
3430__attribute__ ((__always_inline__)) static int rb_scan_args_trail_idx(const char *fmt);
3431static inline int
3432rb_scan_args_trail_idx(const char *fmt)
3433{
3434 const int idx = rb_scan_args_var_idx(fmt);
3435 return idx+(fmt[idx]=='*');
3436}
3437__attribute__ ((__always_inline__)) static int rb_scan_args_n_trail(const char *fmt);
3438static inline int
3439rb_scan_args_n_trail(const char *fmt)
3440{
3441 const int idx = rb_scan_args_trail_idx(fmt);
3442 return (((unsigned char)((fmt[idx])-'0')<10) ? fmt[idx]-'0' : 0);
3443}
3444__attribute__ ((__always_inline__)) static int rb_scan_args_hash_idx(const char *fmt);
3445static inline int
3446rb_scan_args_hash_idx(const char *fmt)
3447{
3448 const int idx = rb_scan_args_trail_idx(fmt);
3449 return idx+((unsigned char)((fmt[idx])-'0')<10);
3450}
3451__attribute__ ((__always_inline__)) static int rb_scan_args_f_hash(const char *fmt);
3452static inline int
3453rb_scan_args_f_hash(const char *fmt)
3454{
3455 return (fmt[rb_scan_args_hash_idx(fmt)]==':');
3456}
3457__attribute__ ((__always_inline__)) static int rb_scan_args_block_idx(const char *fmt);
3458static inline int
3459rb_scan_args_block_idx(const char *fmt)
3460{
3461 const int idx = rb_scan_args_hash_idx(fmt);
3462 return idx+(fmt[idx]==':');
3463}
3464__attribute__ ((__always_inline__)) static int rb_scan_args_f_block(const char *fmt);
3465static inline int
3466rb_scan_args_f_block(const char *fmt)
3467{
3468 return (fmt[rb_scan_args_block_idx(fmt)]=='&');
3469}static inline
3470__attribute__ ((__always_inline__)) int rb_scan_args_set(int argc, const VALUE *argv, int n_lead, int n_opt, int n_trail, int f_var, int f_hash, int f_block, VALUE *vars[], char *fmt, int varc);static inline
3471 int
3472rb_scan_args_set(int argc, const VALUE *argv,
3473 int n_lead, int n_opt, int n_trail,
3474 int f_var, int f_hash, int f_block,
3475 VALUE *vars[], char *fmt __attribute__ ((unused)), int varc __attribute__ ((unused)))
3476{
3477 int i, argi = 0, vari = 0, last_idx = -1;
3478 VALUE *var, hash = ((VALUE)RUBY_Qnil), last_hash = 0;
3479 const int n_mand = n_lead + n_trail;
3480 int keyword_given = rb_keyword_given_p();
3481 int empty_keyword_given = 0;
3482 VALUE tmp_buffer = 0;
3483 if (!keyword_given) {
3484 empty_keyword_given = rb_empty_keyword_given_p();
3485 }
3486 if (argc > 0 && !(f_hash && empty_keyword_given)) {
3487 VALUE last = argv[argc - 1];
3488 if (f_hash && n_mand < argc) {
3489 if (keyword_given) {
3490 if (!( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(last))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
3491 rb_warn("Keyword flag set when calling rb_scan_args, but last entry is not a hash");
3492 }
3493 else {
3494 hash = last;
3495 }
3496 }
3497 else if (!((VALUE)(last) != ((VALUE)RUBY_Qnil))) {
3498 if (!f_var && n_mand + n_opt < argc) {
3499 rb_warn("The last argument is nil, treating as empty keywords");
3500 argc--;
3501 }
3502 }
3503 else {
3504 hash = rb_check_hash_type(last);
3505 }
3506 if (!!((VALUE)(hash) != ((VALUE)RUBY_Qnil))) {
3507 VALUE opts = rb_extract_keywords(&hash);
3508 if (!(last_hash = hash)) {
3509 if (!keyword_given) {
3510 rb_warn("Using the last argument as keyword parameters is deprecated");
3511 }
3512 argc--;
3513 }
3514 else {
3515 rb_warn("The last argument is split into positional and keyword parameters");
3516 last_idx = argc - 1;
3517 }
3518 hash = opts ? opts : ((VALUE)RUBY_Qnil);
3519 }
3520 }
3521 else if (f_hash && keyword_given && n_mand == argc) {
3522 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
3523 }
3524 }
3525 if (f_hash && n_mand > 0 && n_mand == argc+1 && empty_keyword_given) {
3526 VALUE *ptr = (VALUE *)rb_alloc_tmp_buffer2(&tmp_buffer, argc+1, sizeof(VALUE));
3527 ((__builtin_object_size(ptr, 0) != (size_t)-1) ? __builtin___memcpy_chk(ptr, argv, sizeof(VALUE)*argc, __builtin_object_size(ptr, 0)) : __memcpy_ichk(ptr, argv, sizeof(VALUE)*argc));
3528 ptr[argc] = rb_hash_new();
3529 argc++;
3530 *(&argv) = ptr;
3531 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
3532 }
3533 if (argc < n_mand) {
3534 goto argc_error;
3535 }
3536 for (i = n_lead; i-- > 0; ) {
3537 var = vars[vari++];
3538 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
3539 argi++;
3540 }
3541 for (i = n_opt; i-- > 0; ) {
3542 var = vars[vari++];
3543 if (argi < argc - n_trail) {
3544 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
3545 argi++;
3546 }
3547 else {
3548 if (var) *var = ((VALUE)RUBY_Qnil);
3549 }
3550 }
3551 if (f_var) {
3552 int n_var = argc - argi - n_trail;
3553 var = vars[vari++];
3554 if (0 < n_var) {
3555 if (var) {
3556 int f_last = (last_idx + 1 == argc - n_trail);
3557 *var = rb_ary_new_from_values(n_var-f_last, &argv[argi]);
3558 if (f_last) rb_ary_push(*var, last_hash);
3559 }
3560 argi += n_var;
3561 }
3562 else {
3563 if (var) *var = rb_ary_new();
3564 }
3565 }
3566 for (i = n_trail; i-- > 0; ) {
3567 var = vars[vari++];
3568 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
3569 argi++;
3570 }
3571 if (f_hash) {
3572 var = vars[vari++];
3573 if (var) *var = hash;
3574 }
3575 if (f_block) {
3576 var = vars[vari++];
3577 if (rb_block_given_p()) {
3578 *var = rb_block_proc();
3579 }
3580 else {
3581 *var = ((VALUE)RUBY_Qnil);
3582 }
3583 }
3584 if (argi < argc) {
3585 argc_error:
3586 if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
3587 rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
3588 }
3589 if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
3590 return argc;
3591}
3592void ruby_sysinit(int *argc, char ***argv);
3593void ruby_init(void);
3594void* ruby_options(int argc, char** argv);
3595int ruby_executable_node(void *n, int *status);
3596int ruby_run_node(void *n);
3597void ruby_show_version(void);
3598void ruby_show_copyright(void);
3599void ruby_init_stack(volatile VALUE*);
3600int ruby_setup(void);
3601int ruby_cleanup(volatile int);
3602void ruby_finalize(void);
3603__attribute__ ((__noreturn__)) void ruby_stop(int);
3605int ruby_stack_check(void);
3606size_t ruby_stack_length(VALUE**);
3607int ruby_exec_node(void *n);
3608void ruby_script(const char* name);
3610void ruby_prog_init(void);
3611void ruby_set_argv(int, char**);
3612void *ruby_process_options(int, char**);
3613void ruby_init_loadpath(void);
3614void ruby_incpush(const char*);
3615void ruby_sig_finalize(void);
3616
3617
3618static inline unsigned int
3619nlz_int(unsigned int x)
3620{
3621 if (x == 0) return 4 * 8;
3622 return (unsigned int)__builtin_clz(x);
3623}
3624static inline unsigned int
3625nlz_long(unsigned long x)
3626{
3627 if (x == 0) return 8 * 8;
3628 return (unsigned int)__builtin_clzl(x);
3629}
3630static inline unsigned int
3631nlz_long_long(unsigned long long x)
3632{
3633 if (x == 0) return 8 * 8;
3634 return (unsigned int)__builtin_clzll(x);
3635}
3636static inline unsigned int
3637nlz_int128(unsigned __int128 x)
3638{
3639 unsigned __int128 y;
3640 unsigned int n = 128;
3641 y = x >> 64; if (y) {n -= 64; x = y;}
3642 y = x >> 32; if (y) {n -= 32; x = y;}
3643 y = x >> 16; if (y) {n -= 16; x = y;}
3644 y = x >> 8; if (y) {n -= 8; x = y;}
3645 y = x >> 4; if (y) {n -= 4; x = y;}
3646 y = x >> 2; if (y) {n -= 2; x = y;}
3647 y = x >> 1; if (y) {return n - 2;}
3648 return (unsigned int)(n - x);
3649}
3650static inline unsigned int
3651nlz_intptr(uintptr_t x)
3652{
3653 return nlz_long(x);
3654}
3655static inline unsigned int
3656rb_popcount32(uint32_t x)
3657{
3658 return (unsigned int)__builtin_popcount(x);
3659}
3660static inline int
3661rb_popcount64(uint64_t x)
3662{
3663 return __builtin_popcountll(x);
3664}
3665static inline int
3666rb_popcount_intptr(uintptr_t x)
3667{
3668 return rb_popcount64(x);
3669}
3670static inline int
3671ntz_int32(uint32_t x)
3672{
3673 return __builtin_ctz(x);
3674}
3675static inline int
3676ntz_int64(uint64_t x)
3677{
3678 return __builtin_ctzll(x);
3679}
3680static inline int
3681ntz_intptr(uintptr_t x)
3682{
3683 return ntz_int64(x);
3684}
3686static inline long
3687rb_overflowed_fix_to_int(long x)
3688{
3689 return (long)((unsigned long)(x >> 1) ^ (1LU << (8 * 8 - 1)));
3690}
3691static inline VALUE
3692rb_fix_plus_fix(VALUE x, VALUE y)
3693{
3694 long lz;
3695 if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
3696 return rb_int2big(rb_overflowed_fix_to_int(lz));
3697 }
3698 else {
3699 return (VALUE)lz;
3700 }
3701}
3702static inline VALUE
3703rb_fix_minus_fix(VALUE x, VALUE y)
3704{
3705 long lz;
3706 if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
3707 return rb_int2big(rb_overflowed_fix_to_int(lz));
3708 }
3709 else {
3710 return (VALUE)lz;
3711 }
3712}
3713static inline VALUE
3714rb_fix_mul_fix(VALUE x, VALUE y)
3715{
3716 long lx = ((long)(((long)(x))>>(int)(1)));
3717 long ly = ((long)(((long)(y))>>(int)(1)));
3718 return (((((__int128)lx * (__int128)ly) < (0x7fffffffffffffffL>>1)+1) && (((__int128)lx * (__int128)ly) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))) ? (((VALUE)((__int128)lx * (__int128)ly))<<1 | RUBY_FIXNUM_FLAG) : rb_int128t2big((__int128)lx * (__int128)ly));
3719}
3720static inline void
3721rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
3722{
3723 long x = ((long)(((long)(a))>>(int)(1)));
3724 long y = ((long)(((long)(b))>>(int)(1)));
3725 long div, mod;
3726 if (x == (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)) && y == -1) {
3727 if (divp) *divp = rb_long2num_inline(-(((long)(-0x7fffffffffffffffL -1L))>>(int)(1)));
3728 if (modp) *modp = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
3729 return;
3730 }
3731 div = x / y;
3732 mod = x % y;
3733 if (y > 0 ? mod < 0 : mod > 0) {
3734 mod += y;
3735 div -= 1;
3736 }
3737 if (divp) *divp = (((VALUE)(div))<<1 | RUBY_FIXNUM_FLAG);
3738 if (modp) *modp = (((VALUE)(mod))<<1 | RUBY_FIXNUM_FLAG);
3739}
3740static inline VALUE
3741rb_fix_div_fix(VALUE x, VALUE y)
3742{
3743 VALUE div;
3744 rb_fix_divmod_fix(x, y, &div, ((void *)0));
3745 return div;
3746}
3747static inline VALUE
3748rb_fix_mod_fix(VALUE x, VALUE y)
3749{
3750 VALUE mod;
3751 rb_fix_divmod_fix(x, y, ((void *)0), &mod);
3752 return mod;
3753}
3754struct RBignum {
3755 struct RBasic basic;
3756 union {
3757 struct {
3758 size_t len;
3759 unsigned int *digits;
3761 unsigned int ary[(8*RVALUE_EMBED_LEN_MAX/4)];
3763};
3765 struct RBasic basic;
3768};
3769struct RFloat {
3770 struct RBasic basic;
3772};
3773struct RComplex {
3774 struct RBasic basic;
3777};
3779 RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
3780 RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
3781 RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
3782 RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
3784 RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
3786 RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
3792typedef unsigned char ar_hint_t;
3793struct RHash {
3794 struct RBasic basic;
3795 union {
3800 union {
3804};
3805struct RMoved {
3809};
3810extern void ruby_init_setproctitle(int argc, char *argv[]);
3811enum {
3813 RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
3815 RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
3818struct RStruct {
3819 struct RBasic basic;
3820 union {
3821 struct {
3822 long len;
3823 const VALUE *ptr;
3827};
3828static inline long
3829rb_struct_len(VALUE st)
3830{
3831 return (((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ?
3832 (long)((((struct RBasic*)(st))->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : ((struct RStruct*)(st))->as.heap.len;
3833}
3834static inline const VALUE *
3835rb_struct_const_ptr(VALUE st)
3836{
3837 return ((((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ? ((struct RStruct*)(st))->as.ary : ((struct RStruct*)(st))->as.heap.ptr);
3838}
3839static inline const VALUE *
3840rb_struct_const_heap_ptr(VALUE st)
3841{
3842 return ((struct RStruct*)(st))->as.heap.ptr;
3843}
3845 char conflict[sizeof(VALUE) * 3];
3846};
3847struct rb_subclass_entry;
3852};
3853typedef unsigned long long rb_serial_t;
3867};
3869struct RClass {
3870 struct RBasic basic;
3874};
3878static inline void
3879RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
3880{
3881 rb_obj_write((VALUE)(klass), (VALUE *)(&((((struct RClass*)(klass))->ptr)->origin_)), (VALUE)(origin), "../ruby-2.7.7/internal.h", 1091);
3882 if (klass != origin) ((!(((VALUE)(origin) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(origin) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(origin))->flags & RUBY_T_MASK) != RUBY_T_NODE) ? (void)(((struct RBasic*)(origin))->flags |= (((VALUE)RUBY_FL_USER5))) : (void)0);
3883}
3884static inline void
3885RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
3886{
3887 rb_obj_write((VALUE)(iclass), (VALUE *)(&((((struct RClass*)(iclass))->ptr)->includer)), (VALUE)(klass), "../ruby-2.7.7/internal.h", 1098);
3888}
3889static inline VALUE
3891{
3892 return ((struct RClass*)(klass))->super;
3893}
3894static inline VALUE
3895RCLASS_SET_SUPER(VALUE klass, VALUE super)
3896{
3897 if (super) {
3900 }
3901 rb_obj_write((VALUE)(klass), (VALUE *)(&((struct RClass*)(klass))->super), (VALUE)(super), "../ruby-2.7.7/internal.h", 1115);
3902 return super;
3903}
3904struct RIMemo {
3910};
3924static inline enum imemo_type
3926{
3927 return (((struct RBasic*)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
3928}
3929static inline int
3930imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
3931{
3932 if ((__builtin_expect(!!(!(((VALUE)(imemo) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(imemo) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))), 1))) {
3933 const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
3934 const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
3935 return expected_type == (((struct RBasic*)(imemo))->flags & mask);
3936 }
3937 else {
3938 return 0;
3939 }
3940}
3941VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
3942struct vm_svar {
3948};
3955};
3957 int min, max;
3958};
3959struct vm_ifunc {
3963 const void *data;
3965};
3967static inline struct vm_ifunc *
3968rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
3969{
3970 return rb_vm_ifunc_new(func, data, 0, (-1));
3971}
3977 size_t cnt;
3980static inline void *
3981rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
3982{
3983 return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
3984}
3985static inline VALUE
3986rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
3987{
3988 const void *src;
3989 VALUE imemo;
3990 rb_imemo_tmpbuf_t *tmpbuf;
3991 void *dst;
3992 size_t len;
3993 rb_string_value(&(str));
3994 imemo = rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
3995 tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
3996 len = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str))->as.heap.len);
3997 src = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
3998 dst = ruby_xmalloc(len);
3999 ((__builtin_object_size(dst, 0) != (size_t)-1) ? __builtin___memcpy_chk(dst, src, len, __builtin_object_size(dst, 0)) : __memcpy_ichk(dst, src, len));
4000 tmpbuf->ptr = dst;
4001 return imemo;
4002}
4004struct MEMO {
4007 const VALUE v1;
4008 const VALUE v2;
4009 union {
4010 long cnt;
4011 long state;
4015};
4016enum {
4023 unsigned int opt_methods;
4024 unsigned int opt_inited;
4025};
4029};
4034VALUE rb_ary_last(int, const VALUE *, VALUE);
4035void rb_ary_set_len(VALUE, long);
4037VALUE rb_ary_tmp_new_fill(long capa);
4040size_t rb_ary_memsize(VALUE);
4045static inline VALUE
4046rb_ary_entry_internal(VALUE ary, long offset)
4047{
4048 long len = rb_array_len(ary);
4049 const VALUE *ptr = rb_array_const_ptr_transient(ary);
4050 if (len == 0) return ((VALUE)RUBY_Qnil);
4051 if (offset < 0) {
4052 offset += len;
4053 if (offset < 0) return ((VALUE)RUBY_Qnil);
4054 }
4055 else if (len <= offset) {
4056 return ((VALUE)RUBY_Qnil);
4057 }
4058 return ptr[offset];
4059}
4061void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
4062void ruby_debug_breakpoint(void);
4063extern const char ruby_digitmap[];
4064double rb_big_fdiv_double(VALUE x, VALUE y);
4069size_t rb_big_size(VALUE);
4072VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
4083VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
4099void Init_class_hierarchy(void);
4103struct rb_block;
4104struct rb_iseq_struct;
4105int rb_dvar_defined(ID, const struct rb_iseq_struct *);
4107const char * rb_insns_name(int i);
4109int rb_vm_insn_addr2insn(const void *);
4110VALUE rb_dbl_complex_new_polar_pi(double abs, double ang);
4111struct rb_thread_struct;
4112struct rb_fiber_struct;
4115void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
4116void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber);
4117void ruby_debug_printf(const char*, ...) __attribute__((format(printf, 1, 2)));
4119void Init_enc(void);
4120void Init_ext(void);
4121ID rb_id_encoding(void);
4122int rb_encdb_replicate(const char *alias, const char *orig);
4123int rb_encdb_alias(const char *alias, const char *orig);
4124int rb_encdb_dummy(const char *name);
4125void rb_encdb_declare(const char *name);
4126void rb_enc_set_base(const char *name, const char *orig);
4127int rb_enc_set_dummy(int index);
4128void rb_encdb_set_unicode(int index);
4129__attribute__ ((__pure__)) int rb_data_is_encoding(VALUE obj);
4130extern VALUE rb_cArithSeq;
4131VALUE rb_f_send(int argc, VALUE *argv, VALUE recv);
4132VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary);
4133extern VALUE rb_eEAGAIN;
4134extern VALUE rb_eEWOULDBLOCK;
4135extern VALUE rb_eEINPROGRESS;
4136void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
4137__attribute__ ((__noreturn__)) void rb_async_bug_errno(const char *,int);
4138const char *rb_builtin_type_name(int t);
4140void rb_warn_deprecated(const char *fmt, const char *suggest, ...) __attribute__((format(printf, 1, 3)));
4141typedef enum {
4149VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
4150VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
4152VALUE rb_warning_string(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
4153__attribute__ ((__noreturn__)) void rb_vraise(VALUE, const char *, va_list);
4157__attribute__ ((__noreturn__)) VALUE rb_f_raise(int argc, VALUE *argv);
4159void rb_call_end_proc(VALUE data);
4160void rb_mark_end_proc(void);
4161extern const char ruby_null_device[];
4162VALUE rb_home_dir_of(VALUE user, VALUE result);
4164VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
4165void rb_file_const(const char*, VALUE);
4166int rb_file_load_ok(const char *);
4171void Init_File(void);
4172int ruby_is_fd_loadable(int fd);
4173__attribute__ ((__noreturn__)) void rb_sys_fail_path_in(const char *func_name, VALUE path);
4174__attribute__ ((__noreturn__)) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
4176extern int ruby_disable_gc;
4177struct rb_objspace;
4178void Init_heap(void);
4179void *ruby_mimmalloc(size_t size) __attribute__((__malloc__));
4180void ruby_mimfree(void *ptr);
4185void ruby_gc_set_params(void);
4187__attribute__((__alloc_align__(1)))
4188void *rb_aligned_malloc(size_t, size_t) __attribute__((__malloc__)) __attribute__ ((alloc_size (2)));
4189size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
4190size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
4191void *rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__));
4192void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
4193void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
4194void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
4195struct st_table *rb_hash_tbl_raw(VALUE hash);
4200long rb_dbl_long_hash(double d);
4210VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
4212int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
4213
4214
4216
4217
4220void rb_call_inits(void);
4221void ruby_set_inplace_mode(const char *);
4224int rb_stderr_tty_p(void);
4227int rb_require_internal(VALUE fname);
4228__attribute__ ((__noreturn__)) void rb_load_fail(VALUE, const char*);
4229extern const char ruby_exec_prefix[];
4230extern const char ruby_initial_load_paths[];
4240extern _Bool mjit_enabled;
4241VALUE mjit_pause(_Bool wait_p);
4243void mjit_finish(_Bool close_handle_p);
4244void Init_newline(void);
4251int rb_num_to_uint(VALUE val, unsigned int *ret);
4252VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
4253double ruby_float_step_size(double beg, double end, double unit, int excl);
4254int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
4255double ruby_float_mod(double x, double y);
4269VALUE rb_int2str(VALUE num, int base);
4271VALUE rb_fix_aref(VALUE fix, VALUE idx);
4273int rb_float_cmp(VALUE x, VALUE y);
4277double rb_int_fdiv_double(VALUE x, VALUE y);
4288int rb_int_positive_p(VALUE num);
4289int rb_int_negative_p(VALUE num);
4291VALUE rb_float_ceil(VALUE num, int ndigits);
4292VALUE rb_float_floor(VALUE x, int ndigits);
4293static inline VALUE
4294rb_num_compare_with_zero(VALUE num, ID mid)
4295{
4296 VALUE zero = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
4297 VALUE r = rb_check_funcall(num, mid, 1, &zero);
4298 if (r == ((VALUE)RUBY_Qundef)) {
4299 rb_cmperr(num, zero);
4300 }
4301 return r;
4302}
4303static inline int
4304rb_num_positive_int_p(VALUE num)
4305{
4306 const ID mid = '>';
4307 if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
4309 return ((long)(num) > (long)(((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG));
4310 }
4311 else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( ((((int)(long)(num))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
4313 return ((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0);
4314 }
4315 return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
4316}
4317static inline int
4318rb_num_negative_int_p(VALUE num)
4319{
4320 const ID mid = '<';
4321 if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
4323 return ((long)(num) < 0);
4324 }
4325 else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( ((((int)(long)(num))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
4327 return (!((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0));
4328 }
4329 return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
4330}
4335static inline double
4336rb_float_flonum_value(VALUE v)
4337{
4338 if (v != (VALUE)0x8000000000000002) {
4339 union {
4340 double d;
4341 VALUE v;
4342 } t;
4343 VALUE b63 = (v >> 63);
4344 t.v = ((((2 - b63) | (v & ~(VALUE)0x03)) >> (3)) | (((2 - b63) | (v & ~(VALUE)0x03)) << ((sizeof((2 - b63) | (v & ~(VALUE)0x03)) * 8) - 3)));
4345 return t.d;
4346 }
4347 return 0.0;
4348}
4349static inline double
4350rb_float_noflonum_value(VALUE v)
4351{
4352 return ((struct RFloat *)v)->float_value;
4353}
4354static inline double
4355rb_float_value_inline(VALUE v)
4356{
4357 if (((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) {
4358 return rb_float_flonum_value(v);
4359 }
4360 return rb_float_noflonum_value(v);
4361}
4362static inline VALUE
4363rb_float_new_inline(double d)
4364{
4365 union {
4366 double d;
4367 VALUE v;
4368 } t;
4369 int bits;
4370 t.d = d;
4371 bits = (int)((VALUE)(t.v >> 60) & 0x7);
4372 if (t.v != 0x3000000000000000 &&
4373 !((bits-3) & ~0x01)) {
4374 return ((((t.v) << (3)) | ((t.v) >> ((sizeof(t.v) * 8) - 3))) & ~(VALUE)0x01) | 0x02;
4375 }
4376 else if (t.v == (VALUE)0) {
4377 return 0x8000000000000002;
4378 }
4379 return rb_float_new_in_heap(d);
4380}
4381void rb_obj_copy_ivar(VALUE dest, VALUE obj);
4382__attribute__ ((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
4383__attribute__ ((__const__)) VALUE rb_obj_not(VALUE obj);
4385__attribute__ ((__noreturn__)) void rb_undefined_alloc(VALUE klass);
4386double rb_num_to_dbl(VALUE val);
4387VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
4390VALUE rb_convert_type_with_id(VALUE,int,const char*,ID);
4392int rb_bool_expected(VALUE, const char *);
4396};
4398
4399
4400VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
4401
4402
4403void *rb_parser_load_file(VALUE parser, VALUE name);
4408__attribute__ ((__pure__)) int rb_is_const_sym(VALUE sym);
4409__attribute__ ((__pure__)) int rb_is_attrset_sym(VALUE sym);
4414int rb_block_arity(void);
4415int rb_block_min_max_arity(int *max);
4418VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
4419struct waitpid_state;
4421 union {
4422 struct {
4425 struct {
4436 unsigned use_shell : 1;
4437 unsigned pgroup_given : 1;
4438 unsigned umask_given : 1;
4442 unsigned close_others_do : 1;
4443 unsigned chdir_given : 1;
4444 unsigned new_pgroup_given : 1;
4445 unsigned new_pgroup_flag : 1;
4446 unsigned uid_given : 1;
4447 unsigned gid_given : 1;
4448 unsigned exception : 1;
4449 unsigned exception_given : 1;
4464};
4465static inline size_t
4466ARGVSTR2ARGC(VALUE argv_str)
4467{
4468 size_t i = 0;
4469 char *const *p = ((char **)((void *)(((const struct rb_imemo_tmpbuf_struct *)(argv_str))->ptr)) + 1);
4470 while (p[i++])
4471 ;
4472 return i - 1;
4473}
4477pid_t rb_fork_ruby(int *status);
4478void rb_last_status_clear(void);
4481VALUE rb_rational_plus(VALUE self, VALUE other);
4482VALUE rb_rational_minus(VALUE self, VALUE other);
4483VALUE rb_rational_mul(VALUE self, VALUE other);
4484VALUE rb_rational_div(VALUE self, VALUE other);
4485VALUE rb_lcm(VALUE x, VALUE y);
4487VALUE rb_cstr_to_rat(const char *, int);
4489VALUE rb_rational_cmp(VALUE self, VALUE other);
4490VALUE rb_rational_pow(VALUE self, VALUE other);
4491VALUE rb_rational_floor(VALUE self, int ndigits);
4495VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
4497long rb_reg_search0(VALUE, VALUE, long, int, int);
4498VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
4500void rb_backref_set_string(VALUE string, long pos, long len);
4502int rb_match_count(VALUE match);
4503int rb_match_nth_defined(int nth, VALUE match);
4504VALUE rb_reg_new_ary(VALUE ary, int options);
4505extern int ruby_enable_coredump;
4506int rb_get_next_signal(void);
4508VALUE rb_fstring_new(const char *ptr, long len);
4509VALUE rb_fstring_cstr(const char *str);
4510int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
4514char *rb_str_fill_terminator(VALUE str, const int termlen);
4515void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
4518size_t rb_str_memsize(VALUE);
4519VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
4521char *rb_str_to_cstr(VALUE str);
4522VALUE rb_str_eql(VALUE str1, VALUE str2);
4524const char *ruby_escaped_char(int c);
4526static inline VALUE
4527rb_str_eql_internal(const VALUE str1, const VALUE str2)
4528{
4529 const long len = (!(((struct RBasic*)(str1))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str1))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str1))->as.heap.len);
4530 const char *ptr1, *ptr2;
4531 if (len != (!(((struct RBasic*)(str2))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str2))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str2))->as.heap.len)) return ((VALUE)RUBY_Qfalse);
4532 if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
4533 if ((ptr1 = (!(((struct RBasic*)(str1))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str1))->as.ary : ((struct RString*)(str1))->as.heap.ptr)) == (ptr2 = (!(((struct RBasic*)(str2))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str2))->as.ary : ((struct RString*)(str2))->as.heap.ptr)))
4534 return ((VALUE)RUBY_Qtrue);
4535 if (memcmp(ptr1, ptr2, len) == 0)
4536 return ((VALUE)RUBY_Qtrue);
4537 return ((VALUE)RUBY_Qfalse);
4538}
4539VALUE rb_sym_intern_ascii(const char *ptr, long len);
4550int rb_get_coverage_mode(void);
4556int rb_thread_to_be_killed(VALUE thread);
4557void rb_mutex_allow_trap(VALUE self, int val);
4558VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
4561char *ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve);
4562char *ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve);
4563void rb_gc_mark_global_tbl(void);
4567VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
4568void rb_autoload_str(VALUE mod, ID id, VALUE file);
4570void rb_deprecate_constant(VALUE mod, const char *name);
4574_Bool rb_gvar_is_traced(const struct rb_global_entry *);
4578void rb_vm_mark(void *ptr);
4579void Init_BareVM(void);
4580void Init_vm_objects(void);
4581__attribute__ ((__pure__)) VALUE rb_vm_top_self(void);
4583const void **rb_vm_get_insns_address_table(void);
4584VALUE rb_source_location(int *pline);
4585const char *rb_source_location_cstr(int *pline);
4586static void rb_vm_pop_cfunc_frame(void);
4587int rb_vm_add_root_module(ID id, VALUE module);
4590VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
4591static VALUE ruby_vm_special_exception_copy(VALUE);
4592__attribute__ ((__pure__)) st_table *rb_vm_fstring_table(void);
4593void rb_print_backtrace(void);
4594void Init_vm_eval(void);
4595VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *);
4598typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
4599VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
4602 rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
4603const char *rb_type_str(enum ruby_value_type type);
4607VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
4608 rb_block_call_func_t bl_proc, int min_argc, int max_argc,
4609 VALUE data2);
4610VALUE rb_equal_opt(VALUE obj1, VALUE obj2);static inline
4611VALUE rb_eql_opt(VALUE obj1, VALUE obj2);static inline
4612void Init_vm_stack_canary(void);
4613void Init_eval_method(void);
4622 MISSING_NONE = 0x40
4628struct rb_calling_info;
4629struct rb_call_data;
4633 (64
4634 - sizeof(rb_serial_t)
4635 - sizeof(struct rb_callable_method_entry_struct *)
4636 - sizeof(uintptr_t)
4637 - sizeof(enum method_missing_reason)
4638 - sizeof(VALUE (*)(
4640 struct rb_control_frame_struct *,
4641 struct rb_calling_info *,
4642 const struct rb_call_data *)))
4643 / sizeof(rb_serial_t)
4644 ];
4649 struct rb_calling_info *calling,
4650 struct rb_call_data *cd);
4651 union {
4652 unsigned int index;
4655};
4656_Static_assert(sizeof(struct rb_call_cache) <= 64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE");
4659 unsigned int flag;
4661};
4665};
4666__attribute__ ((__visibility__("default"))) extern
4667__attribute__ ((__nonnull__(1))) VALUE rb_funcallv_with_cc(struct rb_call_data*, VALUE, ID, int, const VALUE*);
4668__attribute__ ((__visibility__("default"))) extern
4669__attribute__ ((__nonnull__(1))) _Bool rb_method_basic_definition_p_with_cc(struct rb_call_data *, VALUE, ID);
4670void Init_vm_backtrace(void);
4678void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
4679VALUE rb_getlogin(void);
4681VALUE rb_getpwdiruid(void);
4682
4683
4688void rb_ary_ptr_use_end(VALUE ary);
4695VALUE rb_big2str_poweroftwo(VALUE x, int base);
4696VALUE rb_big2str_generic(VALUE x, int base);
4697VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
4698VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
4699VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
4703VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck);
4711VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
4712VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv,
4713 rb_enumerator_size_func *size_fn,
4714 VALUE beg, VALUE end, VALUE step, int excl);
4715int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
4716__attribute__ ((__noreturn__)) void rb_unexpected_type(VALUE,int);
4717static inline int
4718rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
4719{
4720 return ( ((RUBY_T_DATA) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_DATA) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_DATA) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_DATA) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_DATA) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_DATA) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_DATA) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_DATA))) && (((struct RTypedData*)(obj))->typed_flag == 1) && ((((struct RTypedData*)(obj))->type) == data_type);
4721}
4724void rb_maygvl_fd_fix_cloexec(int fd);
4725int rb_gc_for_fd(int err);
4726void rb_write_error_str(VALUE mesg);
4727VALUE rb_int_positive_pow(long x, unsigned long y);
4728int rb_opts_exception_p(VALUE opts, int default_value);
4729int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
4730pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
4731VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt);
4732struct rb_execarg *rb_execarg_get(VALUE execarg_obj);
4733int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
4734void rb_execarg_parent_start(VALUE execarg_obj);
4735void rb_execarg_parent_end(VALUE execarg_obj);
4736int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
4737VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
4738void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
4739VALUE rb_gcd(VALUE x, VALUE y);
4740VALUE rb_gcd_normal(VALUE self, VALUE other);
4742int rb_grantpt(int fd);
4745VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
4747int ruby_thread_has_gvl_p(void);
4749extern const signed char ruby_digit36_to_number_table[];
4750extern const char ruby_hexdigits[];
4751extern unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow);
4755int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
4756void rb_iv_tbl_copy(VALUE dst, VALUE src);
4759size_t rb_obj_memsize_of(VALUE);
4761size_t rb_obj_gc_flags(VALUE, ID[], size_t);
4762void rb_gc_mark_values(long n, const VALUE *values);
4763void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
4764VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
4765int ruby_fill_random_bytes(void *, size_t, int);
4766
4767
4768
4769
4772void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
4773
4774
4775const char *rb_obj_info(VALUE obj);
4776const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
4778struct rb_thread_struct;
4779
4780
4782void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
4783void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
4789 int (*callback)(void *start, void *end, size_t stride, void *data),
4790 void *data);
4792 int (*callback)(void *, void *, size_t, void *),
4793 void *data);
4794
4795
4901 NODE_LAST
4911static inline rb_code_location_t
4912code_loc_gen(rb_code_location_t *loc1, rb_code_location_t *loc2)
4913{
4915 loc.beg_pos = loc1->beg_pos;
4916 loc.end_pos = loc2->end_pos;
4917 return loc;
4918}
4919typedef struct RNode {
4921 union {
4922 struct RNode *node;
4927 union {
4928 struct RNode *node;
4929 ID id;
4930 long argc;
4931 VALUE value;
4933 union {
4934 struct RNode *node;
4935 ID id;
4936 long state;
4940 VALUE value;
4946
4947
4949typedef struct rb_ast_body_struct {
4950 const NODE *root;
4954typedef struct rb_ast_struct {
4959rb_ast_t *rb_ast_new(void);
4960void rb_ast_mark(rb_ast_t*);
4964void rb_ast_free(rb_ast_t*);
4965size_t rb_ast_memsize(const rb_ast_t*);
4969VALUE rb_parser_new(void);
4973VALUE rb_parser_dump_tree(const NODE *node, int comment);
4974void rb_parser_set_options(VALUE, int, int, int, int);
4975rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
4976rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
4977rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
4978rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
4979void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
4980const char *ruby_node_name(int node);
4981const struct kwtable *rb_reserved_word(const char *, unsigned int);
4993 unsigned int no_kwarg: 1;
4994 unsigned int ruby2_keywords: 1;
4996};
5002};
5003struct parser_params;
5004void *rb_parser_malloc(struct parser_params *, size_t);
5005void *rb_parser_realloc(struct parser_params *, void *, size_t);
5006void *rb_parser_calloc(struct parser_params *, size_t, size_t);
5007void rb_parser_free(struct parser_params *, void *);
5008void rb_parser_printf(struct parser_params *parser, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
5009
5010
5014 RUBY_ID_INSTANCE = (0x01<<1),
5015 RUBY_ID_GLOBAL = (0x03<<1),
5016 RUBY_ID_ATTRSET = (0x04<<1),
5017 RUBY_ID_CONST = (0x05<<1),
5018 RUBY_ID_CLASS = (0x06<<1),
5019 RUBY_ID_JUNK = (0x07<<1),
5025 idDot2 = 128,
5026 idDot3 = 129,
5027 idUPlus = 132,
5029 idPow = 134,
5030 idCmp = 135,
5031 idPLUS = '+',
5032 idMINUS = '-',
5033 idMULT = '*',
5034 idDIV = '/',
5035 idMOD = '%',
5036 idLTLT = 136,
5037 idGTGT = 137,
5038 idLT = '<',
5039 idLE = 138,
5040 idGT = '>',
5041 idGE = 139,
5042 idEq = 140,
5043 idEqq = 141,
5044 idNeq = 142,
5045 idNot = '!',
5046 idAnd = '&',
5047 idOr = '|',
5051 idAREF = 145,
5052 idASET = 146,
5054 idANDOP = 148,
5055 idOROP = 149,
5229typedef enum {
5234 METHOD_VISI_MASK = 0x03
5236typedef struct rb_scope_visi_struct {
5238 unsigned int module_func : 1;
5240typedef struct rb_cref_struct {
5261static inline void
5262METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
5263{
5264 ((void)0);
5265 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
5266}
5267static inline void
5268METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
5269{
5270 ((void)0);
5271 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
5272}
5273static inline void
5274METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
5275{
5276 ((void)0);
5277 ((void)0);
5278 me->flags =
5279 (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
5280 ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
5281}
5282static inline void
5283METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
5284{
5285 dst->flags =
5286 (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
5287 (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
5288}
5289typedef enum {
5302
5304_Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<<VM_METHOD_TYPE_MINIMUM_BITS)");
5312 VALUE (*invoker)(VALUE recv, int argc, const VALUE *argv, VALUE (*func)());
5313 int argc;
5338 int alias_count : 28;
5340 unsigned int no_redef_warning: 1;
5341 union {
5352};
5354_Static_assert(__builtin_offsetof (rb_method_definition_t, body)==8, "sizeof_method_def" ": " "offsetof(rb_method_definition_t, body)==8");
5357void rb_add_refined_method_entry(VALUE refined_class, ID mid);
5366
5367
5369
5370
5383VALUE rb_unnamed_parameters(int arity);
5384typedef unsigned int rb_atomic_t;
5385void __assert (const char *, int, const char *)
5386 __attribute__ ((__noreturn__));
5387void __assert_func (const char *, int, const char *, const char *)
5388 __attribute__ ((__noreturn__));
5389static inline char *container_of_or_null_(void *member_ptr, size_t offset)
5390{
5391 return member_ptr ? (char *)member_ptr - offset : ((void *)0);
5392}
5394{
5396};
5398{
5399 struct list_node n;
5400};
5401static inline void list_head_init(struct list_head *h)
5402{
5403 h->n.next = h->n.prev = &h->n;
5404}
5405static inline void list_node_init(struct list_node *n)
5406{
5407 n->next = n->prev = n;
5408}
5409static inline void list_add_after_(struct list_head *h,
5410 struct list_node *p,
5411 struct list_node *n,
5412 const char *abortstr)
5413{
5414 n->next = p->next;
5415 n->prev = p;
5416 p->next->prev = n;
5417 p->next = n;
5418 (void)((void)abortstr, h);
5419}
5420static inline void list_add_(struct list_head *h,
5421 struct list_node *n,
5422 const char *abortstr)
5423{
5424 list_add_after_(h, &h->n, n, abortstr);
5425}
5426static inline void list_add_before_(struct list_head *h,
5427 struct list_node *p,
5428 struct list_node *n,
5429 const char *abortstr)
5430{
5431 n->next = p;
5432 n->prev = p->prev;
5433 p->prev->next = n;
5434 p->prev = n;
5435 (void)((void)abortstr, h);
5436}
5437static inline void list_add_tail_(struct list_head *h,
5438 struct list_node *n,
5439 const char *abortstr)
5440{
5441 list_add_before_(h, &h->n, n, abortstr);
5442}
5443static inline int list_empty_(const struct list_head *h, const char* abortstr)
5444{
5445 (void)((void)abortstr, h);
5446 return h->n.next == &h->n;
5447}
5448static inline _Bool list_empty_nocheck(const struct list_head *h)
5449{
5450 return h->n.next == &h->n;
5451}
5452static inline void list_del_(struct list_node *n, const char* abortstr)
5453{
5454 (void)((void)abortstr, n);
5455 n->next->prev = n->prev;
5456 n->prev->next = n->next;
5457}
5458static inline void list_del_init_(struct list_node *n, const char *abortstr)
5459{
5460 list_del_(n, abortstr);
5461 list_node_init(n);
5462}
5463static inline void list_del_from(struct list_head *h, struct list_node *n)
5464{
5465 ((!list_empty_(h, "../ruby-2.7.7/ccan/list/list.h" ":" "328")) ? (void)0 : __assert_func ("../ruby-2.7.7/ccan/list/list.h", 328, __func__, "!list_empty(h)"));
5466 list_del_(n, "../ruby-2.7.7/ccan/list/list.h" ":" "329");
5467}
5468static inline void list_swap_(struct list_node *o,
5469 struct list_node *n,
5470 const char* abortstr)
5471{
5472 (void)((void)abortstr, o);
5473 *n = *o;
5474 n->next->prev = n;
5475 n->prev->next = n;
5476}
5477static inline const void *list_top_(const struct list_head *h, size_t off)
5478{
5479 if (list_empty_(h, "../ruby-2.7.7/ccan/list/list.h" ":" "399"))
5480 return ((void *)0);
5481 return (const char *)h->n.next - off;
5482}
5483static inline const void *list_pop_(const struct list_head *h, size_t off)
5484{
5485 struct list_node *n;
5486 if (list_empty_(h, "../ruby-2.7.7/ccan/list/list.h" ":" "425"))
5487 return ((void *)0);
5488 n = h->n.next;
5489 list_del_(n, "../ruby-2.7.7/ccan/list/list.h" ":" "428");
5490 return (const char *)n - off;
5491}
5492static inline const void *list_tail_(const struct list_head *h, size_t off)
5493{
5494 if (list_empty_(h, "../ruby-2.7.7/ccan/list/list.h" ":" "451"))
5495 return ((void *)0);
5496 return (const char *)h->n.prev - off;
5497}
5498static inline void list_append_list_(struct list_head *to,
5499 struct list_head *from,
5500 const char *abortstr)
5501{
5502 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
5503 struct list_node *to_tail = ((void)abortstr, to)->n.prev;
5504 to->n.prev = from_tail;
5505 from_tail->next = &to->n;
5506 to_tail->next = &from->n;
5507 from->n.prev = to_tail;
5508 list_del_(&from->n, "../ruby-2.7.7/ccan/list/list.h" ":" "600");
5509 list_head_init(from);
5510}
5511static inline void list_prepend_list_(struct list_head *to,
5512 struct list_head *from,
5513 const char *abortstr)
5514{
5515 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
5516 struct list_node *to_head = ((void)abortstr, to)->n.next;
5517 to->n.next = &from->n;
5518 from->n.prev = &to->n;
5519 to_head->prev = from_tail;
5520 from_tail->next = to_head;
5521 list_del_(&from->n, "../ruby-2.7.7/ccan/list/list.h" ":" "632");
5522 list_head_init(from);
5523}
5524static inline void *list_node_to_off_(struct list_node *node, size_t off)
5525{
5526 return (void *)((char *)node - off);
5527}
5528static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
5529{
5530 return (struct list_node *)((char *)ptr + off);
5531}
5532static inline void *list_entry_or_null(const struct list_head *h,
5533 const struct list_node *n,
5534 size_t off)
5535{
5536 if (n == &h->n)
5537 return ((void *)0);
5538 return (char *)n - off;
5539}
5542};
5544 pid_t __pid,
5545 const struct sched_param *__param
5546);
5548 pid_t __pid,
5549 struct sched_param *__param
5550);
5552 pid_t __pid,
5553 int __policy,
5554 const struct sched_param *__param
5555);
5557 pid_t __pid
5558);
5560 int __policy
5561);
5563 int __policy
5564);
5566 pid_t __pid,
5567 struct timespec *__interval
5568);
5569int sched_yield( void );
5572int sched_get_thread_affinity (void *, size_t, cpu_set_t *);
5573int sched_setaffinity (pid_t, size_t, const cpu_set_t *);
5574int sched_set_thread_affinity (void *, size_t, const cpu_set_t *);
5575int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
5590int pthread_attr_getstack (const pthread_attr_t *, void **, size_t *);
5595typedef void (*__cleanup_routine_type) (void *);
5597{
5599 void *arg;
5603void _pthread_cleanup_pop (int execute);
5609 clockid_t, const struct timespec *);
5611 pthread_mutex_t *, const struct timespec *);
5624 const pthread_barrierattr_t *, unsigned);
5628 void *(*)(void *), void *);
5631void pthread_exit (void *) __attribute__ ((__noreturn__));
5636int pthread_key_create (pthread_key_t *, void (*)(void *));
5644 const struct timespec *);
5667 const struct timespec *);
5672 const struct timespec *);
5680int pthread_once (pthread_once_t *, void (*)(void));
5684int pthread_setcancelstate (int, int *);
5685int pthread_setcanceltype (int, int *);
5692int pthread_getname_np (pthread_t, char *, size_t) __attribute__((__nonnull__(2)));
5694int pthread_setname_np (pthread_t, const char *) __attribute__((__nonnull__(2)));
5695int pthread_sigqueue (pthread_t *, int, const union sigval);
5696int pthread_timedjoin_np (pthread_t, void **, const struct timespec *);
5698int pthread_yield (void);
5703
5704
5710
5711
5714 union {
5718 struct
5719 {
5736
5737typedef long jmp_buf[32];
5738
5739typedef long sigjmp_buf[32 +1+((sizeof (long) + sizeof (sigset_t) - 1)
5740 /sizeof (long))];
5741extern void siglongjmp (sigjmp_buf, int) __attribute__ ((__noreturn__));
5742extern int sigsetjmp (sigjmp_buf, int);
5743extern void _longjmp (jmp_buf, int) __attribute__ ((__noreturn__));
5744extern int _setjmp (jmp_buf);
5745
5746void longjmp (jmp_buf __jmpb, int __retval)
5747 __attribute__ ((__noreturn__));
5748int setjmp (jmp_buf __jmpb);
5749
5752typedef unsigned long rb_num_t;
5753typedef signed long rb_snum_t;
5764 RUBY_TAG_MASK = 0xf
5768 VM_THROW_STATE_MASK = 0xff
5770struct rb_thread_struct;
5777};
5780 size_t index;
5781};
5783 struct {
5789};
5793};
5797};
5801 int argc;
5803};
5807};
5818static inline VALUE
5819pathobj_path(VALUE pathobj)
5820{
5821 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(pathobj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
5822 return pathobj;
5823 }
5824 else {
5825 ((void)0);
5826 return (rb_array_const_ptr_transient(pathobj)[0]);
5827 }
5828}
5829static inline VALUE
5830pathobj_realpath(VALUE pathobj)
5831{
5832 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(pathobj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
5833 return pathobj;
5834 }
5835 else {
5836 ((void)0);
5837 return (rb_array_const_ptr_transient(pathobj)[1]);
5838 }
5839}
5840struct rb_mjit_unit;
5853 unsigned int iseq_size;
5855 struct {
5856 struct {
5857 unsigned int has_lead : 1;
5858 unsigned int has_opt : 1;
5859 unsigned int has_rest : 1;
5860 unsigned int has_post : 1;
5861 unsigned int has_kw : 1;
5862 unsigned int has_kwrest : 1;
5863 unsigned int has_block : 1;
5864 unsigned int ambiguous_param0 : 1;
5865 unsigned int accepts_no_kwarg : 1;
5866 unsigned int ruby2_keywords: 1;
5868 unsigned int size;
5876 const struct rb_iseq_param_keyword {
5877 int num;
5880 int rest_start;
5881 const ID *table;
5888 unsigned int *positions;
5889 unsigned int size;
5898 struct {
5904 unsigned int local_table_size;
5905 unsigned int is_size;
5906 unsigned int ci_size;
5907 unsigned int ci_kw_size;
5908 unsigned int stack_max;
5911 struct rb_control_frame_struct *);
5912 long unsigned total_calls;
5915};
5920 union {
5922 struct {
5926 struct {
5931};
5932static inline const rb_iseq_t *
5933rb_iseq_check(const rb_iseq_t *iseq)
5934{
5935 return iseq;
5936}
5937static inline const rb_iseq_t *
5938def_iseq_ptr(rb_method_definition_t *def)
5939{
5940 return rb_iseq_check(def->body.iseq.iseqptr);
5941}
5980 BOP_LAST_
5982struct rb_vm_struct;
5983typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
5984typedef struct rb_at_exit_list {
5988struct rb_objspace;
5989struct rb_objspace *rb_objspace_alloc(void);
5990void rb_objspace_free(struct rb_objspace *);
5992typedef struct rb_hook_list_struct {
5995 unsigned int need_clean;
5996 unsigned int running;
5998typedef const struct rb_builtin_function *RB_BUILTIN;
5999typedef struct rb_vm_struct {
6000 VALUE self;
6013 volatile int ubf_async_safe;
6014 unsigned int running: 1;
6017 unsigned int safe_level_: 1;
6030 struct {
6050 struct {
6059 VALUE self;
6060 const VALUE *ep;
6061 union {
6063 const struct vm_ifunc *ifunc;
6066};
6079struct rb_block {
6080 union {
6086};
6088 const VALUE *pc;
6091 VALUE self;
6092 const VALUE *ep;
6093 const void *block_code;
6097static inline struct rb_thread_struct *
6098rb_thread_ptr(VALUE thval)
6099{
6101}
6108typedef void *rb_jmpbuf_t[5];
6115};
6116_Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
6117_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)");
6120};
6123 void *arg;
6124};
6125struct rb_mutex_struct;
6130typedef struct rb_ensure_entry {
6135typedef struct rb_ensure_list {
6139typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3];
6163 struct {
6167 __attribute__((aligned(8))) jmp_buf regs;
6170void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
6173typedef struct rb_thread_struct {
6174 struct list_node vmlt_node;
6175 VALUE self;
6184 unsigned int to_kill : 1;
6185 unsigned int abort_on_exception: 1;
6186 unsigned int report_on_exception: 1;
6197 struct rb_unblock_callback unblock;
6201 union {
6202 struct {
6206 } proc;
6207 struct {
6208 VALUE (*func)(void *);
6209 void *arg;
6210 } func;
6211 } invoke_arg;
6212 enum {
6213 thread_invoke_type_none = 0,
6215 thread_invoke_type_func
6216 } invoke_type;
6222typedef enum {
6228
6229
6230rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type);
6234 const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
6235struct iseq_link_anchor;
6239 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
6240 const void *data;
6241};
6242static inline struct rb_iseq_new_with_callback_callback_func *
6243rb_iseq_new_with_callback_new_callback(
6244 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
6245{
6247 return (struct rb_iseq_new_with_callback_callback_func *)memo;
6248}
6250 VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
6251 const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
6253int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
6255extern VALUE rb_cISeq;
6256extern VALUE rb_cRubyVM;
6259
6260
6261typedef struct {
6262 const struct rb_block block;
6263 unsigned int is_from_method: 1;
6264 unsigned int is_lambda: 1;
6265} rb_proc_t;
6266typedef struct {
6269 const VALUE *ep;
6270 const VALUE *env;
6271 unsigned int env_size;
6272} rb_env_t;
6274typedef struct {
6275 const struct rb_block block;
6277 unsigned short first_lineno;
6278} rb_binding_t;
6313typedef struct rb_call_info *CALL_INFO;
6315typedef struct rb_call_data *CALL_DATA;
6317typedef rb_control_frame_t *
6319enum {
6342static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
6343static inline void
6344VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
6345{
6346 VALUE flags = ep[( 0)];
6347 ((void)0);
6348 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
6349}
6350static inline void
6351VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
6352{
6353 VALUE flags = ep[( 0)];
6354 ((void)0);
6355 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
6356}
6357static inline unsigned long
6358VM_ENV_FLAGS(const VALUE *ep, long flag)
6359{
6360 VALUE flags = ep[( 0)];
6361 ((void)0);
6362 return flags & flag;
6363}
6364static inline unsigned long
6365VM_FRAME_TYPE(const rb_control_frame_t *cfp)
6366{
6367 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
6368}
6369static inline int
6370VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
6371{
6372 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
6373}
6374static inline int
6375VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
6376{
6377 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
6378}
6379static inline int
6380VM_FRAME_CFRAME_EMPTY_KW_P(const rb_control_frame_t *cfp)
6381{
6382 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_EMPTY_KW) != 0;
6383}
6384static inline int
6385VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
6386{
6387 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
6388}
6389static inline int
6390VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
6391{
6392 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
6393}
6394static inline int
6395rb_obj_is_iseq(VALUE iseq)
6396{
6397 return imemo_type_p(iseq, imemo_iseq);
6398}
6399static inline int
6400VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
6401{
6402 int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
6403 ((void)0);
6404 return cframe_p;
6405}
6406static inline int
6407VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
6408{
6409 return !VM_FRAME_CFRAME_P(cfp);
6410}
6411static inline int
6412VM_ENV_LOCAL_P(const VALUE *ep)
6413{
6414 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
6415}
6416static inline const VALUE *
6417VM_ENV_PREV_EP(const VALUE *ep)
6418{
6419 ((void)0);
6420 return ((void *)(((ep[(-1)])) & ~0x03));
6421}
6422static inline VALUE
6423VM_ENV_BLOCK_HANDLER(const VALUE *ep)
6424{
6425 ((void)0);
6426 return ep[(-1)];
6427}
6428static inline int
6429VM_ENV_ESCAPED_P(const VALUE *ep)
6430{
6431 ((void)0);
6432 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
6433}
6434static inline VALUE
6435VM_ENV_ENVVAL(const VALUE *ep)
6436{
6437 VALUE envval = ep[( 1)];
6438 ((void)0);
6439 ((void)0);
6440 return envval;
6441}
6442static inline const rb_env_t *
6443VM_ENV_ENVVAL_PTR(const VALUE *ep)
6444{
6445 return (const rb_env_t *)VM_ENV_ENVVAL(ep);
6446}
6447static inline const rb_env_t *
6448vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
6449{
6450 rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
6451 env->env_size = env_size;
6452 env_ep[( 1)] = (VALUE)env;
6453 return env;
6454}
6455static inline void
6456VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
6457{
6458 *((VALUE *)ptr) = v;
6459}
6460static inline void
6461VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
6462{
6463 ((void)0);
6464 VM_FORCE_WRITE(ptr, special_const_value);
6465}
6466static inline void
6467VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
6468{
6469 ((void)0);
6470 VM_FORCE_WRITE(&ep[index], v);
6471}static inline
6472const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
6473const VALUE *rb_vm_proc_local_ep(VALUE proc);static inline
6474void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
6475void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);static inline
6476VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
6477static inline const rb_control_frame_t *
6478RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
6479{
6480 return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
6481}
6482static inline int
6483RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
6484{
6485 return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
6486}
6487static inline int
6488VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
6489{
6490 if ((block_handler & 0x03) == 0x01) {
6491 return 1;
6492 }
6493 else {
6494 return 0;
6495 }
6496}
6497static inline VALUE
6498VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
6499{
6500 VALUE block_handler = ((VALUE)(captured) | (0x01));
6501 ((void)0);
6502 return block_handler;
6503}
6504static inline const struct rb_captured_block *
6505VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
6506{
6507 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
6508 ((void)0);
6509 return captured;
6510}
6511static inline int
6512VM_BH_IFUNC_P(VALUE block_handler)
6513{
6514 if ((block_handler & 0x03) == 0x03) {
6515 return 1;
6516 }
6517 else {
6518 return 0;
6519 }
6520}
6521static inline VALUE
6522VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
6523{
6524 VALUE block_handler = ((VALUE)(captured) | (0x03));
6525 ((void)0);
6526 return block_handler;
6527}
6528static inline const struct rb_captured_block *
6529VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
6530{
6531 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
6532 ((void)0);
6533 return captured;
6534}
6535static inline const struct rb_captured_block *
6536VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
6537{
6538 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
6539 ((void)0);
6540 return captured;
6541}
6542static inline enum rb_block_handler_type
6543vm_block_handler_type(VALUE block_handler)
6544{
6545 if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
6547 }
6548 else if (VM_BH_IFUNC_P(block_handler)) {
6550 }
6551 else if (((((VALUE)(block_handler)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_handler) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_handler) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_handler))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
6553 }
6554 else {
6555 ((void)0);
6557 }
6558}
6559static inline void
6560vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
6561{
6562 ((void)0);
6563}
6564static inline int
6565vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
6566{
6567 return ((VALUE) cfp->block_code) == block_handler;
6568}
6569static inline enum rb_block_type
6570vm_block_type(const struct rb_block *block)
6571{
6572 return block->type;
6573}
6574static inline void
6575vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
6576{
6577 struct rb_block *mb = (struct rb_block *)block;
6578 mb->type = type;
6579}
6580static inline const struct rb_block *
6581vm_proc_block(VALUE procval)
6582{
6583 ((void)0);
6584 return &((rb_proc_t *)(((struct RTypedData*)(procval))->data))->block;
6585}
6586static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
6587static inline const VALUE *vm_block_ep(const struct rb_block *block);
6588static inline const rb_iseq_t *
6589vm_proc_iseq(VALUE procval)
6590{
6591 return vm_block_iseq(vm_proc_block(procval));
6592}
6593static inline const VALUE *
6594vm_proc_ep(VALUE procval)
6595{
6596 return vm_block_ep(vm_proc_block(procval));
6597}
6598static inline const rb_iseq_t *
6599vm_block_iseq(const struct rb_block *block)
6600{
6601 switch (vm_block_type(block)) {
6602 case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
6603 case block_type_proc: return vm_proc_iseq(block->as.proc);
6604 case block_type_ifunc:
6605 case block_type_symbol: return ((void *)0);
6606 }
6607 __builtin_unreachable();
6608 return ((void *)0);
6609}
6610static inline const VALUE *
6611vm_block_ep(const struct rb_block *block)
6612{
6613 switch (vm_block_type(block)) {
6614 case block_type_iseq:
6615 case block_type_ifunc: return block->as.captured.ep;
6616 case block_type_proc: return vm_proc_ep(block->as.proc);
6617 case block_type_symbol: return ((void *)0);
6618 }
6619 __builtin_unreachable();
6620 return ((void *)0);
6621}
6622static inline VALUE
6623vm_block_self(const struct rb_block *block)
6624{
6625 switch (vm_block_type(block)) {
6626 case block_type_iseq:
6627 case block_type_ifunc:
6628 return block->as.captured.self;
6629 case block_type_proc:
6630 return vm_block_self(vm_proc_block(block->as.proc));
6631 case block_type_symbol:
6632 return ((VALUE)RUBY_Qundef);
6633 }
6634 __builtin_unreachable();
6635 return ((VALUE)RUBY_Qundef);
6636}
6637static inline VALUE
6638VM_BH_TO_SYMBOL(VALUE block_handler)
6639{
6640 ((void)0);
6641 return block_handler;
6642}
6643static inline VALUE
6644VM_BH_FROM_SYMBOL(VALUE symbol)
6645{
6646 ((void)0);
6647 return symbol;
6648}
6649static inline VALUE
6650VM_BH_TO_PROC(VALUE block_handler)
6651{
6652 ((void)0);
6653 return block_handler;
6654}
6655static inline VALUE
6656VM_BH_FROM_PROC(VALUE procval)
6657{
6658 ((void)0);
6659 return procval;
6660}
6664VALUE rb_proc_dup(VALUE self);
6666extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
6668);
6669void rb_vm_bugreport(const void *);
6671__attribute__ ((__noreturn__)) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
6672
6673
6678
6679
6682int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
6683void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
6686static inline VALUE
6687rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
6688{
6689 return rb_vm_make_proc_lambda(ec, captured, klass, 0);
6690}
6691static inline VALUE
6692rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
6693{
6694 return rb_vm_make_proc_lambda(ec, captured, klass, 1);
6695}
6699const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
6701void rb_vm_gvl_destroy(rb_vm_t *vm);
6703 const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
6704static void rb_vm_pop_frame(rb_execution_context_t *ec);
6709static inline void
6710rb_vm_living_threads_init(rb_vm_t *vm)
6711{
6712 list_head_init(&vm->waiting_fds);
6713 list_head_init(&vm->waiting_pids);
6714 list_head_init(&vm->workqueue);
6715 list_head_init(&vm->waiting_grps);
6716 list_head_init(&vm->living_threads);
6717 vm->living_thread_num = 0;
6718}
6719static inline void
6720rb_vm_living_threads_insert(rb_vm_t *vm, rb_thread_t *th)
6721{
6722 list_add_tail_(&vm->living_threads, &th->vmlt_node, "../ruby-2.7.7/vm_core.h" ":" "1703");
6723 vm->living_thread_num++;
6724}
6725static inline void
6726rb_vm_living_threads_remove(rb_vm_t *vm, rb_thread_t *th)
6727{
6728 list_del_(&th->vmlt_node, "../ruby-2.7.7/vm_core.h" ":" "1710");
6729 vm->living_thread_num--;
6730}
6731typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
6737int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
6739static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
6740void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
6741void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);static inline
6742void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
6743static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
6744VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
6745
6746
6751extern unsigned int ruby_vm_event_local_num;
6752
6753
6754static inline rb_thread_t *
6755rb_ec_thread_ptr(const rb_execution_context_t *ec)
6756{
6757 return ec->thread_ptr;
6758}
6759static inline rb_vm_t *
6760rb_ec_vm_ptr(const rb_execution_context_t *ec)
6761{
6762 const rb_thread_t *th = rb_ec_thread_ptr(ec);
6763 if (th) {
6764 return th->vm;
6765 }
6766 else {
6767 return ((void *)0);
6768 }
6769}
6770static inline rb_execution_context_t *
6771rb_current_execution_context(void)
6772{
6774}
6775static inline rb_thread_t *
6776rb_current_thread(void)
6777{
6778 const rb_execution_context_t *ec = rb_current_execution_context();
6779 return rb_ec_thread_ptr(ec);
6780}
6781static inline rb_vm_t *
6782rb_current_vm(void)
6783{
6784 ((void)0);
6785 return ruby_current_vm_ptr;
6786}
6787static inline void
6788rb_thread_set_current_raw(const rb_thread_t *th)
6789{
6791}
6792static inline void
6793rb_thread_set_current(rb_thread_t *th)
6794{
6795 if (th->vm->running_thread != th) {
6796 th->running_time_us = 0;
6797 }
6798 rb_thread_set_current_raw(th);
6799 th->vm->running_thread = th;
6800}
6801enum {
6805 TRAP_INTERRUPT_MASK = 0x08
6808int rb_signal_buff_size(void);
6809int rb_signal_exec(rb_thread_t *th, int sig);
6819void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
6822void rb_fiber_close(rb_fiber_t *fib);
6824static inline void
6825rb_vm_check_ints(rb_execution_context_t *ec)
6826{
6827 ((void)0);
6828 if ((__builtin_expect(!!(((ec)->interrupt_flag & ~(ec)->interrupt_mask)), 0))) {
6829 rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
6830 }
6831}
6836 VALUE self;
6844};
6847void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
6849void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
6850static inline void
6851rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
6852 VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
6853{
6855 ((void)0);
6856 trace_arg.event = flag;
6857 trace_arg.ec = ec;
6858 trace_arg.cfp = ec->cfp;
6859 trace_arg.self = self;
6860 trace_arg.id = id;
6866 rb_exec_event_hooks(&trace_arg, hooks, pop_p);
6867}
6868static inline rb_hook_list_t *
6869rb_vm_global_hooks(const rb_execution_context_t *ec)
6870{
6871 return &rb_ec_vm_ptr(ec)->global_hooks;
6872}
6873static inline void
6874rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
6875{
6876 do { const rb_event_flag_t flag_arg_ = (0x2000); rb_hook_list_t *hooks_arg_ = (rb_vm_global_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, !((VALUE)(eval_script) != ((VALUE)RUBY_Qnil)) ? (VALUE)iseq : __extension__ ({ const VALUE args_to_new_ary[] = {eval_script, (VALUE)iseq}; if (__builtin_constant_p(2)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (2), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (2)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); }), 0); } } while (0);
6877}
6878void rb_vm_trap_exit(rb_vm_t *vm);
6879
6880
6882extern VALUE rb_get_coverages(void);
6883extern void rb_set_coverages(VALUE, int, VALUE);
6884extern void rb_clear_coverages(void);
6885extern void rb_reset_coverages(void);
6887
6888
6889
6890
6891VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
6892ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
6893NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
6894int ruby_debug_print_indent(int level, int debug_level, int indent_level);
6896void ruby_set_debug_option(const char *str);
6897
6898
6899extern const int ruby_api_version[];
6900extern const ID rb_iseq_shared_exc_local_tbl[];
6901static inline size_t
6902rb_call_info_kw_arg_bytes(int keyword_len)
6903{
6905 keyword_len - 1, sizeof(VALUE), sizeof(struct rb_call_info_kw_arg),
6907}
6908static inline rb_snum_t
6909ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
6910{
6913 return cnt;
6914}
6915static inline VALUE *
6916ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
6917{
6919}
6920static inline void
6921ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
6922{
6924 iseq->body->variable.original_iseq = ((void *)0);
6925 if (ptr) {
6926 ruby_xfree(ptr);
6927 }
6928}
6929static inline VALUE *
6930ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
6931{
6932 return iseq->body->variable.original_iseq =
6933 ((VALUE*)ruby_xmalloc2((size_t)(size),sizeof(VALUE)));
6934}
6943 struct {
6946 } node;
6947 struct {
6948 struct iseq_compile_data_storage *storage_head;
6949 struct iseq_compile_data_storage *storage_current;
6950 } insn;
6955 unsigned int ci_index;
6956 unsigned int ci_kw_index;
6960};
6961static inline struct iseq_compile_data *
6962ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
6963{
6964 if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
6965 return iseq->aux.compile_data;
6966 }
6967 else {
6968 return ((void *)0);
6969 }
6970}
6971static inline void
6972ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
6973{
6974 iseq->aux.compile_data = (((struct iseq_compile_data*)ruby_xcalloc((size_t)(1),sizeof(struct iseq_compile_data))));
6975 iseq->flags |= ((VALUE)RUBY_FL_USER6);
6976}
6977static inline void
6978ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
6979{
6980 iseq->flags &= ~((VALUE)RUBY_FL_USER6);
6981 iseq->aux.compile_data = ((void *)0);
6982}
6983static inline rb_iseq_t *
6984iseq_imemo_alloc(void)
6985{
6986 return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
6987}
6991const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
6994int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line);
6996const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
6997unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
6998
6999
7004 VALUE locals, VALUE args,
7005 VALUE exception, VALUE body);
7007VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
7008VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
7009unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
7010void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
7011void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
7015const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
7021void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
7023const rb_iseq_t *rb_method_iseq(VALUE body);
7024const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
7026 unsigned int inline_const_cache: 1;
7027 unsigned int peephole_optimization: 1;
7028 unsigned int tailcall_optimization: 1;
7030 unsigned int operands_unification: 1;
7032 unsigned int stack_caching: 1;
7033 unsigned int frozen_string_literal: 1;
7035 unsigned int coverage_enabled: 1;
7037};
7041};
7044 CATCH_TYPE_RESCUE = (((VALUE)(1))<<1 | RUBY_FIXNUM_FLAG),
7045 CATCH_TYPE_ENSURE = (((VALUE)(2))<<1 | RUBY_FIXNUM_FLAG),
7046 CATCH_TYPE_RETRY = (((VALUE)(3))<<1 | RUBY_FIXNUM_FLAG),
7047 CATCH_TYPE_BREAK = (((VALUE)(4))<<1 | RUBY_FIXNUM_FLAG),
7048 CATCH_TYPE_REDO = (((VALUE)(5))<<1 | RUBY_FIXNUM_FLAG),
7049 CATCH_TYPE_NEXT = (((VALUE)(6))<<1 | RUBY_FIXNUM_FLAG)
7052 unsigned int start;
7053 unsigned int end;
7054 unsigned int cont;
7055 unsigned int sp;
7056};
7057struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[]; } __attribute__((packed));
7058static inline int
7059iseq_catch_table_bytes(int n)
7060{
7061 enum {
7062 catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
7063 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (struct iseq_catch_table, entries)) / catch_table_entry_size
7064 };
7065 if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
7066 return (int)(__builtin_offsetof (struct iseq_catch_table, entries) +
7067 n * catch_table_entry_size);
7068}
7071 unsigned int pos;
7072 unsigned int size;
7073 char buff[];
7074};
7098
7099
7100static inline void
7101vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
7102{
7103 vm_block_handler_verify(block_handler);
7105}
7106static inline void
7107pass_passed_block_handler(rb_execution_context_t *ec)
7108{
7109 VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
7110 vm_passed_block_handler_set(ec, block_handler);
7111 VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
7112}
7113int _setjmp(jmp_buf);
7114__attribute__ ((__noreturn__)) void _longjmp(jmp_buf, int);
7115typedef int error_t;
7116extern int *__errno (void);
7117extern __attribute__((dllimport)) const char * const _sys_errlist[];
7118extern __attribute__((dllimport)) int _sys_nerr;
7119extern __attribute__((dllimport)) const char * const sys_errlist[];
7120extern __attribute__((dllimport)) int sys_nerr;
7121extern __attribute__((dllimport)) char *program_invocation_name;
7122extern __attribute__((dllimport)) char *program_invocation_short_name;
7123static inline int
7124rb_ec_tag_state(const rb_execution_context_t *ec)
7125{
7126 enum ruby_tag_type state = ec->tag->state;
7127 ec->tag->state = RUBY_TAG_NONE;
7128 return state;
7129}
7130__attribute__ ((__noreturn__)) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
7131static inline void
7132rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
7133{
7134 ec->tag->state = st;
7135 __builtin_longjmp(((ec->tag->buf)),(1));
7136}
7137static inline VALUE
7138CREF_CLASS(const rb_cref_t *cref)
7139{
7140 return cref->klass;
7141}
7142static inline rb_cref_t *
7143CREF_NEXT(const rb_cref_t *cref)
7144{
7145 return cref->next;
7146}
7147static inline const rb_scope_visibility_t *
7148CREF_SCOPE_VISI(const rb_cref_t *cref)
7149{
7150 return &cref->scope_visi;
7151}
7152static inline VALUE
7153CREF_REFINEMENTS(const rb_cref_t *cref)
7154{
7155 return cref->refinements;
7156}
7157static inline void
7158CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
7159{
7160 __extension__({
7161 ;
7162 ; typeof(rb_obj_write((VALUE)(cref), (VALUE *)(&cref->refinements), (VALUE)(refs), "../ruby-2.7.7/eval_intern.h", 220)) unaligned_member_access_result = (rb_obj_write((VALUE)(cref), (VALUE *)(&cref->refinements), (VALUE)(refs), "../ruby-2.7.7/eval_intern.h", 220));
7163 ; unaligned_member_access_result; });
7164}
7165static inline int
7166CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
7167{
7168 return cref->flags & ((VALUE)RUBY_FL_USER5);
7169}
7170static inline void
7171CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
7172{
7173 cref->flags |= ((VALUE)RUBY_FL_USER5);
7174}
7175static inline int
7176CREF_OMOD_SHARED(const rb_cref_t *cref)
7177{
7178 return cref->flags & ((VALUE)RUBY_FL_USER6);
7179}
7180static inline void
7181CREF_OMOD_SHARED_SET(rb_cref_t *cref)
7182{
7183 cref->flags |= ((VALUE)RUBY_FL_USER6);
7184}
7185static inline void
7186CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
7187{
7188 cref->flags &= ~((VALUE)RUBY_FL_USER6);
7189}
7190enum {
7193 RAISED_NOMEMORY = 4
7198VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
7200__attribute__ ((__noreturn__)) void rb_method_name_error(VALUE, VALUE);
7201__attribute__ ((__noreturn__)) void rb_fiber_start(void);
7203__attribute__ ((__noreturn__)) void rb_print_undef_str(VALUE, VALUE);
7205__attribute__ ((__noreturn__)) void rb_vm_localjump_error(const char *,VALUE, int);
7206__attribute__ ((__noreturn__)) void rb_vm_jump_tag_but_local_jump(int);
7208rb_cref_t *rb_vm_cref(void);
7211void rb_vm_set_progname(VALUE filename);
7212void rb_thread_terminate_all(void);
7213VALUE rb_vm_cbase(void);
7215VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
7217static inline const char *
7218rb_char_next(const char *p)
7219{
7220 if (p) {
7221 int len = mblen(p, 0x7fffffff);
7222 p += len > 0 ? len : 1;
7223 }
7224 return p;
7225}
7226static inline void
7227translit_char(char *p, int from, int to)
7228{
7229 while (*p) {
7230 if ((unsigned char)*p == from)
7231 *p = to;
7232 p = rb_char_next(p);
7233 }
7234}
7236 const void * const func_ptr;
7237 const int argc;
7238 const int index;
7239 const char * const name;
7240};
7241void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
7242static inline void rb_builtin_function_check_arity0(VALUE (*f)(rb_execution_context_t *ec, VALUE self)){}
7243static inline void rb_builtin_function_check_arity1(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE)){}
7244static inline void rb_builtin_function_check_arity2(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE)){}
7245static inline void rb_builtin_function_check_arity3(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE)){}
7246static inline void rb_builtin_function_check_arity4(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE)){}
7247static inline void rb_builtin_function_check_arity5(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7248static inline void rb_builtin_function_check_arity6(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7249static inline void rb_builtin_function_check_arity7(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7250static inline void rb_builtin_function_check_arity8(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7251static inline void rb_builtin_function_check_arity9(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7252static inline void rb_builtin_function_check_arity10(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7253static inline void rb_builtin_function_check_arity11(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7254static inline void rb_builtin_function_check_arity12(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7255static inline void rb_builtin_function_check_arity13(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7256static inline void rb_builtin_function_check_arity14(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
7257static inline void rb_builtin_function_check_arity15(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}static inline
7258VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
7259__attribute__ ((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
7260static inline VALUE
7261rb_vm_lvar(rb_execution_context_t *ec, int index)
7262{
7263 return ec->cfp->ep[index];
7264}
7266 const char *feature;
7267 const unsigned char *bin;
7268 size_t bin_size;
7269};
7271 const char *classname;
7272 const char *methodname;
7273 const char *filename;
7275 volatile VALUE klass;
7276 volatile VALUE name;
7277};
7279VALUE rb_str_concat_literals(size_t, const VALUE*);
7280__attribute__ ((__visibility__("default"))) extern
7282__attribute__ ((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
7283static inline const VALUE *
7284VM_EP_LEP(const VALUE *ep)
7285{
7286 while (!VM_ENV_LOCAL_P(ep)) {
7287 ep = VM_ENV_PREV_EP(ep);
7288 }
7289 return ep;
7290}
7291static inline const rb_control_frame_t *
7292rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
7293{
7294 if (!ep) {
7295 return ((void *)0);
7296 }
7297 else {
7298 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
7299 while (cfp < eocfp) {
7300 if (cfp->ep == ep) {
7301 return cfp;
7302 }
7303 cfp = ((cfp)+1);
7304 }
7305 return ((void *)0);
7306 }
7307}static inline
7308const VALUE *
7309rb_vm_ep_local_ep(const VALUE *ep)
7310{
7311 return VM_EP_LEP(ep);
7312}
7313__attribute__ ((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
7314static inline const VALUE *
7315VM_CF_LEP(const rb_control_frame_t * const cfp)
7316{
7317 return VM_EP_LEP(cfp->ep);
7318}
7319static inline const VALUE *
7320VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
7321{
7322 return VM_ENV_PREV_EP(cfp->ep);
7323}
7324__attribute__ ((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
7325static inline VALUE
7326VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
7327{
7328 const VALUE *ep = VM_CF_LEP(cfp);
7329 return VM_ENV_BLOCK_HANDLER(ep);
7330}static inline
7331int
7332rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
7333{
7334 return VM_FRAME_CFRAME_KW_P(cfp);
7335}static inline
7336int
7337rb_vm_cframe_empty_keyword_p(const rb_control_frame_t *cfp)
7338{
7339 return VM_FRAME_CFRAME_EMPTY_KW_P(cfp);
7340}static inline
7341VALUE
7342rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
7343{
7344 return VM_CF_BLOCK_HANDLER(cfp);
7345}
7346static struct rb_captured_block *
7347VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
7348{
7349 ((void)0);
7350 return (struct rb_captured_block *)&cfp->self;
7351}
7352static rb_control_frame_t *
7353VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
7354{
7355 rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
7356 ((void)0);
7357 ((void)0);
7358 return cfp;
7359}
7360static int
7361VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
7362{
7363 const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
7364 return ((void *)((block_handler) & ~0x03)) == captured;
7365}
7366static VALUE
7367vm_passed_block_handler(rb_execution_context_t *ec)
7368{
7370 ec->passed_block_handler = 0;
7371 vm_block_handler_verify(block_handler);
7372 return block_handler;
7373}
7374static rb_cref_t *
7375vm_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)
7376{
7377 VALUE refinements = ((VALUE)RUBY_Qnil);
7378 int omod_shared = 0;
7379 rb_cref_t *cref;
7380 union {
7382 VALUE value;
7383 } scope_visi;
7384 scope_visi.visi.method_visi = visi;
7385 scope_visi.visi.module_func = module_func;
7386 if (prev_cref != ((void *)0) && prev_cref != (void *)1 ) {
7387 refinements = CREF_REFINEMENTS(prev_cref);
7388 if (!!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
7389 omod_shared = 1;
7390 CREF_OMOD_SHARED_SET(prev_cref);
7391 }
7392 }
7393 cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
7394 if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
7395 if (omod_shared) CREF_OMOD_SHARED_SET(cref);
7396 return cref;
7397}
7398static rb_cref_t *
7399vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
7400{
7401 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0);
7402}
7403static rb_cref_t *
7404vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
7405{
7406 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1);
7407}
7408static int
7409ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
7410{
7411 return ((((VALUE)(key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) ? ST_DELETE : ST_CONTINUE;
7412}
7413static rb_cref_t *
7414vm_cref_dup(const rb_cref_t *cref)
7415{
7416 VALUE klass = CREF_CLASS(cref);
7417 const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
7418 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
7419 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
7420 new_cref = vm_cref_new(klass, visi->method_visi, visi->module_func, next_cref, pushed_by_eval);
7421 if (!!((VALUE)(CREF_REFINEMENTS(cref)) != ((VALUE)RUBY_Qnil))) {
7422 VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
7423 rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
7424 CREF_REFINEMENTS_SET(new_cref, ref);
7425 CREF_OMOD_SHARED_UNSET(new_cref);
7426 }
7427 return new_cref;
7428}
7429static rb_cref_t *
7430vm_cref_new_toplevel(rb_execution_context_t *ec)
7431{
7432 rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void *)0), 0);
7433 VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
7434 if (top_wrapper) {
7435 cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0);
7436 }
7437 return cref;
7438}static inline
7439rb_cref_t *
7440rb_vm_cref_new_toplevel(void)
7441{
7442 return vm_cref_new_toplevel(rb_current_execution_context());
7443}
7444static void
7445vm_cref_dump(const char *mesg, const rb_cref_t *cref)
7446{
7447 fprintf(((__getreent())->_stderr), "vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
7448 while (cref) {
7449 fprintf(((__getreent())->_stderr), "= cref| klass: %s\n", (!(((struct RBasic*)(rb_class_path(CREF_CLASS(cref))))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.ary : ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.heap.ptr));
7450 cref = CREF_NEXT(cref);
7451 }
7452}static inline
7453void
7454rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
7455{
7456 *((const VALUE **)&dst->as.captured.ep) = ep;
7457 rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "../ruby-2.7.7/vm.c", 318);
7458}
7459static void
7460vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
7461{
7462 const rb_env_t *env = (rb_env_t *)envval;
7463 __extension__({
7464 ;
7465 ; typeof(rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.7.7/vm.c", 325)) unaligned_member_access_result = (rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.7.7/vm.c", 325));
7466 ; unaligned_member_access_result; });
7467 rb_vm_block_ep_update(bindval, &bind->block, env->ep);
7468}
7469static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
7471 int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
7473static 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);
7652void rb_debug_counter_show_results(const char *msg);
7653
7654
7655size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
7656void ruby_debug_counter_reset(void);
7657void ruby_debug_counter_show_at_exit(int enable);
7658
7659
7667 char on;
7670 char debug;
7672 unsigned int wait;
7673 unsigned int min_calls;
7676};
7681};
7683
7684
7685extern struct mjit_options mjit_opts;
7686extern _Bool mjit_call_p;
7691
7692
7693extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname);
7694extern void mjit_init(const struct mjit_options *opts);
7695extern void mjit_gc_start_hook(void);
7696extern void mjit_gc_exit_hook(void);
7697extern void mjit_free_iseq(const rb_iseq_t *iseq);
7699extern void mjit_mark(void);
7700extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec);
7701extern void mjit_cont_free(struct mjit_cont *cont);
7702extern void mjit_add_class_serial(rb_serial_t class_serial);
7703extern void mjit_remove_class_serial(rb_serial_t class_serial);
7704static inline int
7705mjit_target_iseq_p(struct rb_iseq_constant_body *body)
7706{
7707 return (body->type == ISEQ_TYPE_METHOD || body->type == ISEQ_TYPE_BLOCK)
7708 && body->iseq_size < 1000;
7709}
7710static inline VALUE
7711mjit_exec(rb_execution_context_t *ec)
7712{
7713 const rb_iseq_t *iseq;
7714 struct rb_iseq_constant_body *body;
7715 long unsigned total_calls;
7716 mjit_func_t func;
7717 if (!mjit_call_p)
7718 return ((VALUE)RUBY_Qundef);
7719 ((void)0);
7720 iseq = ec->cfp->iseq;
7721 body = iseq->body;
7722 total_calls = ++body->total_calls;
7723 func = body->jit_func;
7724 if ((__builtin_expect(!!((uintptr_t)func <= (uintptr_t)LAST_JIT_ISEQ_FUNC), 0))) {
7725 ((void)0);
7726 switch ((enum rb_mjit_iseq_func)func) {
7728 ((void)0);
7729 if (total_calls == mjit_opts.min_calls && mjit_target_iseq_p(body)) {
7730 ((void)0);
7732 if ((__builtin_expect(!!(mjit_opts.wait), 0))) {
7733 return rb_mjit_wait_call(ec, body);
7734 }
7735 }
7736 return ((VALUE)RUBY_Qundef);
7738 ((void)0);
7739 return ((VALUE)RUBY_Qundef);
7741 ((void)0);
7742 return ((VALUE)RUBY_Qundef);
7743 default:
7744 break;
7745 }
7746 }
7747 ((void)0);
7748 ((void)0);
7749 return func(ec, ec->cfp);
7750}
7752
7753
7758
7759
7760static inline void
7761CC_SET_FASTPATH(CALL_CACHE cc, vm_call_handler func, _Bool enabled)
7762{
7763 if ((__builtin_expect(!!(enabled), 1))) {
7764 cc->call = func;
7765 }
7766}
7767static inline void
7768CC_SET_ME(CALL_CACHE cc, const rb_callable_method_entry_t *me)
7769{
7770 cc->me = me;
7772}
7773static inline struct vm_throw_data *
7774THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
7775{
7776 struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
7777 obj->throw_state = st;
7778 return obj;
7779}
7780static inline VALUE
7781THROW_DATA_VAL(const struct vm_throw_data *obj)
7782{
7783 ((void)0);
7784 return obj->throw_obj;
7785}
7786static inline const rb_control_frame_t *
7787THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
7788{
7789 ((void)0);
7790 return obj->catch_frame;
7791}
7792static inline int
7793THROW_DATA_STATE(const struct vm_throw_data *obj)
7794{
7795 ((void)0);
7796 return obj->throw_state;
7797}
7798static inline int
7799THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
7800{
7801 ((void)0);
7802 return obj->flags & ((VALUE)RUBY_FL_USER4);
7803}
7804static inline void
7805THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
7806{
7807 ((void)0);
7808 obj->catch_frame = cfp;
7809}
7810static inline void
7811THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
7812{
7813 ((void)0);
7814 obj->throw_state = st;
7815}
7816static inline void
7817THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
7818{
7819 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(obj)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(obj))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)((VALUE)(obj)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO))) &&
7820 THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
7821 obj->flags |= ((VALUE)RUBY_FL_USER4);
7822 }
7823}
7824static _Bool
7825vm_call_iseq_optimizable_p(const struct rb_call_info *ci, const struct rb_call_cache *cc)
7826{
7827 return !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
7828 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED);
7829}
7830typedef long OFFSET;
7831typedef unsigned long lindex_t;
8043typedef enum {
8052 int line;
8059void rb_free_const_table(struct rb_id_table *tbl);
8064int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
8069 VALUE ivptr[];
8070};
8071struct st_table *rb_ivar_generic_ivtbl(void);
8073extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
8076 int argc, const VALUE *argv, int priv);
8077static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
8078static VALUE
8079ruby_vm_special_exception_copy(VALUE exc)
8080{
8081 VALUE e = rb_obj_alloc(rb_class_real((((struct RBasic*)(exc))->klass)));
8083 return e;
8084}
8085__attribute__ ((__noreturn__)) static void ec_stack_overflow(rb_execution_context_t *ec, int);
8086static void
8087ec_stack_overflow(rb_execution_context_t *ec, int setup)
8088{
8089 VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
8091 if (setup) {
8093 mesg = ruby_vm_special_exception_copy(mesg);
8094 rb_ivar_set(mesg, idBt, at);
8095 rb_ivar_set(mesg, idBt_locations, at);
8096 }
8097 ec->errinfo = mesg;
8098 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
8099}
8100__attribute__ ((__noreturn__)) static void vm_stackoverflow(void);
8101static void
8102vm_stackoverflow(void)
8103{
8104 ec_stack_overflow(rb_current_execution_context(), 1);
8105}
8106__attribute__ ((__noreturn__)) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
8107static void
8109{
8110 if (crit || rb_during_gc()) {
8112 ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
8113 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
8114 }
8115 ec_stack_overflow(ec, 1);
8116}
8117static inline rb_control_frame_t *
8118vm_push_frame(rb_execution_context_t *ec,
8119 const rb_iseq_t *iseq,
8120 VALUE type,
8121 VALUE self,
8122 VALUE specval,
8123 VALUE cref_or_me,
8124 const VALUE *pc,
8125 VALUE *sp,
8126 int local_size,
8127 int stack_max)
8128{
8129 rb_control_frame_t *const cfp = ((ec->cfp)-1);
8130 ;
8131 ((void)0);
8132 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*(sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)((sp) + (local_size + stack_max)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
8133 ;
8134 ec->cfp = cfp;
8135 cfp->pc = (VALUE *)pc;
8136 cfp->iseq = (rb_iseq_t *)iseq;
8137 cfp->self = self;
8138 cfp->block_code = ((void *)0);
8139 for (int i=0; i < local_size; i++) {
8140 *sp++ = ((VALUE)RUBY_Qnil);
8141 }
8142 ((void)0);
8143 ((void)0);
8144 ((void)0);
8145 *sp++ = cref_or_me;
8146 *sp++ = specval ;
8147 *sp = type;
8148 cfp->ep = sp;
8149 cfp->__bp__ = cfp->sp = sp + 1;
8150 if (0 == 2) {
8151 rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
8152 }
8153 return cfp;
8154}
8155static inline int
8156vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
8157{
8158 VALUE flags = ep[( 0)];
8159 if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
8160 if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
8161 rb_vm_check_ints(ec);
8162 ec->cfp = ((cfp)+1);
8163 return flags & VM_FRAME_FLAG_FINISH;
8164}
8165static void
8166rb_vm_pop_frame(rb_execution_context_t *ec)
8167{
8168 vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
8169}
8170static inline VALUE
8171rb_arity_error_new(int argc, int min, int max)
8172{
8173 VALUE err_mess = 0;
8174 if (min == max) {
8175 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min);
8176 }
8177 else if (max == (-1)) {
8178 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min);
8179 }
8180 else {
8181 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max);
8182 }
8183 return rb_exc_new_str(rb_eArgError, err_mess);
8184}
8185static void
8186rb_error_arity(int argc, int min, int max)
8187{
8188 rb_exc_raise(rb_arity_error_new(argc, min, max));
8189}
8190__attribute__ ((__noinline__)) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
8191static void
8192vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
8193{
8194 rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
8195 VM_FORCE_WRITE(&ep[index], v);
8196 VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
8197 ((void)0);
8198}
8199static inline void
8200vm_env_write(const VALUE *ep, int index, VALUE v)
8201{
8202 VALUE flags = ep[( 0)];
8203 if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
8204 VM_STACK_ENV_WRITE(ep, index, v);
8205 }
8206 else {
8207 vm_env_write_slowpath(ep, index, v);
8208 }
8209}
8210static VALUE
8211rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
8212{
8213 if (block_handler == 0) {
8214 return ((VALUE)RUBY_Qnil);
8215 }
8216 else {
8217 switch (vm_block_handler_type(block_handler)) {
8220 return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
8222 return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
8224 return VM_BH_TO_PROC(block_handler);
8225 default:
8226 __builtin_unreachable();
8227 }
8228 }
8229}
8230static inline struct vm_svar *
8231lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
8232{
8233 VALUE svar;
8234 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
8235 svar = lep[(-2)];
8236 }
8237 else {
8238 svar = ec->root_svar;
8239 }
8240 ((void)0);
8241 return (struct vm_svar *)svar;
8242}
8243static inline void
8244lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
8245{
8246 ((void)0);
8247 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
8248 vm_env_write(lep, (-2), (VALUE)svar);
8249 }
8250 else {
8251 __extension__({
8252;
8253; typeof(rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), (VALUE *)(&ec->root_svar), (VALUE)(svar), "../ruby-2.7.7/vm_insnhelper.c", 486)) unaligned_member_access_result = (rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), (VALUE *)(&ec->root_svar), (VALUE)(svar), "../ruby-2.7.7/vm_insnhelper.c", 486));
8254; unaligned_member_access_result; });
8255 }
8256}
8257static VALUE
8258lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
8259{
8260 const struct vm_svar *svar = lep_svar(ec, lep);
8261 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
8262 switch (key) {
8263 case VM_SVAR_LASTLINE:
8264 return svar->lastline;
8265 case VM_SVAR_BACKREF:
8266 return svar->backref;
8267 default: {
8268 const VALUE ary = svar->others;
8269 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
8270 return ((VALUE)RUBY_Qnil);
8271 }
8272 else {
8273 return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
8274 }
8275 }
8276 }
8277}
8278static struct vm_svar *
8279svar_new(VALUE obj)
8280{
8282}
8283static void
8284lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
8285{
8286 struct vm_svar *svar = lep_svar(ec, lep);
8287 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
8288 lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
8289 }
8290 switch (key) {
8291 case VM_SVAR_LASTLINE:
8292 __extension__({
8293;
8294; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->lastline), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 532)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->lastline), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 532));
8295; unaligned_member_access_result; });
8296 return;
8297 case VM_SVAR_BACKREF:
8298 __extension__({
8299;
8300; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->backref), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 535)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->backref), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 535));
8301; unaligned_member_access_result; });
8302 return;
8303 default: {
8304 VALUE ary = svar->others;
8305 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
8306 __extension__({
8307 ;
8308 ; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.7/vm_insnhelper.c", 541)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.7/vm_insnhelper.c", 541));
8309 ; unaligned_member_access_result; });
8310 }
8312 }
8313 }
8314}
8315static inline VALUE
8317{
8318 VALUE val;
8319 if (type == 0) {
8320 val = lep_svar_get(ec, lep, key);
8321 }
8322 else {
8323 VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
8324 if (type & 0x01) {
8325 switch (type >> 1) {
8326 case '&':
8328 break;
8329 case '`':
8331 break;
8332 case '\'':
8334 break;
8335 case '+':
8337 break;
8338 default:
8339 rb_bug("unexpected back-ref");
8340 }
8341 }
8342 else {
8343 val = rb_reg_nth_match((int)(type >> 1), backref);
8344 }
8345 }
8346 return val;
8347}
8348__attribute__ ((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
8350check_method_entry(VALUE obj, int can_be_svar)
8351{
8352 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
8353 switch (imemo_type(obj)) {
8354 case imemo_ment:
8356 case imemo_cref:
8357 return ((void *)0);
8358 case imemo_svar:
8359 if (can_be_svar) {
8360 return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
8361 }
8362 default:
8363 return ((void *)0);
8364 }
8365}
8366static const rb_callable_method_entry_t *
8367rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
8368{
8369 const VALUE *ep = cfp->ep;
8371 while (!VM_ENV_LOCAL_P(ep)) {
8372 if ((me = check_method_entry(ep[(-2)], 0)) != ((void *)0)) return me;
8373 ep = VM_ENV_PREV_EP(ep);
8374 }
8375 return check_method_entry(ep[(-2)], 1);
8376}
8377static rb_cref_t *
8378method_entry_cref(rb_callable_method_entry_t *me)
8379{
8380 switch (me->def->type) {
8382 return me->def->body.iseq.cref;
8383 default:
8384 return ((void *)0);
8385 }
8386}
8387__attribute__ ((__pure__)) static rb_cref_t *check_cref(VALUE, int);
8388static rb_cref_t *
8389check_cref(VALUE obj, int can_be_svar)
8390{
8391 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
8392 switch (imemo_type(obj)) {
8393 case imemo_ment:
8394 return method_entry_cref((rb_callable_method_entry_t *)obj);
8395 case imemo_cref:
8396 return (rb_cref_t *)obj;
8397 case imemo_svar:
8398 if (can_be_svar) {
8399 return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
8400 }
8401 default:
8402 return ((void *)0);
8403 }
8404}
8405static inline rb_cref_t *
8406vm_env_cref(const VALUE *ep)
8407{
8408 rb_cref_t *cref;
8409 while (!VM_ENV_LOCAL_P(ep)) {
8410 if ((cref = check_cref(ep[(-2)], 0)) != ((void *)0)) return cref;
8411 ep = VM_ENV_PREV_EP(ep);
8412 }
8413 return check_cref(ep[(-2)], 1);
8414}
8415static int
8416is_cref(const VALUE v, int can_be_svar)
8417{
8418 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
8419 switch (imemo_type(v)) {
8420 case imemo_cref:
8421 return 1;
8422 case imemo_svar:
8423 if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
8424 default:
8425 break;
8426 }
8427 }
8428 return 0;
8429}
8430static int
8431vm_env_cref_by_cref(const VALUE *ep)
8432{
8433 while (!VM_ENV_LOCAL_P(ep)) {
8434 if (is_cref(ep[(-2)], 0)) return 1;
8435 ep = VM_ENV_PREV_EP(ep);
8436 }
8437 return is_cref(ep[(-2)], 1);
8438}
8439static rb_cref_t *
8440cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
8441{
8442 const VALUE v = *vptr;
8443 rb_cref_t *cref, *new_cref;
8444 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
8445 switch (imemo_type(v)) {
8446 case imemo_cref:
8447 cref = (rb_cref_t *)v;
8448 new_cref = vm_cref_dup(cref);
8449 if (parent) {
8450 __extension__({
8451 ;
8452 ; typeof(rb_obj_write((VALUE)(parent), (VALUE *)(vptr), (VALUE)(new_cref), "../ruby-2.7.7/vm_insnhelper.c", 716)) unaligned_member_access_result = (rb_obj_write((VALUE)(parent), (VALUE *)(vptr), (VALUE)(new_cref), "../ruby-2.7.7/vm_insnhelper.c", 716));
8453 ; unaligned_member_access_result; });
8454 }
8455 else {
8456 VM_FORCE_WRITE(vptr, (VALUE)new_cref);
8457 }
8458 return (rb_cref_t *)new_cref;
8459 case imemo_svar:
8460 if (can_be_svar) {
8461 return cref_replace_with_duplicated_cref_each_frame((const VALUE *)&((struct vm_svar *)v)->cref_or_me, 0, v);
8462 }
8463 case imemo_ment:
8464 rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
8465 default:
8466 break;
8467 }
8468 }
8469 return 0;
8470}
8471static rb_cref_t *
8472vm_cref_replace_with_duplicated_cref(const VALUE *ep)
8473{
8474 if (vm_env_cref_by_cref(ep)) {
8475 rb_cref_t *cref;
8476 VALUE envval;
8477 while (!VM_ENV_LOCAL_P(ep)) {
8478 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
8479 if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void *)0)) {
8480 return cref;
8481 }
8482 ep = VM_ENV_PREV_EP(ep);
8483 }
8484 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
8485 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
8486 }
8487 else {
8488 rb_bug("vm_cref_dup: unreachable");
8489 }
8490}
8491static rb_cref_t *
8492vm_get_cref(const VALUE *ep)
8493{
8494 rb_cref_t *cref = vm_env_cref(ep);
8495 if (cref != ((void *)0)) {
8496 return cref;
8497 }
8498 else {
8499 rb_bug("vm_get_cref: unreachable");
8500 }
8501}
8502static rb_cref_t *
8503vm_ec_cref(const rb_execution_context_t *ec)
8504{
8506 if (cfp == ((void *)0)) {
8507 return ((void *)0);
8508 }
8509 return vm_get_cref(cfp->ep);
8510}
8511static const rb_cref_t *
8512vm_get_const_key_cref(const VALUE *ep)
8513{
8514 const rb_cref_t *cref = vm_get_cref(ep);
8515 const rb_cref_t *key_cref = cref;
8516 while (cref) {
8517 if (((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0) ||
8518 ((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_USER6)))):0)) {
8519 return key_cref;
8520 }
8521 cref = CREF_NEXT(cref);
8522 }
8523 return ((void *)0);
8524}static inline
8525void
8526rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
8527{
8528 rb_cref_t *new_cref;
8529 while (cref) {
8530 if (CREF_CLASS(cref) == old_klass) {
8531 new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
8532 *new_cref_ptr = new_cref;
8533 return;
8534 }
8535 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
8536 cref = CREF_NEXT(cref);
8537 *new_cref_ptr = new_cref;
8538 new_cref_ptr = (rb_cref_t **)&new_cref->next;
8539 }
8540 *new_cref_ptr = ((void *)0);
8541}
8542static rb_cref_t *
8543vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval)
8544{
8545 rb_cref_t *prev_cref = ((void *)0);
8546 if (ep) {
8547 prev_cref = vm_env_cref(ep);
8548 }
8549 else {
8550 rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
8551 if (cfp) {
8552 prev_cref = vm_env_cref(cfp->ep);
8553 }
8554 }
8555 return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval);
8556}
8557static inline VALUE
8558vm_get_cbase(const VALUE *ep)
8559{
8560 const rb_cref_t *cref = vm_get_cref(ep);
8562 while (cref) {
8563 if ((klass = CREF_CLASS(cref)) != 0) {
8564 break;
8565 }
8566 cref = CREF_NEXT(cref);
8567 }
8568 return klass;
8569}
8570static inline VALUE
8571vm_get_const_base(const VALUE *ep)
8572{
8573 const rb_cref_t *cref = vm_get_cref(ep);
8575 while (cref) {
8576 if (!CREF_PUSHED_BY_EVAL(cref) &&
8577 (klass = CREF_CLASS(cref)) != 0) {
8578 break;
8579 }
8580 cref = CREF_NEXT(cref);
8581 }
8582 return klass;
8583}
8584static inline void
8585vm_check_if_namespace(VALUE klass)
8586{
8587 if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS))) && !( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
8588 rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
8589 }
8590}
8591static inline void
8592vm_ensure_not_refinement_module(VALUE self)
8593{
8594 if (( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(self))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((self) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((self) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((self) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((self) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(self)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(self))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_MODULE))) && ((!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((self)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
8595 rb_warn("not defined at the refinement, but at the outer class/module");
8596 }
8597}
8598static inline VALUE
8599vm_get_iclass(rb_control_frame_t *cfp, VALUE klass)
8600{
8601 return klass;
8602}
8603static inline VALUE
8604vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
8605{
8607 VALUE val;
8608 if (orig_klass == ((VALUE)RUBY_Qnil) && allow_nil) {
8609 const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
8610 const rb_cref_t *cref;
8612 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
8613 root_cref = CREF_NEXT(root_cref);
8614 }
8615 cref = root_cref;
8616 while (cref && CREF_NEXT(cref)) {
8617 if (CREF_PUSHED_BY_EVAL(cref)) {
8618 klass = ((VALUE)RUBY_Qnil);
8619 }
8620 else {
8621 klass = CREF_CLASS(cref);
8622 }
8623 cref = CREF_NEXT(cref);
8624 if (!!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
8625 VALUE av, am = 0;
8626 rb_const_entry_t *ce;
8627 search_continue:
8628 if ((ce = rb_const_lookup(klass, id))) {
8630 val = ce->value;
8631 if (val == ((VALUE)RUBY_Qundef)) {
8632 if (am == klass) break;
8633 am = klass;
8634 if (is_defined) return 1;
8635 if (rb_autoloading_value(klass, id, &av, ((void *)0))) return av;
8637 goto search_continue;
8638 }
8639 else {
8640 if (is_defined) {
8641 return 1;
8642 }
8643 else {
8644 return val;
8645 }
8646 }
8647 }
8648 }
8649 }
8650 if (root_cref && !!((VALUE)(CREF_CLASS(root_cref)) != ((VALUE)RUBY_Qnil))) {
8651 klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
8652 }
8653 else {
8654 klass = rb_class_of((VALUE)(ec->cfp->self));
8655 }
8656 if (is_defined) {
8657 return rb_const_defined(klass, id);
8658 }
8659 else {
8660 return rb_const_get(klass, id);
8661 }
8662 }
8663 else {
8664 vm_check_if_namespace(orig_klass);
8665 if (is_defined) {
8666 return rb_public_const_defined_from(orig_klass, id);
8667 }
8668 else {
8669 return rb_public_const_get_from(orig_klass, id);
8670 }
8671 }
8672}
8673static inline VALUE
8674vm_get_cvar_base(const rb_cref_t *cref, rb_control_frame_t *cfp)
8675{
8676 VALUE klass;
8677 if (!cref) {
8678 rb_bug("vm_get_cvar_base: no cref");
8679 }
8680 while (CREF_NEXT(cref) &&
8681 (!((VALUE)(CREF_CLASS(cref)) != ((VALUE)RUBY_Qnil)) || ((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0) ||
8682 CREF_PUSHED_BY_EVAL(cref))) {
8683 cref = CREF_NEXT(cref);
8684 }
8685 if (!CREF_NEXT(cref)) {
8686 rb_warn("class variable access from toplevel");
8687 }
8688 klass = vm_get_iclass(cfp, CREF_CLASS(cref));
8689 if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
8690 rb_raise(rb_eTypeError, "no class variables available");
8691 }
8692 return klass;
8693}
8694static VALUE
8695vm_search_const_defined_class(const VALUE cbase, ID id)
8696{
8697 if (rb_const_defined_at(cbase, id)) return cbase;
8698 if (cbase == rb_cObject) {
8699 VALUE tmp = RCLASS_SUPER(cbase);
8700 while (tmp) {
8701 if (rb_const_defined_at(tmp, id)) return tmp;
8702 tmp = RCLASS_SUPER(tmp);
8703 }
8704 }
8705 return 0;
8706}
8707__attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, IVC, struct rb_call_cache *, int);
8708static inline VALUE
8709vm_getivar(VALUE obj, ID id, IVC ic, struct rb_call_cache *cc, int is_attr)
8710{
8711 VALUE val = ((VALUE)RUBY_Qundef);
8712 if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
8713 }
8714 else if ((__builtin_expect(!!(is_attr ? (cc->aux.index > 0) : (ic->ic_serial == (((struct RClass*)(((struct RBasic*)(obj))->klass))->class_serial))), 1))) {
8715 st_index_t index = !is_attr ? ic->index : (cc->aux.index - 1);
8716 ((void)0);
8717 if ((__builtin_expect(!!((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT), 1)) &&
8718 (__builtin_expect(!!(index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv)), 1))) {
8719 val = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr)[index];
8720 }
8721 else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
8722 struct gen_ivtbl *ivtbl;
8724 (__builtin_expect(!!(index < ivtbl->numiv), 1))) {
8725 val = ivtbl->ivptr[index];
8726 }
8727 }
8728 goto ret;
8729 }
8730 else {
8731 struct st_table *iv_index_tbl;
8732 st_index_t numiv;
8733 VALUE *ivptr;
8735 if ((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT) {
8736 iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
8737 numiv = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv);
8738 ivptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
8739 fill:
8740 if (iv_index_tbl) {
8741 if (rb_st_lookup(iv_index_tbl, id, &index)) {
8742 if (!is_attr) {
8743 ic->index = index;
8744 ic->ic_serial = (((struct RClass*)(((struct RBasic*)(obj))->klass))->class_serial);
8745 }
8746 else {
8747 cc->aux.index = (int)index + 1;
8748 }
8749 if (index < numiv) {
8750 val = ivptr[index];
8751 }
8752 }
8753 }
8754 }
8755 else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
8756 struct gen_ivtbl *ivtbl;
8758 numiv = ivtbl->numiv;
8759 ivptr = ivtbl->ivptr;
8760 iv_index_tbl = ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl);
8761 goto fill;
8762 }
8763 }
8764 else {
8765 goto general_path;
8766 }
8767 ret:
8768 if ((__builtin_expect(!!(val != ((VALUE)RUBY_Qundef)), 1))) {
8769 return val;
8770 }
8771 else {
8772 if (!is_attr && !(((VALUE)((*rb_ruby_verbose_ptr())) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
8773 rb_warning("instance variable %""l""i" "\v"" not initialized", rb_id_quote_unprintable(id));
8774 }
8775 return ((VALUE)RUBY_Qnil);
8776 }
8777 }
8778 general_path:
8779 ((void)0);
8780 if (is_attr) {
8781 return rb_attr_get(obj, id);
8782 }
8783 else {
8784 return rb_ivar_get(obj, id);
8785 }
8786}
8788vm_setivar(VALUE obj, ID id, VALUE val, IVC ic, struct rb_call_cache *cc, int is_attr));
8789static inline VALUE
8790vm_setivar(VALUE obj, ID id, VALUE val, IVC ic, struct rb_call_cache *cc, int is_attr) {
8791 do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!((!(!(((VALUE)(frozen_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(frozen_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(frozen_obj))->flags & RUBY_T_MASK) != RUBY_T_NODE) || (((struct RBasic*)(frozen_obj))->flags&RUBY_FL_FREEZE))), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
8792 if ((__builtin_expect(!!(( ((RUBY_T_OBJECT) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_OBJECT) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_OBJECT) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_OBJECT) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_OBJECT) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_OBJECT) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_OBJECT) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_OBJECT)))), 1))) {
8793 VALUE klass = ((struct RBasic*)(obj))->klass;
8795 if ((__builtin_expect(!!((!is_attr && (ic->ic_serial == (((struct RClass*)(klass))->class_serial))) || ( is_attr && (cc->aux.index > 0))), 1))) {
8796 VALUE *ptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
8797 index = !is_attr ? ic->index : cc->aux.index-1;
8798 if ((index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv))) {
8799 __extension__({
8800 ;
8801 ; typeof(rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 1127)) unaligned_member_access_result = (rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 1127));
8802 ; unaligned_member_access_result; });
8803 ((void)0);
8804 return val;
8805 }
8806 }
8807 else {
8808 struct st_table *iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
8810 if (!is_attr) {
8811 ic->index = index;
8812 ic->ic_serial = (((struct RClass*)(klass))->class_serial);
8813 }
8814 else if (index >= 0x7fffffff) {
8815 rb_raise(rb_eArgError, "too many instance variables");
8816 }
8817 else {
8818 cc->aux.index = (int)(index + 1);
8819 }
8820 }
8821 }
8822 }
8823 else {
8824 ((void)0);
8825 }
8826 ((void)0);
8827 return rb_ivar_set(obj, id, val);
8828}
8830vm_getinstancevariable(VALUE obj, ID id, IVC ic));
8831static inline VALUE
8832vm_getinstancevariable(VALUE obj, ID id, IVC ic) {
8833 return vm_getivar(obj, id, ic, ((void *)0), 0);
8834}
8835ALWAYS_INLINE(static inline void
8836vm_setinstancevariable(VALUE obj, ID id, VALUE val, IVC ic));
8837static inline void
8838vm_setinstancevariable(VALUE obj, ID id, VALUE val, IVC ic) {
8839 vm_setivar(obj, id, val, ic, 0, 0);
8840}
8841static VALUE
8842vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
8843{
8844 if ((((int)(long)(err))&RUBY_FIXNUM_FLAG)) {
8845 ec->tag->state = ((int)rb_fix2int((VALUE)(err)));
8846 }
8847 else if (((((VALUE)(err)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(err) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(err) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(err))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
8848 ec->tag->state = RUBY_TAG_THROW;
8849 }
8850 else if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(err)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(err)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(err)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(err))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)((VALUE)(err)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
8851 ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
8852 }
8853 else {
8854 ec->tag->state = RUBY_TAG_RAISE;
8855 }
8856 return err;
8857}
8858static VALUE
8859vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
8860 const int flag, const VALUE throwobj)
8861{
8862 const rb_control_frame_t *escape_cfp = ((void *)0);
8863 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
8864 if (flag != 0) {
8865 }
8866 else if (state == RUBY_TAG_BREAK) {
8867 int is_orphan = 1;
8868 const VALUE *ep = ((((reg_cfp)->ep)));
8869 const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
8870 escape_cfp = reg_cfp;
8871 while (base_iseq->body->type != ISEQ_TYPE_BLOCK) {
8872 if (escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
8873 escape_cfp = ((escape_cfp)+1);
8874 ep = escape_cfp->ep;
8875 base_iseq = escape_cfp->iseq;
8876 }
8877 else {
8878 ep = VM_ENV_PREV_EP(ep);
8879 base_iseq = base_iseq->body->parent_iseq;
8880 escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
8881 ((void)0);
8882 }
8883 }
8884 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
8885 is_orphan = 0;
8886 state = RUBY_TAG_RETURN;
8887 }
8888 else {
8889 ep = VM_ENV_PREV_EP(ep);
8890 while (escape_cfp < eocfp) {
8891 if (escape_cfp->ep == ep) {
8892 const rb_iseq_t *const iseq = escape_cfp->iseq;
8893 const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded;
8894 const struct iseq_catch_table *const ct = iseq->body->catch_table;
8895 unsigned int i;
8896 if (!ct) break;
8897 for (i=0; i < ct->size; i++) {
8898 const struct iseq_catch_table_entry *const entry =
8899 __extension__({
8900 ;
8901 ; typeof(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]);
8902 ; unaligned_member_access_result; });
8903 if (entry->type == CATCH_TYPE_BREAK &&
8904 entry->iseq == base_iseq &&
8905 entry->start < epc && entry->end >= epc) {
8906 if (entry->cont == epc) {
8907 is_orphan = 0;
8908 }
8909 break;
8910 }
8911 }
8912 break;
8913 }
8914 escape_cfp = ((escape_cfp)+1);
8915 }
8916 }
8917 if (is_orphan) {
8918 rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
8919 }
8920 }
8921 else if (state == RUBY_TAG_RETRY) {
8922 const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
8923 escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
8924 }
8925 else if (state == RUBY_TAG_RETURN) {
8926 const VALUE *current_ep = ((((reg_cfp)->ep)));
8927 const VALUE *target_lep = VM_EP_LEP(current_ep);
8928 int in_class_frame = 0;
8929 int toplevel = 1;
8930 escape_cfp = reg_cfp;
8931 while (escape_cfp < eocfp) {
8932 const VALUE *lep = VM_CF_LEP(escape_cfp);
8933 if (!target_lep) {
8934 target_lep = lep;
8935 }
8936 if (lep == target_lep &&
8937 VM_FRAME_RUBYFRAME_P(escape_cfp) &&
8938 escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
8939 in_class_frame = 1;
8940 target_lep = 0;
8941 }
8942 if (lep == target_lep) {
8943 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
8944 toplevel = 0;
8945 if (in_class_frame) {
8946 goto valid_return;
8947 }
8948 else {
8949 const VALUE *tep = current_ep;
8950 while (target_lep != tep) {
8951 if (escape_cfp->ep == tep) {
8952 goto valid_return;
8953 }
8954 tep = VM_ENV_PREV_EP(tep);
8955 }
8956 }
8957 }
8958 else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
8959 switch (escape_cfp->iseq->body->type) {
8960 case ISEQ_TYPE_TOP:
8961 case ISEQ_TYPE_MAIN:
8962 if (toplevel) {
8963 if (in_class_frame) goto unexpected_return;
8964 goto valid_return;
8965 }
8966 break;
8967 case ISEQ_TYPE_EVAL:
8968 case ISEQ_TYPE_CLASS:
8969 toplevel = 0;
8970 break;
8971 default:
8972 break;
8973 }
8974 }
8975 }
8976 if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
8977 goto valid_return;
8978 }
8979 escape_cfp = ((escape_cfp)+1);
8980 }
8981 unexpected_return:;
8982 rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
8983 valid_return:;
8984 }
8985 else {
8986 rb_bug("isns(throw): unsupported throw type");
8987 }
8988 ec->tag->state = state;
8989 return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
8990}
8991static VALUE
8993 rb_num_t throw_state, VALUE throwobj)
8994{
8995 const int state = (int)(throw_state & VM_THROW_STATE_MASK);
8996 const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
8997 if (state != 0) {
8998 return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
8999 }
9000 else {
9001 return vm_throw_continue(ec, throwobj);
9002 }
9003}
9004static inline void
9005vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
9006{
9007 int is_splat = flag & 0x01;
9008 rb_num_t space_size = num + is_splat;
9009 VALUE *base = sp - 1;
9010 const VALUE *ptr;
9011 rb_num_t len;
9012 const VALUE obj = ary;
9013 if (!( ((RUBY_T_ARRAY) == RUBY_T_FIXNUM) ? (((int)(long)(ary))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ARRAY) == RUBY_T_TRUE) ? ((ary) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ARRAY) == RUBY_T_FALSE) ? ((ary) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ARRAY) == RUBY_T_NIL) ? ((ary) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ARRAY) == RUBY_T_UNDEF) ? ((ary) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ARRAY) == RUBY_T_SYMBOL) ? ((((VALUE)(ary)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ARRAY) == RUBY_T_FLOAT) ? ( ((((int)(long)(ary))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_ARRAY))) && !((VALUE)(ary = rb_check_array_type(ary)) != ((VALUE)RUBY_Qnil))) {
9014 ary = obj;
9015 ptr = &ary;
9016 len = 1;
9017 }
9018 else {
9019 ptr = rb_array_const_ptr_transient(ary);
9020 len = (rb_num_t)rb_array_len(ary);
9021 }
9022 if (space_size == 0) {
9023 }
9024 else if (flag & 0x02) {
9025 rb_num_t i = 0, j;
9026 if (len < num) {
9027 for (i=0; i<num-len; i++) {
9028 *base++ = ((VALUE)RUBY_Qnil);
9029 }
9030 }
9031 for (j=0; i<num; i++, j++) {
9032 VALUE v = ptr[len - j - 1];
9033 *base++ = v;
9034 }
9035 if (is_splat) {
9036 *base = rb_ary_new_from_values(len - j, ptr);
9037 }
9038 }
9039 else {
9040 rb_num_t i;
9041 VALUE *bptr = &base[space_size - 1];
9042 for (i=0; i<num; i++) {
9043 if (len <= i) {
9044 for (; i<num; i++) {
9045 *bptr-- = ((VALUE)RUBY_Qnil);
9046 }
9047 break;
9048 }
9049 *bptr-- = ptr[i];
9050 }
9051 if (is_splat) {
9052 if (num > len) {
9053 *bptr = rb_ary_new();
9054 }
9055 else {
9056 *bptr = rb_ary_new_from_values(len - num, ptr + num);
9057 }
9058 }
9059 }
9060 (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
9061}
9062static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
9063__attribute__((__artificial__))
9064static inline vm_call_handler
9065calccall(const struct rb_call_data *cd, const rb_callable_method_entry_t *me)
9066{
9067 const struct rb_call_info *ci = &cd->ci;
9068 const struct rb_call_cache *cc = &cd->cc;
9069 if ((__builtin_expect(!!(!me), 0))) {
9070 ((void)0);
9071 return vm_call_general;
9072 }
9073 else if ((__builtin_expect(!!(cc->me != me), 1))) {
9074 ((void)0);
9075 return vm_call_general;
9076 }
9078 ((void)0);
9079 return vm_call_general;
9080 }
9081 else if (((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) != METHOD_VISI_PUBLIC) &&
9082 !(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
9083 ((void)0);
9084 return vm_call_general;
9085 }
9086 else {
9087 ((void)0);
9088 (void)(cc->call != vm_call_general);
9089 return cc->call;
9090 }
9091}
9092__attribute__ ((__visibility__("default"))) extern void
9094;
9095static inline _Bool
9096vm_cache_check_for_class_serial(struct rb_call_cache *cc, rb_serial_t class_serial)
9097{
9098 int i;
9099 rb_serial_t j;
9100 for (i = 0; i < ((int)(sizeof(cc->class_serial) / sizeof((cc->class_serial)[0]))); i++) {
9101 j = cc->class_serial[i];
9102 if (! j) {
9103 break;
9104 }
9105 else if (j != class_serial) {
9106 continue;
9107 }
9108 else if (! i) {
9109 return 1;
9110 }
9111 else {
9112 goto hit;
9113 }
9114 }
9115 ((void)0);
9116 return 0;
9117 hit:
9118 for (; i > 0; i--) {
9119 cc->class_serial[i] = cc->class_serial[i - 1];
9120 }
9121 cc->class_serial[0] = j;
9122 ((__builtin_object_size((&cc->aux), 0) != (size_t)-1) ? __builtin___memset_chk((&cc->aux), 0, sizeof(cc->aux)*(size_t)(1), __builtin_object_size((&cc->aux), 0)) : __memset_ichk((&cc->aux), 0, sizeof(cc->aux)*(size_t)(1)));
9123 return 1;
9124}
9125static void
9126vm_search_method_fastpath(struct rb_call_data *cd, VALUE klass)
9127{
9128 struct rb_call_cache *cc = &cd->cc;
9129 if ((__builtin_expect(!!(((ruby_vm_global_method_state) == cc->method_state) && vm_cache_check_for_class_serial(cc, (((struct RClass*)(klass))->class_serial))), 1))) {
9130 ((void)0);
9131 ((void)0);
9132 return;
9133 }
9134 ((void)0);
9136}
9137static void
9138vm_search_method(struct rb_call_data *cd, VALUE recv)
9139{
9140 VALUE klass = rb_class_of((VALUE)(recv));
9141 ((void)0);
9142 ((void)0);
9143 vm_search_method_fastpath(cd, klass);
9144}
9145static inline int
9146check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)())
9147{
9148 if (me && me->def->type == VM_METHOD_TYPE_CFUNC &&
9149 me->def->body.cfunc.func == func) {
9150 return 1;
9151 }
9152 else {
9153 return 0;
9154 }
9155}
9156static inline int
9157vm_method_cfunc_is(CALL_DATA cd, VALUE recv, VALUE (*func)())
9158{
9159 vm_search_method(cd, recv);
9160 return check_cfunc(cd->cc.me, func);
9161}
9162static VALUE
9163opt_equal_fallback(VALUE recv, VALUE obj, CALL_DATA cd)
9164{
9165 if (vm_method_cfunc_is(cd, recv, rb_obj_equal)) {
9166 return recv == obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9167 }
9168 return ((VALUE)RUBY_Qundef);
9169}
9170static inline _Bool
9171FIXNUM_2_P(VALUE a, VALUE b)
9172{
9173 long x = a;
9174 long y = b;
9175 long z = x & y & 1;
9176 return z == 1;
9177}
9178static inline _Bool
9179FLONUM_2_P(VALUE a, VALUE b)
9180{
9181 long x = a;
9182 long y = b;
9183 long z = ((x ^ 2) | (y ^ 2)) & 3;
9184 return !z;
9185}
9186static inline int
9187comparable_by_identity(VALUE recv, VALUE obj)
9188{
9189 if (FIXNUM_2_P(recv, obj)) {
9190 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1))) != 0) * 2 - 1;
9191 }
9192 if (FLONUM_2_P(recv, obj)) {
9193 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1))) != 0) * 2 - 1;
9194 }
9195 if (((((VALUE)(recv)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(recv))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
9196 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
9197 }
9198 return 0;
9199}
9200static
9201inline
9202VALUE
9203opt_eq_func(VALUE recv, VALUE obj, CALL_DATA cd)
9204{
9205 switch (comparable_by_identity(recv, obj)) {
9206 case 1:
9207 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9208 case -1:
9209 goto fallback;
9210 }
9211 if (0) {
9212 }
9213 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
9214 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
9215 return rb_float_equal(recv, obj);
9216 }
9217 }
9218 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
9219 if (recv == obj) return ((VALUE)RUBY_Qtrue);
9220 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
9221 return rb_str_eql_internal(recv, obj);
9222 }
9223 }
9224 fallback:
9225 return opt_equal_fallback(recv, obj, cd);
9226}
9227static
9228inline
9229VALUE
9230opt_eql_func(VALUE recv, VALUE obj, CALL_DATA cd)
9231{
9232 switch (comparable_by_identity(recv, obj)) {
9233 case 1:
9234 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9235 case -1:
9236 goto fallback;
9237 }
9238 if (0) {
9239 }
9240 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
9241 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
9242 return rb_float_eql(recv, obj);
9243 }
9244 }
9245 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString)) {
9246 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
9247 return rb_str_eql(recv, obj);
9248 }
9249 }
9250 fallback:
9251 return opt_equal_fallback(recv, obj, cd);
9252}
9253VALUE
9255;static inline
9256VALUE
9257rb_eql_opt(VALUE obj1, VALUE obj2)
9258{
9259 struct rb_call_data cd = { .ci = { .mid = idEqlP, }, };
9260 return opt_eql_func(obj1, obj2, &cd);
9261}
9262extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
9263static VALUE
9264check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
9265{
9266 switch (type) {
9268 return pattern;
9270 if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
9271 rb_raise(rb_eTypeError, "class or module required for rescue clause");
9272 }
9275 rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(pattern)), idEqq, ((void *)0));
9276 if (me) {
9277 return rb_vm_call0(ec, pattern, idEqq, 1, &target, me, 0);
9278 }
9279 else {
9280 return __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, pattern, idEqq, 1, &target); });
9281 }
9282 }
9283 default:
9284 rb_bug("check_match: unreachable");
9285 }
9286}
9287static inline VALUE
9288double_cmp_lt(double a, double b)
9289{
9290 ;
9291 return a < b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9292}
9293static inline VALUE
9294double_cmp_le(double a, double b)
9295{
9296 ;
9297 return a <= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9298}
9299static inline VALUE
9300double_cmp_gt(double a, double b)
9301{
9302 ;
9303 return a > b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9304}
9305static inline VALUE
9306double_cmp_ge(double a, double b)
9307{
9308 ;
9309 return a >= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
9310}
9311static inline VALUE *
9312vm_base_ptr(const rb_control_frame_t *cfp)
9313{
9314 return cfp->__bp__;
9315}
9316__attribute__ ((__noreturn__)) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
9317__attribute__ ((__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);
9318__attribute__ ((__noreturn__)) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
9320static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
9321 enum method_missing_reason call_status, int kw_splat);
9322__attribute__ ((__visibility__("default"))) extern
9326 int argc;
9332};
9337static inline void
9338arg_rest_dup(struct args_info *args)
9339{
9340 if (!args->rest_dupped) {
9341 args->rest = rb_ary_dup(args->rest);
9342 args->rest_dupped = 1;
9343 }
9344}
9345static inline int
9346args_argc(struct args_info *args)
9347{
9348 if (args->rest == ((VALUE)RUBY_Qfalse)) {
9349 return args->argc;
9350 }
9351 else {
9352 return args->argc + rb_long2int_inline(rb_array_len(args->rest)) - args->rest_index;
9353 }
9354}
9355static inline void
9356args_extend(struct args_info *args, const int min_argc)
9357{
9358 int i;
9359 if (args->rest) {
9360 arg_rest_dup(args);
9361 ((void)0);
9362 for (i=args->argc + rb_long2int_inline(rb_array_len(args->rest)); i<min_argc; i++) {
9363 rb_ary_push(args->rest, ((VALUE)RUBY_Qnil));
9364 }
9365 }
9366 else {
9367 for (i=args->argc; i<min_argc; i++) {
9368 args->argv[args->argc++] = ((VALUE)RUBY_Qnil);
9369 }
9370 }
9371}
9372static inline void
9373args_reduce(struct args_info *args, int over_argc)
9374{
9375 if (args->rest) {
9376 const long len = rb_array_len(args->rest);
9377 if (len > over_argc) {
9378 arg_rest_dup(args);
9379 rb_ary_resize(args->rest, len - over_argc);
9380 return;
9381 }
9382 else {
9383 args->rest = ((VALUE)RUBY_Qfalse);
9384 over_argc -= len;
9385 }
9386 }
9387 ((void)0);
9388 args->argc -= over_argc;
9389}
9390static inline int
9391args_check_block_arg0(struct args_info *args)
9392{
9393 VALUE ary = ((VALUE)RUBY_Qnil);
9394 if (args->rest && rb_array_len(args->rest) == 1) {
9395 VALUE arg0 = (rb_array_const_ptr_transient(args->rest)[0]);
9396 ary = rb_check_array_type(arg0);
9397 }
9398 else if (args->argc == 1) {
9399 VALUE arg0 = args->argv[0];
9400 ary = rb_check_array_type(arg0);
9401 args->argv[0] = arg0;
9402 }
9403 if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
9404 args->rest = ary;
9405 args->rest_index = 0;
9406 args->argc = 0;
9407 return 1;
9408 }
9409 return 0;
9410}
9411static inline void
9412args_copy(struct args_info *args)
9413{
9414 if (args->rest != ((VALUE)RUBY_Qfalse)) {
9415 int argc = args->argc;
9416 args->argc = 0;
9417 arg_rest_dup(args);
9418 while (args->rest_index > 0 && argc > 0) {
9419 do { const VALUE _ary = (args->rest); const VALUE _v = (args->argv[--argc]); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
9420 ;
9421 ; typeof(rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[--args->rest_index]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 154)) unaligned_member_access_result = (rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[--args->rest_index]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 154));
9422 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); } while (0);
9423 }
9424 while (argc > 0) {
9425 rb_ary_unshift(args->rest, args->argv[--argc]);
9426 }
9427 }
9428 else if (args->argc > 0) {
9429 args->rest = rb_ary_new_from_values(args->argc, args->argv);
9430 args->rest_index = 0;
9431 args->rest_dupped = 1;
9432 args->argc = 0;
9433 }
9434}
9435static inline const VALUE *
9436args_rest_argv(struct args_info *args)
9437{
9438 return rb_array_const_ptr_transient(args->rest) + args->rest_index;
9439}
9440static inline VALUE
9441args_rest_array(struct args_info *args)
9442{
9443 VALUE ary;
9444 if (args->rest) {
9445 ary = rb_ary_behead(args->rest, args->rest_index);
9446 args->rest_index = 0;
9447 args->rest = 0;
9448 }
9449 else {
9450 ary = rb_ary_new();
9451 }
9452 return ary;
9453}
9454static int
9455keyword_hash_symbol_other_iter(st_data_t key, st_data_t val, st_data_t arg)
9456{
9457 *(int*)arg |= ((((VALUE)((VALUE)key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) ? 1 : 2;
9458 if ((*(int*)arg & 3) == 3) {
9459 return ST_STOP;
9460 }
9461 return ST_CONTINUE;
9462}
9463static int
9464keyword_hash_symbol_other(VALUE hash)
9465{
9466 int symbol_other = 0;
9467 rb_hash_stlike_foreach(hash, keyword_hash_symbol_other_iter, (st_data_t)(&symbol_other));
9468 return symbol_other;
9469}
9470static int
9471keyword_hash_split_iter(st_data_t key, st_data_t val, st_data_t arg)
9472{
9473 if (((((VALUE)((VALUE)key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
9474 rb_hash_aset((VALUE)arg, (VALUE)key, (VALUE)val);
9475 return ST_DELETE;
9476 }
9477 return ST_CONTINUE;
9478}
9479static void
9480keyword_hash_split(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr)
9481{
9482 *kw_hash_ptr = rb_hash_new();
9483 rb_hash_stlike_foreach(*rest_hash_ptr, keyword_hash_split_iter, (st_data_t)(*kw_hash_ptr));
9484}
9485static int
9486keyword_hash_p(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr, int check_only_symbol)
9487{
9488 *rest_hash_ptr = rb_check_hash_type(*kw_hash_ptr);
9489 if (!!((VALUE)(*rest_hash_ptr) != ((VALUE)RUBY_Qnil))) {
9490 if (check_only_symbol) {
9491 switch (keyword_hash_symbol_other(*rest_hash_ptr)) {
9492 case 0:
9493 case 1:
9494 break;
9495 case 2:
9496 *kw_hash_ptr = ((VALUE)RUBY_Qnil);
9497 return 0;
9498 case 3:
9499 *rest_hash_ptr = rb_hash_dup(*rest_hash_ptr);
9500 keyword_hash_split(kw_hash_ptr, rest_hash_ptr);
9501 return 1;
9502 }
9503 }
9504 *kw_hash_ptr = *rest_hash_ptr;
9505 *rest_hash_ptr = ((VALUE)RUBY_Qfalse);
9506 return 1;
9507 }
9508 else {
9509 *kw_hash_ptr = ((VALUE)RUBY_Qnil);
9510 return 0;
9511 }
9512}
9513static VALUE
9514args_pop_keyword_hash(struct args_info *args, VALUE *kw_hash_ptr, int check_only_symbol)
9515{
9516 VALUE rest_hash;
9517 if (args->rest == ((VALUE)RUBY_Qfalse)) {
9518 from_argv:
9519 ((void)0);
9520 *kw_hash_ptr = args->argv[args->argc-1];
9521 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
9522 if (rest_hash) {
9523 args->argv[args->argc-1] = rest_hash;
9524 }
9525 else {
9526 args->argc--;
9527 return 1;
9528 }
9529 }
9530 }
9531 else {
9532 long len = rb_array_len(args->rest);
9533 if (len > 0) {
9534 *kw_hash_ptr = (rb_array_const_ptr_transient(args->rest)[len - 1]);
9535 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
9536 if (rest_hash) {
9537 do { const VALUE _ary = (args->rest); const VALUE _v = (rest_hash); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
9538 ;
9539 ; typeof(rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 291)) unaligned_member_access_result = (rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 291));
9540 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); } while (0);
9541 }
9542 else {
9543 arg_rest_dup(args);
9544 rb_ary_pop(args->rest);
9545 return 1;
9546 }
9547 }
9548 }
9549 else {
9550 goto from_argv;
9551 }
9552 }
9553 return 0;
9554}
9555static int
9556args_kw_argv_to_hash(struct args_info *args)
9557{
9558 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
9559 const VALUE *const passed_keywords = kw_arg->keywords;
9560 const int kw_len = kw_arg->keyword_len;
9561 VALUE h = rb_hash_new_with_size(kw_len);
9562 const int kw_start = args->argc - kw_len;
9563 const VALUE * const kw_argv = args->argv + kw_start;
9564 int i;
9565 args->argc = kw_start + 1;
9566 for (i=0; i<kw_len; i++) {
9567 rb_hash_aset(h, passed_keywords[i], kw_argv[i]);
9568 }
9569 args->argv[args->argc - 1] = h;
9570 return args->argc;
9571}
9572static void
9573args_stored_kw_argv_to_hash(struct args_info *args)
9574{
9575 int i;
9576 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
9577 const VALUE *const passed_keywords = kw_arg->keywords;
9578 const int passed_keyword_len = kw_arg->keyword_len;
9579 VALUE h = rb_hash_new_with_size(passed_keyword_len);
9580 for (i=0; i<passed_keyword_len; i++) {
9581 rb_hash_aset(h, passed_keywords[i], args->kw_argv[i]);
9582 }
9583 args->kw_argv = ((void *)0);
9584 if (args->rest) {
9585 arg_rest_dup(args);
9586 rb_ary_push(args->rest, h);
9587 }
9588 else {
9589 args->argv[args->argc++] = h;
9590 }
9591}
9592static inline void
9593args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
9594{
9595 if (args->argc >= argc) {
9596 args->argc -= argc;
9597 args->argv += argc;
9598 }
9599 else {
9600 int i, j;
9601 const VALUE *argv = args_rest_argv(args);
9602 for (i=args->argc, j=0; i<argc; i++, j++) {
9603 locals[i] = argv[j];
9604 }
9605 args->rest_index += argc - args->argc;
9606 args->argc = 0;
9607 }
9608}
9609static inline void
9610args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
9611{
9612 long len;
9613 len = rb_array_len(args->rest);
9614 ((__builtin_object_size((locals), 0) != (size_t)-1) ? __builtin___memcpy_chk((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((locals), 0)) : __memcpy_ichk((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), sizeof(VALUE)*(size_t)(argc)));
9615 rb_ary_resize(args->rest, len - argc);
9616}
9617static inline int
9618args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
9619{
9620 int i;
9621 if (args->argc >= opt_max) {
9622 args->argc -= opt_max;
9623 args->argv += opt_max;
9624 i = opt_max;
9625 }
9626 else {
9627 int j;
9628 i = args->argc;
9629 args->argc = 0;
9630 if (args->rest) {
9631 int len = rb_long2int_inline(rb_array_len(args->rest));
9632 const VALUE *argv = rb_array_const_ptr_transient(args->rest);
9633 for (; i<opt_max && args->rest_index < len; i++, args->rest_index++) {
9634 locals[i] = argv[args->rest_index];
9635 }
9636 }
9637 for (j=i; j<opt_max; j++) {
9638 locals[j] = ((VALUE)RUBY_Qnil);
9639 }
9640 }
9641 return i;
9642}
9643static inline void
9644args_setup_rest_parameter(struct args_info *args, VALUE *locals)
9645{
9646 *locals = args_rest_array(args);
9647}
9648static VALUE
9649make_unknown_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
9650{
9651 int i;
9653 for (i=0; i<passed_keyword_len; i++) {
9654 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
9655 rb_ary_push(obj, passed_keywords[i]);
9656 }
9657 }
9658 return obj;
9659}
9660static VALUE
9661make_rest_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
9662{
9663 int i;
9664 VALUE obj = rb_hash_new_with_size(passed_keyword_len);
9665 for (i=0; i<passed_keyword_len; i++) {
9666 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
9667 rb_hash_aset(obj, passed_keywords[i], kw_argv[i]);
9668 }
9669 }
9670 return obj;
9671}
9672static inline int
9673args_setup_kw_parameters_lookup(const ID key, VALUE *ptr, const VALUE *const passed_keywords, VALUE *passed_values, const int passed_keyword_len)
9674{
9675 int i;
9676 const VALUE keyname = (rb_id2sym(key));
9677 for (i=0; i<passed_keyword_len; i++) {
9678 if (keyname == passed_keywords[i]) {
9679 *ptr = passed_values[i];
9680 passed_values[i] = ((VALUE)RUBY_Qundef);
9681 return 1;
9682 }
9683 }
9684 return 0;
9685}
9686static void
9687args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
9688 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
9689 VALUE *const locals)
9690{
9691 const ID *acceptable_keywords = iseq->body->param.keyword->table;
9692 const int req_key_num = iseq->body->param.keyword->required_num;
9693 const int key_num = iseq->body->param.keyword->num;
9694 const VALUE * const default_values = iseq->body->param.keyword->default_values;
9695 VALUE missing = 0;
9696 int i, di, found = 0;
9697 int unspecified_bits = 0;
9698 VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
9699 for (i=0; i<req_key_num; i++) {
9700 ID key = acceptable_keywords[i];
9701 if (args_setup_kw_parameters_lookup(key, &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
9702 found++;
9703 }
9704 else {
9705 if (!missing) missing = rb_ary_tmp_new(1);
9706 rb_ary_push(missing, (rb_id2sym(key)));
9707 }
9708 }
9709 if (missing) argument_kw_error(ec, iseq, "missing", missing);
9710 for (di=0; i<key_num; i++, di++) {
9711 if (args_setup_kw_parameters_lookup(acceptable_keywords[i], &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
9712 found++;
9713 }
9714 else {
9715 if (default_values[di] == ((VALUE)RUBY_Qundef)) {
9716 locals[i] = ((VALUE)RUBY_Qnil);
9717 if ((__builtin_expect(!!(i < (32-1)), 1))) {
9718 unspecified_bits |= 0x01 << di;
9719 }
9720 else {
9721 if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
9722 int j;
9723 unspecified_bits_value = rb_hash_new();
9724 for (j=0; j<(32-1); j++) {
9725 if (unspecified_bits & (0x01 << j)) {
9726 rb_hash_aset(unspecified_bits_value, (((VALUE)(j))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
9727 }
9728 }
9729 }
9730 rb_hash_aset(unspecified_bits_value, (((VALUE)(di))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
9731 }
9732 }
9733 else {
9734 locals[i] = default_values[di];
9735 }
9736 }
9737 }
9738 if (iseq->body->param.flags.has_kwrest) {
9739 const int rest_hash_index = key_num + 1;
9740 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
9741 }
9742 else {
9743 if (found != passed_keyword_len) {
9744 VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
9745 argument_kw_error(ec, iseq, "unknown", keys);
9746 }
9747 }
9748 if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
9749 unspecified_bits_value = (((VALUE)(unspecified_bits))<<1 | RUBY_FIXNUM_FLAG);
9750 }
9751 locals[key_num] = unspecified_bits_value;
9752}
9753static inline void
9754args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals)
9755{
9756 locals[0] = !((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) ? rb_hash_new() : rb_hash_dup(keyword_hash);
9757}
9758static inline void
9759args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
9760{
9761 VALUE block_handler = calling->block_handler;
9762 *locals = rb_vm_bh_to_procval(ec, block_handler);
9763}
9767 int argc;
9768};
9769static int
9770fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
9771{
9772 struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
9773 int i = arg->argc++;
9774 arg->keys[i] = (VALUE)key;
9775 arg->vals[i] = (VALUE)val;
9776 return ST_CONTINUE;
9777}
9778static inline int
9779ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq)
9780{
9781 if (!(iseq->body->param.flags.has_kw) &&
9783 keyword_hash = rb_check_hash_type(keyword_hash);
9784 if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) && (((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)) == 0)) {
9785 return 1;
9786 }
9787 }
9788 return 0;
9789}
9791static st_table *caller_to_callees = 0;
9792static VALUE
9793rb_warn_check(const rb_execution_context_t * const ec, const rb_iseq_t *const iseq)
9794{
9796 if (!iseq) return 0;
9799 if (!cfp) return 0;
9800 const st_data_t caller = (st_data_t)cfp->pc;
9801 if (!caller_to_callees) {
9802 caller_to_callees = rb_st_init_numtable();
9803 }
9804 st_data_t val;
9805 if (rb_st_lookup(caller_to_callees, caller, &val)) {
9806 st_table *callees;
9807 if (val & 1) {
9808 val &= ~(st_data_t)1;
9809 if (val == callee) return 1;
9810 callees = rb_st_init_numtable();
9811 rb_st_insert(callees, val, 1);
9812 }
9813 else {
9814 callees = (st_table *) val;
9815 if (rb_st_lookup((callees),(callee),(st_data_t *)0)) return 1;
9816 }
9817 rb_st_insert(callees, callee, 1);
9818 rb_st_insert(caller_to_callees, caller, (st_data_t) callees);
9819 }
9820 else {
9821 rb_st_insert(caller_to_callees, caller, callee | 1);
9822 }
9823 return 0;
9824}
9825static inline void
9826rb_warn_keyword_to_last_hash(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
9827{
9828 if (rb_warn_check(ec, iseq)) return;
9829 VALUE name, loc;
9830 if (calling->recv == ((VALUE)RUBY_Qundef)) {
9831 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
9832 return;
9833 }
9834 name = rb_id2str(ci->mid);
9835 loc = rb_iseq_location(iseq);
9836 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
9837 rb_warn("Passing the keyword argument for `%""l""i" "\v""' as the last hash parameter is deprecated",
9838 name);
9839 }
9840 else {
9841 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
9842 if (name) {
9843 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9844 "The called method `%""l""i" "\v""' is defined here", name);
9845 }
9846 else {
9847 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9848 "The called method is defined here");
9849 }
9850 }
9851}
9852static inline void
9853rb_warn_split_last_hash_to_keyword(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
9854{
9855 if (rb_warn_check(ec, iseq)) return;
9856 VALUE name, loc;
9857 name = rb_id2str(ci->mid);
9858 loc = rb_iseq_location(iseq);
9859 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
9860 rb_warn("Splitting the last argument for `%""l""i" "\v""' into positional and keyword parameters is deprecated",
9861 name);
9862 }
9863 else {
9864 rb_warn("Splitting the last argument into positional and keyword parameters is deprecated");
9865 if (calling->recv != ((VALUE)RUBY_Qundef)) {
9866 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9867 "The called method `%""l""i" "\v""' is defined here", name);
9868 }
9869 else {
9870 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9871 "The called method is defined here");
9872 }
9873 }
9874}
9875static inline void
9876rb_warn_last_hash_to_keyword(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
9877{
9878 if (rb_warn_check(ec, iseq)) return;
9879 VALUE name, loc;
9880 name = rb_id2str(ci->mid);
9881 loc = rb_iseq_location(iseq);
9882 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
9883 rb_warn("Using the last argument for `%""l""i" "\v""' as keyword parameters is deprecated; maybe ** should be added to the call",
9884 name);
9885 }
9886 else {
9887 rb_warn("Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call");
9888 if (calling->recv != ((VALUE)RUBY_Qundef)) {
9889 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9890 "The called method `%""l""i" "\v""' is defined here", name);
9891 }
9892 else {
9893 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
9894 "The called method is defined here");
9895 }
9896 }
9897}
9898static int
9899setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
9900 struct rb_calling_info *const calling,
9901 const struct rb_call_info *ci,
9902 VALUE * const locals, const enum arg_setup_type arg_setup_type)
9903{
9905 const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1);
9906 int given_argc;
9907 int kw_splat = 0;
9908 unsigned int kw_flag = ci->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
9909 int opt_pc = 0, allow_autosplat = !kw_flag;
9910 struct args_info args_body, *args;
9911 VALUE keyword_hash = ((VALUE)RUBY_Qnil);
9912 VALUE * const orig_sp = ec->cfp->sp;
9913 unsigned int i;
9914 int remove_empty_keyword_hash = 1;
9915 VALUE flag_keyword_hash = 0;
9916 ;
9917 for (i=calling->argc; i<iseq->body->param.size; i++) {
9918 locals[i] = ((VALUE)RUBY_Qnil);
9919 }
9920 ec->cfp->sp = &locals[i];
9921 args = &args_body;
9922 given_argc = args->argc = calling->argc;
9923 args->argv = locals;
9924 args->rest_dupped = 0;
9925 if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
9926 args->kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
9927 if (iseq->body->param.flags.has_kw) {
9928 int kw_len = args->kw_arg->keyword_len;
9929 args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len)), _Alignof(VALUE) * 8);
9930 args->argc -= kw_len;
9931 given_argc -= kw_len;
9932 ((__builtin_object_size((args->kw_argv), 0) != (size_t)-1) ? __builtin___memcpy_chk((args->kw_argv), (locals + args->argc), sizeof(VALUE)*(size_t)(kw_len), __builtin_object_size((args->kw_argv), 0)) : __memcpy_ichk((args->kw_argv), (locals + args->argc), sizeof(VALUE)*(size_t)(kw_len)));
9933 }
9934 else {
9935 args->kw_argv = ((void *)0);
9936 given_argc = args_kw_argv_to_hash(args);
9937 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
9938 }
9939 }
9940 else {
9941 args->kw_arg = ((void *)0);
9942 args->kw_argv = ((void *)0);
9943 }
9944 if (kw_flag && iseq->body->param.flags.ruby2_keywords) {
9945 remove_empty_keyword_hash = 0;
9946 }
9947 if (ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
9948 VALUE rest_last = 0;
9949 int len;
9950 args->rest = locals[--args->argc];
9951 args->rest_index = 0;
9952 len = rb_long2int_inline(rb_array_len(args->rest));
9953 given_argc += len - 1;
9954 rest_last = (rb_array_const_ptr_transient(args->rest)[len - 1]);
9955 if (!kw_flag && len > 0) {
9956 if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(rest_last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((rest_last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((rest_last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((rest_last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((rest_last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(rest_last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(rest_last))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
9957 (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
9958 rest_last = rb_hash_dup(rest_last);
9959 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
9961 remove_empty_keyword_hash = 0;
9962 }
9963 }
9964 else {
9965 rest_last = 0;
9966 }
9967 }
9968 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
9969 if (len > 0 && ignore_keyword_hash_p(rest_last, iseq)) {
9970 if (given_argc != min_argc) {
9971 if (remove_empty_keyword_hash) {
9972 arg_rest_dup(args);
9973 rb_ary_pop(args->rest);
9974 given_argc--;
9975 kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
9976 }
9977 else {
9978 if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(rest_last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((rest_last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((rest_last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((rest_last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((rest_last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(rest_last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(rest_last))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) && rb_obj_frozen_p(rest_last)) {
9979 rest_last = rb_hash_new();
9980 do { const VALUE _ary = (args->rest); const VALUE _v = (rest_last); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
9981 ;
9982 ; typeof(rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 826)) unaligned_member_access_result = (rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.7/vm_args.c", 826));
9983 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); } while (0);
9984 }
9985 flag_keyword_hash = rest_last;
9986 }
9987 }
9988 else {
9989 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
9990 }
9991 }
9992 else if (!remove_empty_keyword_hash && rest_last) {
9993 flag_keyword_hash = rest_last;
9994 }
9995 }
9996 }
9997 else {
9998 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
9999 VALUE last_arg = args->argv[args->argc-1];
10000 if (ignore_keyword_hash_p(last_arg, iseq)) {
10001 if (given_argc != min_argc) {
10002 if (remove_empty_keyword_hash) {
10003 args->argc--;
10004 given_argc--;
10005 kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
10006 }
10007 else {
10008 if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(last_arg))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((last_arg) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((last_arg) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((last_arg) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((last_arg) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(last_arg)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(last_arg))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) && rb_obj_frozen_p(last_arg)) {
10009 last_arg = rb_hash_new();
10010 args->argv[args->argc-1] = last_arg;
10011 }
10012 flag_keyword_hash = last_arg;
10013 }
10014 }
10015 else {
10016 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
10017 }
10018 }
10019 else if (!remove_empty_keyword_hash) {
10020 flag_keyword_hash = args->argv[args->argc-1];
10021 }
10022 }
10023 args->rest = ((VALUE)RUBY_Qfalse);
10024 }
10025 if (flag_keyword_hash && ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(flag_keyword_hash))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(flag_keyword_hash)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(flag_keyword_hash))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
10026 ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
10027 }
10028 if (kw_flag && iseq->body->param.flags.accepts_no_kwarg) {
10029 rb_raise(rb_eArgError, "no keywords accepted");
10030 }
10031 switch (arg_setup_type) {
10032 case arg_setup_method:
10033 break;
10034 case arg_setup_block:
10035 if (given_argc == 1 &&
10036 allow_autosplat &&
10037 (min_argc > 0 || iseq->body->param.opt_num > 1 ||
10040 args_check_block_arg0(args)) {
10041 given_argc = rb_long2int_inline(rb_array_len(args->rest));
10042 }
10043 break;
10044 }
10045 if (given_argc < min_argc) {
10046 if (given_argc == min_argc - 1 && args->kw_argv) {
10047 args_stored_kw_argv_to_hash(args);
10048 given_argc = args_argc(args);
10049 }
10050 else {
10052 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(ec->cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((ec->cfp)->sp) + (min_argc)) + 1) >= (ec->cfp))), 1))) {(void)0;} else vm_stackoverflow();
10053 given_argc = min_argc;
10054 args_extend(args, min_argc);
10055 }
10056 else {
10057 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
10058 }
10059 }
10060 }
10061 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
10062 kw_splat = !iseq->body->param.flags.has_rest;
10063 }
10065 (kw_splat && given_argc > max_argc)) &&
10066 args->kw_argv == ((void *)0)) {
10067 if (given_argc > min_argc) {
10068 if (kw_flag) {
10069 int check_only_symbol = (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) &&
10072 if (args_pop_keyword_hash(args, &keyword_hash, check_only_symbol)) {
10073 given_argc--;
10074 }
10075 else if (check_only_symbol) {
10076 if (keyword_hash != ((VALUE)RUBY_Qnil)) {
10077 rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
10078 }
10079 else {
10080 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
10081 }
10082 }
10083 }
10084 else if (args_pop_keyword_hash(args, &keyword_hash, 1)) {
10085 rb_warn_last_hash_to_keyword(ec, calling, ci, iseq);
10086 given_argc--;
10087 }
10088 else if (keyword_hash != ((VALUE)RUBY_Qnil)) {
10089 rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
10090 }
10091 }
10092 else if (given_argc == min_argc && kw_flag) {
10093 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
10094 }
10095 }
10096 if (given_argc > max_argc && max_argc != (-1)) {
10098 args_reduce(args, given_argc - max_argc);
10099 given_argc = max_argc;
10100 }
10101 else {
10102 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
10103 }
10104 }
10105 if (iseq->body->param.flags.has_lead) {
10106 args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0);
10107 }
10109 args_copy(args);
10110 }
10111 if (iseq->body->param.flags.has_post) {
10112 args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start);
10113 }
10114 if (iseq->body->param.flags.has_opt) {
10115 int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num);
10116 opt_pc = (int)iseq->body->param.opt_table[opt];
10117 }
10118 if (iseq->body->param.flags.has_rest) {
10119 args_setup_rest_parameter(args, locals + iseq->body->param.rest_start);
10120 }
10121 if (iseq->body->param.flags.has_kw) {
10122 VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num;
10123 if (args->kw_argv != ((void *)0)) {
10124 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
10125 args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
10126 }
10127 else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil))) {
10128 int kw_len = rb_long2int_inline(((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)));
10129 struct fill_values_arg arg;
10130 arg.keys = args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len * 2)), _Alignof(VALUE) * 8);
10131 arg.vals = arg.keys + kw_len;
10132 arg.argc = 0;
10133 rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
10134 ((void)0);
10135 args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
10136 }
10137 else {
10138 ((void)0);
10139 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
10140 }
10141 }
10142 else if (iseq->body->param.flags.has_kwrest) {
10143 args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start);
10144 }
10145 else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) && ((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)) > 0 && arg_setup_type == arg_setup_method) {
10146 argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
10147 }
10148 if (iseq->body->param.flags.has_block) {
10149 if (iseq->body->local_iseq == iseq) {
10150 }
10151 else {
10152 args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start);
10153 }
10154 }
10155 ec->cfp->sp = orig_sp;
10156 return opt_pc;
10157}
10159static void
10160raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
10161{
10162 VALUE at;
10163 if (iseq) {
10164 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
10165 0 , ((VALUE)RUBY_Qfalse) ,
10167 ec->cfp->sp, 0, 0 );
10168 at = rb_ec_backtrace_object(ec);
10170 rb_vm_pop_frame(ec);
10171 }
10172 else {
10173 at = rb_ec_backtrace_object(ec);
10174 }
10178}
10179static void
10180argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
10181{
10182 VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
10183 if (iseq->body->param.flags.has_kw) {
10184 const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword;
10185 const ID *keywords = kw->table;
10186 int req_key_num = kw->required_num;
10187 if (req_key_num > 0) {
10188 static const char required[] = "; required keywords";
10189 VALUE mesg = rb_attr_get(exc, idMesg);
10190 rb_str_resize(mesg, (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1);
10191 rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
10192 __extension__ ({ (__builtin_constant_p(":")) ? rb_str_cat((mesg), (":"), (long)strlen(":")) : rb_str_cat_cstr((mesg), (":")); });
10193 do {
10194 __extension__ ({ (__builtin_constant_p(" ")) ? rb_str_cat((mesg), (" "), (long)strlen(" ")) : rb_str_cat_cstr((mesg), (" ")); });
10195 rb_str_append(mesg, rb_id2str(*keywords++));
10196 __extension__ ({ (__builtin_constant_p(",")) ? rb_str_cat((mesg), (","), (long)strlen(",")) : rb_str_cat_cstr((mesg), (",")); });
10197 } while (--req_key_num);
10198 (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? ((struct RString*)(mesg))->as.ary : ((struct RString*)(mesg))->as.heap.ptr)[(!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1] = ')';
10199 }
10200 }
10201 raise_argument_error(ec, iseq, exc);
10202}
10203static void
10204argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
10205{
10206 raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
10207}
10208static inline void
10209vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
10210{
10211 int argc = calling->argc;
10212 VALUE *argv = cfp->sp - argc;
10213 VALUE ary = argv[argc-1];
10214 ;
10215 cfp->sp--;
10216 if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
10217 const VALUE *ptr = rb_array_const_ptr_transient(ary);
10218 long len = rb_array_len(ary), i;
10219 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (len)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
10220 for (i = 0; i < len; i++) {
10221 *cfp->sp++ = ptr[i];
10222 }
10223 calling->argc += i - 1;
10224 }
10225}
10226static inline void
10227vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci)
10228{
10229 struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;
10230 const VALUE *const passed_keywords = ci_kw->kw_arg->keywords;
10231 const int kw_len = ci_kw->kw_arg->keyword_len;
10232 const VALUE h = rb_hash_new_with_size(kw_len);
10233 VALUE *sp = cfp->sp;
10234 int i;
10235 for (i=0; i<kw_len; i++) {
10236 rb_hash_aset(h, passed_keywords[i], (sp - kw_len)[i]);
10237 }
10238 (sp-kw_len)[0] = h;
10239 cfp->sp -= kw_len - 1;
10240 calling->argc -= kw_len - 1;
10241 calling->kw_splat = 1;
10242}
10243static VALUE
10244vm_to_proc(VALUE proc)
10245{
10246 if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
10247 VALUE b;
10249 rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(proc)), idTo_proc, ((void *)0));
10250 if (me) {
10251 b = rb_vm_call0(rb_current_execution_context(), proc, idTo_proc, 0, ((void *)0), me, 0);
10252 }
10253 else {
10255 }
10256 if (!((VALUE)(b) != ((VALUE)RUBY_Qnil)) || !rb_obj_is_proc(b)) {
10258 "wrong argument type %s (expected Proc)",
10259 rb_obj_classname(proc));
10260 }
10261 return b;
10262 }
10263 else {
10264 return proc;
10265 }
10266}
10267static VALUE
10268refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
10269{
10270 VALUE obj;
10271 ID mid;
10274 const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
10275 const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
10276 int kw_splat = 3;
10277 VALUE v;
10278 VALUE ret;
10279 VALUE klass;
10280 if (argc-- < 1) {
10281 rb_raise(rb_eArgError, "no receiver given");
10282 }
10283 obj = *argv++;
10284 mid = (rb_sym2id(symbol));
10285 for (klass = rb_class_of((VALUE)(obj)); klass; klass = RCLASS_SUPER(klass)) {
10287 if (me) {
10289 if (me) break;
10290 }
10291 }
10292 ec = rb_current_execution_context();
10293 if (!!((VALUE)(blockarg) != ((VALUE)RUBY_Qnil))) {
10294 vm_passed_block_handler_set(ec, blockarg);
10295 }
10296 v = rb_adjust_argv_kw_splat(&argc, &argv, &kw_splat);
10297 if (!me) {
10298 ret = method_missing(obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
10299 }
10300 else {
10301 ret = rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
10302 }
10304 return ret;
10305}
10306static VALUE
10307vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
10308 const struct rb_call_info *ci, const rb_iseq_t *blockiseq, const int is_super)
10309{
10310 if (ci->flag & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
10311 VALUE block_code = *(--reg_cfp->sp);
10312 if (!((VALUE)(block_code) != ((VALUE)RUBY_Qnil))) {
10313 return 0;
10314 }
10315 else if (block_code == rb_block_param_proxy) {
10316 ((void)0);
10317 VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
10318 reg_cfp->block_code = (const void *) handler;
10319 return handler;
10320 }
10321 else if (((((VALUE)(block_code)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_code) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_code) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_code))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && __extension__({ static struct rb_call_data rb_mbdp; (rb_cSymbol == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cSymbol, idTo_proc); })) {
10322 const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
10323 if (cref && !!((VALUE)(cref->refinements) != ((VALUE)RUBY_Qnil))) {
10324 VALUE ref = cref->refinements;
10325 VALUE func = rb_hash_lookup(ref, block_code);
10326 if (!((VALUE)(func) != ((VALUE)RUBY_Qnil))) {
10327 VALUE callback_arg = rb_ary_tmp_new(2);
10328 rb_ary_push(callback_arg, block_code);
10329 rb_ary_push(callback_arg, ref);
10330 (void)(((struct RBasic*)(callback_arg))->flags |= RUBY_FL_FREEZE);
10331 func = rb_func_proc_new(refine_sym_proc_call, callback_arg);
10332 rb_hash_aset(ref, block_code, func);
10333 }
10334 block_code = func;
10335 }
10336 return block_code;
10337 }
10338 else {
10339 return vm_to_proc(block_code);
10340 }
10341 }
10342 else if (blockiseq != ((void *)0)) {
10343 struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
10344 captured->code.iseq = blockiseq;
10345 return VM_BH_FROM_ISEQ_BLOCK(captured);
10346 }
10347 else {
10348 if (is_super) {
10349 return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
10350 }
10351 else {
10352 return 0;
10353 }
10354 }
10355}
10356static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int opt_pc, int param_size, int local_size);
10357__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);
10358static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int opt_pc);
10359static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
10360static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
10361static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
10362static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
10363static vm_call_handler vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size);
10364static VALUE
10365vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10366{
10367 ((void)0);
10368 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, 0);
10369}
10370static VALUE
10371vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10372{
10373 ((void)0);
10374 struct rb_call_cache *cc = &cd->cc;
10375 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10376 int param = iseq->body->param.size;
10377 int local = iseq->body->local_table_size;
10378 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
10379}
10380static _Bool
10382{
10383 return iseq->body->param.flags.has_opt == 0 &&
10384 iseq->body->param.flags.has_rest == 0 &&
10385 iseq->body->param.flags.has_post == 0 &&
10386 iseq->body->param.flags.has_kw == 0 &&
10387 iseq->body->param.flags.has_kwrest == 0 &&
10389 iseq->body->param.flags.has_block == 0;
10390}
10391static _Bool
10392rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
10393{
10394 return iseq->body->param.flags.has_opt == 1 &&
10395 iseq->body->param.flags.has_rest == 0 &&
10396 iseq->body->param.flags.has_post == 0 &&
10397 iseq->body->param.flags.has_kw == 0 &&
10398 iseq->body->param.flags.has_kwrest == 0 &&
10400 iseq->body->param.flags.has_block == 0;
10401}
10402static _Bool
10403rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
10404{
10405 return iseq->body->param.flags.has_opt == 0 &&
10406 iseq->body->param.flags.has_rest == 0 &&
10407 iseq->body->param.flags.has_post == 0 &&
10408 iseq->body->param.flags.has_kw == 1 &&
10409 iseq->body->param.flags.has_kwrest == 0 &&
10410 iseq->body->param.flags.has_block == 0;
10411}
10412static inline void
10413CALLER_SETUP_ARG(struct rb_control_frame_struct *__restrict__ cfp,
10415 const struct rb_call_info *__restrict__ ci)
10416{
10417 if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
10418 VALUE final_hash;
10419 vm_caller_setup_arg_splat(cfp, calling);
10420 if (!((ci)->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
10421 calling->argc > 0 &&
10422 ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)((final_hash = *(cfp->sp - 1))))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)((final_hash = *(cfp->sp - 1)))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)((final_hash = *(cfp->sp - 1))))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
10423 (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
10424 *(cfp->sp - 1) = rb_hash_dup(final_hash);
10425 calling->kw_splat = 1;
10426 }
10427 }
10428 if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) {
10429 vm_caller_setup_arg_kw(cfp, calling, ci);
10430 }
10431}
10432static inline void
10433CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *__restrict__ cfp,
10435 const struct rb_call_info *__restrict__ ci)
10436{
10437 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
10438 if ((((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
10439 cfp->sp--;
10440 calling->argc--;
10441 calling->kw_splat = 0;
10442 }
10443 }
10444}
10445static VALUE
10446vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
10447 struct rb_calling_info *calling,
10448 struct rb_call_data *cd)
10449{
10450 const struct rb_call_cache *cc = &cd->cc;
10451 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10452 const int lead_num = iseq->body->param.lead_num;
10453 const int opt = calling->argc - lead_num;
10454 const int opt_num = iseq->body->param.opt_num;
10455 const int opt_pc = (int)iseq->body->param.opt_table[opt];
10456 const int param = iseq->body->param.size;
10457 const int local = iseq->body->local_table_size;
10458 const int delta = opt_num - opt;
10459 ((void)0);
10460 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param - delta, local);
10461}
10462static VALUE
10463vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
10464 struct rb_calling_info *calling,
10465 struct rb_call_data *cd)
10466{
10467 const struct rb_call_cache *cc = &cd->cc;
10468 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10469 const int lead_num = iseq->body->param.lead_num;
10470 const int opt = calling->argc - lead_num;
10471 const int opt_pc = (int)iseq->body->param.opt_table[opt];
10472 ((void)0);
10473 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
10474}
10475static void
10476args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
10477 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
10478 VALUE *const locals);
10479static VALUE
10480vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
10481 struct rb_calling_info *calling,
10482 struct rb_call_data *cd)
10483{
10484 const struct rb_kwarg_call_data *kcd = (void *)cd;
10485 const struct rb_call_info_with_kwarg *ci_kw = &kcd->ci_kw;
10486 const struct rb_call_cache *cc = &kcd->cc;
10487 ((void)0);
10488 ((void)0);
10489 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10490 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
10491 const struct rb_call_info_kw_arg *kw_arg = ci_kw->kw_arg;
10492 const int ci_kw_len = kw_arg->keyword_len;
10493 const VALUE * const ci_keywords = kw_arg->keywords;
10494 VALUE *argv = cfp->sp - calling->argc;
10495 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
10496 const int lead_num = iseq->body->param.lead_num;
10497 VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
10498 ((__builtin_object_size((ci_kws), 0) != (size_t)-1) ? __builtin___memcpy_chk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len), __builtin_object_size((ci_kws), 0)) : __memcpy_ichk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len)));
10499 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
10500 int param = iseq->body->param.size;
10501 int local = iseq->body->local_table_size;
10502 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
10503}
10504static VALUE
10505vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
10506 struct rb_calling_info *calling,
10507 struct rb_call_data *cd)
10508{
10509 const struct rb_call_info *__attribute__ ((__unused__)) ci = &cd->ci;
10510 const struct rb_call_cache *cc = &cd->cc;
10511 ((void)0);
10512 ((void)0);
10513 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10514 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
10515 VALUE * const argv = cfp->sp - calling->argc;
10516 VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
10517 int i;
10518 for (i=0; i<kw_param->num; i++) {
10519 klocals[i] = kw_param->default_values[i];
10520 }
10521 klocals[i] = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
10522 int param = iseq->body->param.size;
10523 int local = iseq->body->local_table_size;
10524 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
10525}
10526static inline int
10527vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd,
10528 const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
10529{
10530 const struct rb_call_info *ci = &cd->ci;
10531 struct rb_call_cache *cc = &cd->cc;
10532 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
10533 if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
10534 rb_control_frame_t *cfp = ec->cfp;
10535 CALLER_SETUP_ARG(cfp, calling, ci);
10536 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
10537 if (calling->argc != iseq->body->param.lead_num) {
10538 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
10539 }
10540 CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), vm_call_iseq_optimizable_p(&cd->ci, &cd->cc));
10541 return 0;
10542 }
10543 else if (rb_iseq_only_optparam_p(iseq)) {
10544 rb_control_frame_t *cfp = ec->cfp;
10545 CALLER_SETUP_ARG(cfp, calling, ci);
10546 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
10547 const int lead_num = iseq->body->param.lead_num;
10548 const int opt_num = iseq->body->param.opt_num;
10549 const int argc = calling->argc;
10550 const int opt = argc - lead_num;
10551 if (opt < 0 || opt > opt_num) {
10552 argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num);
10553 }
10554 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
10555 CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
10556 !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
10557 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
10558 }
10559 else {
10560 CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
10561 !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
10562 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
10563 }
10564 ((void)0);
10565 for (int i=argc; i<lead_num + opt_num; i++) {
10566 argv[i] = ((VALUE)RUBY_Qnil);
10567 }
10568 return (int)iseq->body->param.opt_table[opt];
10569 }
10570 else if (rb_iseq_only_kwparam_p(iseq) && !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
10571 const int lead_num = iseq->body->param.lead_num;
10572 const int argc = calling->argc;
10573 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
10574 if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
10575 const struct rb_call_info_kw_arg *kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
10576 if (argc - kw_arg->keyword_len == lead_num) {
10577 const int ci_kw_len = kw_arg->keyword_len;
10578 const VALUE * const ci_keywords = kw_arg->keywords;
10579 VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
10580 ((__builtin_object_size((ci_kws), 0) != (size_t)-1) ? __builtin___memcpy_chk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len), __builtin_object_size((ci_kws), 0)) : __memcpy_ichk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len)));
10581 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
10582 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
10583 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
10584 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
10585 return 0;
10586 }
10587 }
10588 else if (argc == lead_num) {
10589 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
10590 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
10591 if (klocals[kw_param->num] == (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG)) {
10592 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
10593 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
10594 }
10595 return 0;
10596 }
10597 }
10598 }
10599 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
10600}
10601static VALUE
10602vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10603{
10604 ((void)0);
10605 const struct rb_call_cache *cc = &cd->cc;
10606 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
10607 const int param_size = iseq->body->param.size;
10608 const int local_size = iseq->body->local_table_size;
10609 const int opt_pc = vm_callee_setup_arg(ec, calling, cd, def_iseq_ptr(cc->me->def), cfp->sp - calling->argc, param_size, local_size);
10610 return vm_call_iseq_setup_2(ec, cfp, calling, cd, opt_pc, param_size, local_size);
10611}
10612static inline VALUE
10613vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd,
10614 int opt_pc, int param_size, int local_size)
10615{
10616 const struct rb_call_info *ci = &cd->ci;
10617 const struct rb_call_cache *cc = &cd->cc;
10618 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
10619 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param_size, local_size);
10620 }
10621 else {
10622 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
10623 }
10624}
10625static inline VALUE
10627 int opt_pc, int param_size, int local_size)
10628{
10629 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
10630 VALUE *argv = cfp->sp - calling->argc;
10631 VALUE *sp = argv + param_size;
10632 cfp->sp = argv - 1 ;
10633 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
10634 calling->block_handler, (VALUE)me,
10635 iseq->body->iseq_encoded + opt_pc, sp,
10637 iseq->body->stack_max);
10638 return ((VALUE)RUBY_Qundef);
10639}
10640static inline VALUE
10641vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd,
10642 int opt_pc)
10643{
10644 const struct rb_call_cache *cc = &cd->cc;
10645 unsigned int i;
10646 VALUE *argv = cfp->sp - calling->argc;
10648 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
10649 VALUE *src_argv = argv;
10650 VALUE *sp_orig, *sp;
10651 VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
10652 if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
10653 struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
10654 const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
10655 dst_captured->code.val = src_captured->code.val;
10656 if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
10657 calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
10658 }
10659 else {
10660 calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
10661 }
10662 }
10663 vm_pop_frame(ec, cfp, cfp->ep);
10664 cfp = ec->cfp;
10665 sp_orig = sp = cfp->sp;
10666 sp[0] = calling->recv;
10667 sp++;
10668 for (i=0; i < iseq->body->param.size; i++) {
10669 *sp++ = src_argv[i];
10670 }
10671 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
10672 calling->recv, calling->block_handler, (VALUE)me,
10673 iseq->body->iseq_encoded + opt_pc, sp,
10675 iseq->body->stack_max);
10676 cfp->sp = sp_orig;
10677 return ((VALUE)RUBY_Qundef);
10678}
10679static VALUE
10680call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10681{
10682 return (*func)(recv, rb_ary_new_from_values(argc, argv));
10683}
10684static VALUE
10685call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10686{
10687 return (*func)(argc, argv, recv);
10688}
10689static VALUE
10690call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10691{
10692 VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
10693 return (*f)(recv);
10694}
10695static VALUE
10696call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10697{
10698 VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
10699 return (*f)(recv, argv[0]);
10700}
10701static VALUE
10702call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10703{
10704 VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
10705 return (*f)(recv, argv[0], argv[1]);
10706}
10707static VALUE
10708call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10709{
10710 VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
10711 return (*f)(recv, argv[0], argv[1], argv[2]);
10712}
10713static VALUE
10714call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10715{
10716 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
10717 return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
10718}
10719static VALUE
10720call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10721{
10723 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
10724}
10725static VALUE
10726call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10727{
10729 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
10730}
10731static VALUE
10732call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10733{
10735 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
10736}
10737static VALUE
10738call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10739{
10741 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
10742}
10743static VALUE
10744call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10745{
10747 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
10748}
10749static VALUE
10750call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10751{
10753 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
10754}
10755static VALUE
10756call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10757{
10759 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]);
10760}
10761static VALUE
10762call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10763{
10765 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]);
10766}
10767static VALUE
10768call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10769{
10771 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]);
10772}
10773static VALUE
10774call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10775{
10777 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]);
10778}
10779static VALUE
10780call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
10781{
10783 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]);
10784}
10785static inline int
10786vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
10787{
10788 const int ov_flags = RAISED_STACKOVERFLOW;
10789 if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
10790 if ((((ec)->raised_flag & (ov_flags)) != 0)) {
10791 ((ec)->raised_flag &= ~(ov_flags));
10792 return 1;
10793 }
10794 return 0;
10795}
10796static inline
10797const rb_method_cfunc_t *
10798vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
10799{
10800 return __extension__({
10801 ;
10802 ; typeof(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc);
10803 ; unaligned_member_access_result; });
10804}
10805static VALUE
10806vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int empty_kw_splat)
10807{
10808 const struct rb_call_info *ci = &cd->ci;
10809 const struct rb_call_cache *cc = &cd->cc;
10810 VALUE val;
10812 const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
10813 int len = cfunc->argc;
10814 VALUE recv = calling->recv;
10815 VALUE block_handler = calling->block_handler;
10817 int argc = calling->argc;
10818 int orig_argc = argc;
10819 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
10820 frame_type |= VM_FRAME_FLAG_CFRAME_KW;
10821 }
10822 else if ((__builtin_expect(!!(empty_kw_splat), 0))) {
10823 frame_type |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
10824 }
10825 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);
10826 do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_vm_global_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, ci->mid, me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
10827 vm_push_frame(ec, ((void *)0), frame_type, recv,
10829 0, ec->cfp->sp, 0, 0);
10830 if (len >= 0) rb_check_arity(argc, len, len);
10831 reg_cfp->sp -= orig_argc + 1;
10832 val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
10833 ((__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)));
10834 rb_vm_pop_frame(ec);
10835 do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_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, ci->mid, me->owner, val, 0); } } while (0);
10836 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);
10837 return val;
10838}
10839static VALUE
10841{
10842 const struct rb_call_info *ci = &cd->ci;
10843 int empty_kw_splat;
10844 ((void)0);
10845 CALLER_SETUP_ARG(reg_cfp, calling, ci);
10846 empty_kw_splat = calling->kw_splat;
10847 CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
10848 if (empty_kw_splat && calling->kw_splat) {
10849 empty_kw_splat = 0;
10850 }
10851 return vm_call_cfunc_with_frame(ec, reg_cfp, calling, cd, empty_kw_splat);
10852}
10853static VALUE
10855{
10856 struct rb_call_cache *cc = &cd->cc;
10857 ((void)0);
10858 cfp->sp -= 1;
10859 return vm_getivar(calling->recv, cc->me->def->body.attr.id, ((void *)0), cc, 1);
10860}
10861static VALUE
10862vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10863{
10864 struct rb_call_cache *cc = &cd->cc;
10865 ((void)0);
10866 VALUE val = *(cfp->sp - 1);
10867 cfp->sp -= 2;
10868 return vm_setivar(calling->recv, cc->me->def->body.attr.id, val, ((void *)0), cc, 1);
10869}
10870static inline VALUE
10871vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv)
10872{
10873 rb_proc_t *proc;
10874 VALUE val;
10875 const struct rb_call_cache *cc = &cd->cc;
10876 (((proc)) = (rb_proc_t*)(((struct RData*)(((cc->me->def->body.bmethod.proc))))->data));
10877 val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, cc->me);
10878 return val;
10879}
10880static VALUE
10881vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10882{
10883 ((void)0);
10884 VALUE *argv;
10885 int argc;
10886 const struct rb_call_info *ci = &cd->ci;
10887 CALLER_SETUP_ARG(cfp, calling, ci);
10888 argc = calling->argc;
10889 argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(argc)), _Alignof(VALUE) * 8);
10890 ((__builtin_object_size((argv), 0) != (size_t)-1) ? __builtin___memcpy_chk((argv), (cfp->sp - argc), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((argv), 0)) : __memcpy_ichk((argv), (cfp->sp - argc), sizeof(VALUE)*(size_t)(argc)));
10891 cfp->sp += - argc - 1;
10892 return vm_call_bmethod_body(ec, calling, cd, argv);
10893}
10894static enum method_missing_reason
10895ci_missing_reason(const struct rb_call_info *ci)
10896{
10898 if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
10899 if (ci->flag & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
10900 if (ci->flag & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
10901 return stat;
10902}
10903static VALUE
10904vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *orig_cd)
10905{
10906 ((void)0);
10907 int i;
10908 VALUE sym;
10909 const struct rb_call_info *orig_ci = &orig_cd->ci;
10910 const struct rb_call_cache *orig_cc = &orig_cd->cc;
10911 struct rb_call_info *ci;
10912 struct rb_call_cache *cc;
10913 struct rb_kwarg_call_data cd;
10914 CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
10915 i = calling->argc - 1;
10916 if (calling->argc == 0) {
10917 rb_raise(rb_eArgError, "no method name given");
10918 }
10919 if (orig_ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
10920 const struct rb_kwarg_call_data *orig_kcd = (void *)orig_cd;
10921 cd = *orig_kcd;
10922 }
10923 else {
10924 cd.ci_kw.ci = *orig_ci;
10925 cd.cc = *orig_cc;
10926 }
10927 ci = &cd.ci_kw.ci;
10928 cc = &cd.cc;
10929 sym = (*(((((reg_cfp)->sp)))-(i)-1));
10930 if (!(ci->mid = rb_check_id(&sym))) {
10931 if (__extension__({ static struct rb_call_data rb_mbdp; (rb_class_of((VALUE)(calling->recv)) == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_class_of((VALUE)(calling->recv)), idMethodMissing); })) {
10932 VALUE exc =
10934 rb_long2int_inline(calling->argc), &(*(((((reg_cfp)->sp)))-(i)-1)),
10935 ci->flag & ((0x01 << VM_CALL_FCALL_bit)|(0x01 << VM_CALL_VCALL_bit)));
10937 }
10938 (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(sym);
10939 ci->mid = idMethodMissing;
10940 ec->method_missing_reason = cc->aux.method_missing_reason = ci_missing_reason(ci);
10941 }
10942 else {
10943 if (i > 0) {
10944 ((__builtin_object_size((&(*(((((reg_cfp)->sp)))-(i)-1))), 0) != (size_t)-1) ? __builtin___memmove_chk((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), sizeof(VALUE)*(size_t)(i), __builtin_object_size((&(*(((((reg_cfp)->sp)))-(i)-1))), 0)) : __memmove_ichk((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), sizeof(VALUE)*(size_t)(i)));
10945 }
10946 calling->argc -= 1;
10947 (((reg_cfp)->sp) -= (((1))));
10948 }
10949 CC_SET_ME(cc, rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(calling->recv)), ci->mid, ((void *)0)));
10950 ci->flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
10951 return vm_call_method(ec, reg_cfp, calling, (CALL_DATA)&cd);
10952}
10953static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
10954__attribute__ ((__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_call_info *ci, VALUE block_handler);
10955static VALUE
10956vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
10957 struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
10958{
10959 int argc = calling->argc;
10960 if (argc > 0) ((__builtin_object_size((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0) != (size_t)-1) ? __builtin___memmove_chk((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0)) : __memmove_ichk((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), sizeof(VALUE)*(size_t)(argc)));
10961 (((reg_cfp)->sp) -= (((1))));
10962 return vm_invoke_block(ec, reg_cfp, calling, ci, block_handler);
10963}
10964static VALUE
10965vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10966{
10967 ((void)0);
10968 const struct rb_call_info *ci = &cd->ci;
10969 VALUE procval = calling->recv;
10970 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
10971}
10972static VALUE
10973vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
10974{
10975 ((void)0);
10976 VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
10977 const struct rb_call_info *ci = &cd->ci;
10978 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
10979 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
10980 }
10981 else {
10982 calling->recv = rb_vm_bh_to_procval(ec, block_handler);
10983 vm_search_method(cd, calling->recv);
10984 return vm_call_general(ec, reg_cfp, calling, cd);
10985 }
10986}
10987static VALUE
10988vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *orig_cd)
10989{
10990 ((void)0);
10991 const struct rb_call_info *orig_ci = &orig_cd->ci;
10992 const struct rb_call_cache *orig_cc = &orig_cd->cc;
10993 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
10994 struct rb_call_data cd = *orig_cd;
10995 unsigned int argc;
10996 CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
10997 argc = calling->argc+1;
10998 cd.ci.flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
10999 cd.ci.mid = idMethodMissing;
11000 cd.ci.orig_argc = argc;
11001 cd.cc.me =
11003 idMethodMissing, ((void *)0));
11004 calling->argc = argc;
11005 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(reg_cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((reg_cfp)->sp) + (1)) + 1) >= (reg_cfp))), 1))) {(void)0;} else vm_stackoverflow();
11006 ;
11007 if (argc > 1) {
11008 ((__builtin_object_size((argv+1), 0) != (size_t)-1) ? __builtin___memmove_chk((argv+1), (argv), sizeof(VALUE)*(size_t)(argc-1), __builtin_object_size((argv+1), 0)) : __memmove_ichk((argv+1), (argv), sizeof(VALUE)*(size_t)(argc-1)));
11009 }
11010 argv[0] = (rb_id2sym(orig_ci->mid));
11011 (((reg_cfp)->sp) += (((1))));
11013 return vm_call_method(ec, reg_cfp, calling, &cd);
11014}
11015static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
11016static VALUE
11018{
11019 ((void)0);
11020 const struct rb_call_info *ci = &cd->ci;
11021 struct rb_call_cache *cc = &cd->cc;
11023 CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, ci->mid) : ((void *)0));
11024 if (!cc->me) {
11025 return vm_call_method_nome(ec, cfp, calling, cd);
11026 }
11027 if (cc->me->def->type == VM_METHOD_TYPE_REFINED &&
11028 cc->me->def->body.refined.orig_me) {
11029 CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
11030 }
11031 return vm_call_method_each_type(ec, cfp, calling, cd);
11032}
11033static inline VALUE
11034find_refinement(VALUE refinements, VALUE klass)
11035{
11036 if (!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
11037 return ((VALUE)RUBY_Qnil);
11038 }
11039 return rb_hash_lookup(refinements, klass);
11040}
11041__attribute__ ((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
11042static rb_control_frame_t *
11043current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
11044{
11045 rb_control_frame_t *top_cfp = cfp;
11046 if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) {
11047 const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq;
11048 do {
11049 cfp = ((cfp)+1);
11050 if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
11051 return top_cfp;
11052 }
11053 } while (cfp->iseq != local_iseq);
11054 }
11055 return cfp;
11056}static inline
11057__attribute__ ((__visibility__("default"))) VALUE
11059{
11061 if (( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) && ((!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((klass)))->flags&((((VALUE)RUBY_FL_USER5)))):0)) klass = (((struct RBasic*)(klass))->klass);
11062 while (!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
11063 VALUE owner = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ? (((struct RBasic*)(klass))->klass) : klass;
11064 if (owner == target_owner) {
11065 return klass;
11066 }
11068 }
11070}
11071static const rb_callable_method_entry_t *
11072aliased_callable_method_entry(const rb_callable_method_entry_t *me)
11073{
11074 const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
11075 const rb_callable_method_entry_t *cme;
11076 if (orig_me->defined_class == 0) {
11077 VALUE defined_class = rb_find_defined_class_by_owner(me->defined_class, orig_me->owner);
11078 ((void)0);
11079 cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
11080 if (me->def->alias_count + me->def->complemented_count == 0) {
11081 __extension__({
11082 ;
11083 ; typeof(rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.7.7/vm_insnhelper.c", 2828)) unaligned_member_access_result = (rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.7.7/vm_insnhelper.c", 2828));
11084 ; unaligned_member_access_result; });
11085 }
11086 else {
11089 rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
11090 }
11091 }
11092 else {
11093 cme = (const rb_callable_method_entry_t *)orig_me;
11094 }
11095 ((void)0);
11096 return cme;
11097}
11098static const rb_callable_method_entry_t *
11099refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
11100{
11101 const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
11102 const rb_callable_method_entry_t *cme;
11103 if (orig_me->defined_class == 0) {
11104 cme = ((void *)0);
11106 }
11107 else {
11108 cme = (const rb_callable_method_entry_t *)orig_me;
11109 }
11110 ((void)0);
11111 if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
11112 cme = ((void *)0);
11113 }
11114 return cme;
11115}
11116static int
11117search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, ID mid, struct rb_call_cache *cc)
11118{
11119 const rb_cref_t *cref = vm_get_cref(cfp->ep);
11120 for (; cref; cref = CREF_NEXT(cref)) {
11121 const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), cc->me->owner);
11122 if (!((VALUE)(refinement) != ((VALUE)RUBY_Qnil))) continue;
11123 const rb_callable_method_entry_t *const ref_me =
11124 rb_callable_method_entry(refinement, mid);
11125 if (ref_me) {
11126 if (cc->call == vm_call_super_method) {
11127 const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
11128 const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
11129 if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
11130 continue;
11131 }
11132 }
11133 if (cc->me->def->type != VM_METHOD_TYPE_REFINED ||
11134 cc->me->def != ref_me->def) {
11135 CC_SET_ME(cc, ref_me);
11136 }
11137 if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
11138 return 1;
11139 }
11140 }
11141 else {
11142 CC_SET_ME(cc, ((void *)0));
11143 return 0;
11144 }
11145 }
11146 if (cc->me->def->body.refined.orig_me) {
11147 CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
11148 }
11149 else {
11151 CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, mid) : ((void *)0));
11152 }
11153 return 1;
11154}
11155static VALUE
11156vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11157{
11158 const struct rb_call_info *ci = &cd->ci;
11159 struct rb_call_cache *cc = &cd->cc;
11160 switch (cc->me->def->type) {
11162 CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
11163 return vm_call_iseq_setup(ec, cfp, calling, cd);
11166 CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
11167 return vm_call_cfunc(ec, cfp, calling, cd);
11169 CALLER_SETUP_ARG(cfp, calling, ci);
11170 if (calling->argc == 1 && calling->kw_splat && (((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
11171 rb_warn_keyword_to_last_hash(ec, calling, ci, ((void *)0));
11172 }
11173 else {
11174 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
11175 }
11176 rb_check_arity(calling->argc, 1, 1);
11177 cc->aux.index = 0;
11178 CC_SET_FASTPATH(cc, vm_call_attrset, !((ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (ci->flag & (0x01 << VM_CALL_KWARG_bit))));
11179 return vm_call_attrset(ec, cfp, calling, cd);
11181 CALLER_SETUP_ARG(cfp, calling, ci);
11182 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
11183 rb_check_arity(calling->argc, 0, 0);
11184 cc->aux.index = 0;
11185 CC_SET_FASTPATH(cc, vm_call_ivar, !(ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)));
11186 return vm_call_ivar(ec, cfp, calling, cd);
11189 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
11190 return vm_call_method_missing(ec, cfp, calling, cd);
11192 CC_SET_FASTPATH(cc, vm_call_bmethod, 1);
11193 return vm_call_bmethod(ec, cfp, calling, cd);
11195 CC_SET_ME(cc, aliased_callable_method_entry(cc->me));
11196 ((void)0);
11197 return vm_call_method_each_type(ec, cfp, calling, cd);
11199 switch (cc->me->def->body.optimize_type) {
11201 CC_SET_FASTPATH(cc, vm_call_opt_send, 1);
11202 return vm_call_opt_send(ec, cfp, calling, cd);
11204 CC_SET_FASTPATH(cc, vm_call_opt_call, 1);
11205 return vm_call_opt_call(ec, cfp, calling, cd);
11207 CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1);
11208 return vm_call_opt_block_call(ec, cfp, calling, cd);
11209 default:
11210 rb_bug("vm_call_method: unsupported optimized method type (%d)",
11212 }
11214 break;
11216 return vm_call_zsuper(ec, cfp, calling, cd, ((((struct RClass*)(cc->me->defined_class))->ptr)->origin_));
11218 if (search_refined_method(ec, cfp, ci->mid, cc))
11219 return vm_call_method(ec, cfp, calling, cd);
11220 else
11221 return vm_call_method_nome(ec, cfp, calling, cd);
11222 }
11223 rb_bug("vm_call_method: unsupported method type (%d)", cc->me->def->type);
11224}
11225__attribute__ ((__noreturn__)) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
11226static VALUE
11227vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11228{
11229 const struct rb_call_info *ci = &cd->ci;
11230 struct rb_call_cache *cc = &cd->cc;
11231 const int stat = ci_missing_reason(ci);
11232 if (ci->mid == idMethodMissing) {
11234 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
11235 vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
11236 }
11237 else {
11239 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
11240 return vm_call_method_missing(ec, cfp, calling, cd);
11241 }
11242}
11243static inline VALUE
11244vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11245{
11246 const struct rb_call_info *ci = &cd->ci;
11247 struct rb_call_cache *cc = &cd->cc;
11248 ((void)0);
11249 if (cc->me != ((void *)0)) {
11250 switch ((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
11251 case METHOD_VISI_PUBLIC:
11252 return vm_call_method_each_type(ec, cfp, calling, cd);
11254 if (!(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
11256 if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
11258 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
11259 return vm_call_method_missing(ec, cfp, calling, cd);
11260 }
11261 return vm_call_method_each_type(ec, cfp, calling, cd);
11263 if (!(ci->flag & (0x01 << VM_CALL_OPT_SEND_bit))) {
11266 return vm_call_method_missing(ec, cfp, calling, cd);
11267 }
11268 else {
11269 ((void)0);
11270 if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
11271 struct rb_kwarg_call_data *kcd = (void *)cd;
11272 struct rb_kwarg_call_data cd_entry = *kcd;
11273 return vm_call_method_each_type(ec, cfp, calling, (void *)&cd_entry);
11274 }
11275 else {
11276 struct rb_call_data cd_entry = *cd;
11277 return vm_call_method_each_type(ec, cfp, calling, &cd_entry);
11278 }
11279 }
11280 }
11281 return vm_call_method_each_type(ec, cfp, calling, cd);
11282 default:
11283 rb_bug("unreachable");
11284 }
11285 }
11286 else {
11287 return vm_call_method_nome(ec, cfp, calling, cd);
11288 }
11289}
11290static VALUE
11291vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11292{
11293 ((void)0);
11294 return vm_call_method(ec, reg_cfp, calling, cd);
11295}
11296static VALUE
11297vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
11298{
11299 ((void)0);
11300 const struct rb_call_cache *cc = &cd->cc;
11301 if (cc->call != vm_call_super_method) rb_bug("bug");
11302 return vm_call_method(ec, reg_cfp, calling, cd);
11303}
11304static inline VALUE
11305vm_search_normal_superclass(VALUE klass)
11306{
11307 if ((int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_ICLASS &&
11308 ((!(((VALUE)(((struct RBasic*)(klass))->klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(((struct RBasic*)(klass))->klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(((struct RBasic*)(klass))->klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((((struct RBasic*)(klass))->klass)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
11309 klass = ((struct RBasic*)(klass))->klass;
11310 }
11311 klass = ((((struct RClass*)(klass))->ptr)->origin_);
11312 return RCLASS_SUPER(klass);
11313}
11314__attribute__ ((__noreturn__)) static void vm_super_outside(void);
11315static void
11316vm_super_outside(void)
11317{
11318 rb_raise(rb_eNoMethodError, "super called outside of method");
11319}
11320static void
11321vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
11322{
11323 VALUE current_defined_class, klass;
11324 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
11325 struct rb_call_info *ci = &cd->ci;
11326 struct rb_call_cache *cc = &cd->cc;
11327 if (!me) {
11328 vm_super_outside();
11329 }
11330 current_defined_class = me->defined_class;
11331 if (!!((VALUE)(((((struct RClass*)(current_defined_class))->ptr)->refined_class)) != ((VALUE)RUBY_Qnil))) {
11332 current_defined_class = ((((struct RClass*)(current_defined_class))->ptr)->refined_class);
11333 }
11334 if ((int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_MODULE &&
11335 !((!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((current_defined_class)))->flags&((RMODULE_INCLUDED_INTO_REFINEMENT))):0) &&
11336 !rb_obj_is_kind_of(recv, current_defined_class)) {
11337 VALUE m = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(current_defined_class))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((current_defined_class) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((current_defined_class) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((current_defined_class) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((current_defined_class) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(current_defined_class)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(current_defined_class))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ?
11338 ((((struct RClass*)(current_defined_class))->ptr)->includer) : current_defined_class;
11339 if (m) {
11341 "self has wrong type to call super in this context: "
11342 "%""l""i" "\v"" (expected %""l""i" "\v"")",
11343 rb_obj_class(recv), m);
11344 }
11345 }
11346 if (me->def->type == VM_METHOD_TYPE_BMETHOD && (ci->flag & (0x01 << VM_CALL_ZSUPER_bit))) {
11348 "implicit argument passing of super from method defined"
11349 " by define_method() is not supported."
11350 " Specify all arguments explicitly.");
11351 }
11352 ci->mid = me->def->original_id;
11353 klass = vm_search_normal_superclass(me->defined_class);
11354 if (!klass) {
11356 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
11357 }
11358 else {
11359 CC_SET_ME(cc, rb_callable_method_entry(klass, ci->mid));
11360 CC_SET_FASTPATH(cc, vm_call_super_method, 1);
11361 }
11362}
11363static inline int
11364block_proc_is_lambda(const VALUE procval)
11365{
11366 rb_proc_t *proc;
11367 if (procval) {
11368 (((proc)) = (rb_proc_t*)(((struct RData*)(((procval))))->data));
11369 return proc->is_lambda;
11370 }
11371 else {
11372 return 0;
11373 }
11374}
11375static VALUE
11376vm_yield_with_cfunc(rb_execution_context_t *ec,
11377 const struct rb_captured_block *captured,
11378 VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
11380{
11381 int is_lambda = 0;
11382 VALUE val, arg, blockarg;
11383 int frame_flag;
11384 const struct vm_ifunc *ifunc = captured->code.ifunc;
11385 if (is_lambda) {
11387 }
11388 else if (argc == 0) {
11389 arg = ((VALUE)RUBY_Qnil);
11390 }
11391 else {
11392 arg = argv[0];
11393 }
11394 blockarg = rb_vm_bh_to_procval(ec, block_handler);
11396 switch (kw_splat) {
11397 case 1:
11398 frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
11399 break;
11400 case 2:
11401 frame_flag |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
11402 break;
11403 }
11404 vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
11405 frame_flag,
11406 self,
11407 ((VALUE)((captured->ep)) | (0x01)),
11408 (VALUE)me,
11409 0, ec->cfp->sp, 0, 0);
11410 val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
11411 rb_vm_pop_frame(ec);
11412 return val;
11413}
11414static VALUE
11415vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
11416{
11417 return rb_sym_proc_call((rb_sym2id(symbol)), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
11418}
11419static inline int
11420vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
11421{
11422 int i;
11423 long len = rb_array_len(ary);
11424 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
11425 for (i=0; i<len && i<iseq->body->param.lead_num; i++) {
11426 argv[i] = (rb_array_const_ptr_transient(ary)[i]);
11427 }
11428 return i;
11429}
11430static inline VALUE
11431vm_callee_setup_block_arg_arg0_check(VALUE *argv)
11432{
11433 VALUE ary, arg0 = argv[0];
11434 ary = rb_check_array_type(arg0);
11435 ((void)0);
11436 return ary;
11437}
11438static int
11439vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
11440{
11441 if (rb_simple_iseq_p(iseq)) {
11442 rb_control_frame_t *cfp = ec->cfp;
11443 VALUE arg0;
11444 CALLER_SETUP_ARG(cfp, calling, ci);
11445 if (calling->kw_splat && calling->argc == iseq->body->param.lead_num + iseq->body->param.post_num && (((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
11446 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
11447 }
11448 else {
11449 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
11450 }
11452 calling->argc == 1 &&
11455 !!((VALUE)(arg0 = vm_callee_setup_block_arg_arg0_check(argv)) != ((VALUE)RUBY_Qnil))) {
11456 calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
11457 }
11458 if (calling->argc != iseq->body->param.lead_num) {
11460 if (calling->argc < iseq->body->param.lead_num) {
11461 int i;
11462 if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
11463 for (i=calling->argc; i<iseq->body->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
11464 calling->argc = iseq->body->param.lead_num;
11465 }
11466 else if (calling->argc > iseq->body->param.lead_num) {
11467 calling->argc = iseq->body->param.lead_num;
11468 }
11469 }
11470 else {
11471 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
11472 }
11473 }
11474 return 0;
11475 }
11476 else {
11477 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
11478 }
11479}
11480static int
11481vm_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)
11482{
11483 struct rb_calling_info calling_entry, *calling;
11484 struct rb_call_info ci_entry, *ci;
11485 calling = &calling_entry;
11486 calling->argc = argc;
11487 calling->block_handler = block_handler;
11488 calling->kw_splat = kw_splat;
11489 calling->recv = ((VALUE)RUBY_Qundef);
11490 ci_entry.flag = kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0;
11491 ci = &ci_entry;
11492 return vm_callee_setup_block_arg(ec, calling, ci, iseq, argv, arg_setup_type);
11493}
11494static VALUE
11495vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
11496 struct rb_calling_info *calling, const struct rb_call_info *ci,
11497 int is_lambda, const struct rb_captured_block *captured)
11498{
11499 const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
11500 const int arg_size = iseq->body->param.size;
11501 VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
11502 int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
11503 (((reg_cfp)->sp) = (((rsp))));
11504 vm_push_frame(ec, iseq,
11505 VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
11506 captured->self,
11507 ((VALUE)((captured->ep)) | (0x01)), 0,
11509 rsp + arg_size,
11510 iseq->body->local_table_size - arg_size, iseq->body->stack_max);
11511 return ((VALUE)RUBY_Qundef);
11512}
11513static VALUE
11514vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
11515 struct rb_calling_info *calling, const struct rb_call_info *ci,
11516 VALUE symbol)
11517{
11518 VALUE val;
11519 int argc;
11520 CALLER_SETUP_ARG(ec->cfp, calling, ci);
11521 argc = calling->argc;
11522 val = vm_yield_with_symbol(ec, symbol, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler);
11523 ((((reg_cfp)->sp) -= (((argc)))));
11524 return val;
11525}
11526static VALUE
11527vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
11528 struct rb_calling_info *calling, const struct rb_call_info *ci,
11529 const struct rb_captured_block *captured)
11530{
11531 VALUE val;
11532 int argc;
11533 int kw_splat = calling->kw_splat;
11534 CALLER_SETUP_ARG(ec->cfp, calling, ci);
11535 CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
11536 if (kw_splat && !calling->kw_splat) {
11537 kw_splat = 2;
11538 }
11539 else {
11540 kw_splat = calling->kw_splat;
11541 }
11542 argc = calling->argc;
11543 val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), kw_splat, calling->block_handler, ((void *)0));
11544 ((((reg_cfp)->sp) -= (((argc)))));
11545 return val;
11546}
11547static VALUE
11548vm_proc_to_block_handler(VALUE procval)
11549{
11550 const struct rb_block *block = vm_proc_block(procval);
11551 switch (vm_block_type(block)) {
11552 case block_type_iseq:
11553 return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
11554 case block_type_ifunc:
11555 return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
11556 case block_type_symbol:
11557 return VM_BH_FROM_SYMBOL(block->as.symbol);
11558 case block_type_proc:
11559 return VM_BH_FROM_PROC(block->as.proc);
11560 }
11561 __builtin_unreachable();
11562 return ((VALUE)RUBY_Qundef);
11563}
11564static inline VALUE
11566 struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
11567{
11568 int is_lambda = 0;
11569 again:
11570 switch (vm_block_handler_type(block_handler)) {
11572 {
11573 const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
11574 return vm_invoke_iseq_block(ec, reg_cfp, calling, ci, is_lambda, captured);
11575 }
11577 {
11578 const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
11579 return vm_invoke_ifunc_block(ec, reg_cfp, calling, ci, captured);
11580 }
11582 is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(block_handler));
11583 block_handler = vm_proc_to_block_handler(VM_BH_TO_PROC(block_handler));
11584 goto again;
11586 return vm_invoke_symbol_block(ec, reg_cfp, calling, ci, VM_BH_TO_SYMBOL(block_handler));
11587 }
11588 __builtin_unreachable();
11589 return ((VALUE)RUBY_Qnil);
11590}
11591static VALUE
11592vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
11593{
11594 const rb_execution_context_t *ec = rb_current_execution_context();
11596 struct rb_captured_block *captured;
11597 if (cfp == 0) {
11598 rb_bug("vm_make_proc_with_iseq: unreachable");
11599 }
11600 captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
11601 captured->code.iseq = blockiseq;
11602 return rb_vm_make_proc(ec, captured, rb_cProc);
11603}
11604static VALUE
11605vm_once_exec(VALUE iseq)
11606{
11607 VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
11608 return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
11609}
11610static VALUE
11611vm_once_clear(VALUE data)
11612{
11613 union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
11614 is->once.running_thread = ((void *)0);
11615 return ((VALUE)RUBY_Qnil);
11616}static inline
11619{
11620 (*(((((reg_cfp)->sp)))-(0)-1)) = rb_struct_aref((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)));
11621 return reg_cfp;
11622}static inline
11625{
11626 rb_struct_aset((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)), (*(((((reg_cfp)->sp)))-(1)-1)));
11627 return reg_cfp;
11628}
11629static enum defined_type
11630check_respond_to_missing(VALUE obj, VALUE v)
11631{
11632 VALUE args[2];
11633 VALUE r;
11634 args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
11636 if (r != ((VALUE)RUBY_Qundef) && !(((VALUE)(r) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
11637 return DEFINED_METHOD;
11638 }
11639 else {
11640 return DEFINED_NOT_DEFINED;
11641 }
11642}
11643static VALUE
11644vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE needstr, VALUE v)
11645{
11646 VALUE klass;
11647 enum defined_type expr_type = DEFINED_NOT_DEFINED;
11648 enum defined_type type = (enum defined_type)op_type;
11649 switch (type) {
11650 case DEFINED_IVAR:
11651 if (rb_ivar_defined((((((reg_cfp)))->self)), (rb_sym2id(obj)))) {
11652 expr_type = DEFINED_IVAR;
11653 }
11654 break;
11655 case DEFINED_IVAR2:
11656 klass = vm_get_cbase(((((reg_cfp)->ep))));
11657 break;
11658 case DEFINED_GVAR:
11660 expr_type = DEFINED_GVAR;
11661 }
11662 break;
11663 case DEFINED_CVAR: {
11664 const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
11665 klass = vm_get_cvar_base(cref, (((reg_cfp))));
11667 expr_type = DEFINED_CVAR;
11668 }
11669 break;
11670 }
11671 case DEFINED_CONST:
11672 case DEFINED_CONST_FROM: {
11673 _Bool allow_nil = type == DEFINED_CONST;
11674 klass = v;
11675 if (vm_get_ev_const(ec, klass, (rb_sym2id(obj)), allow_nil, 1)) {
11676 expr_type = DEFINED_CONST;
11677 }
11678 break;
11679 }
11680 case DEFINED_FUNC:
11681 klass = rb_class_of((VALUE)(v));
11682 if (rb_method_boundp(klass, (rb_sym2id(obj)), 0)) {
11683 expr_type = DEFINED_METHOD;
11684 }
11685 else {
11686 expr_type = check_respond_to_missing(obj, v);
11687 }
11688 break;
11689 case DEFINED_METHOD:{
11690 VALUE klass = rb_class_of((VALUE)(v));
11692 if (me) {
11693 switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
11695 break;
11697 if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
11698 break;
11699 }
11700 case METHOD_VISI_PUBLIC:
11701 expr_type = DEFINED_METHOD;
11702 break;
11703 default:
11704 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)));
11705 }
11706 }
11707 else {
11708 expr_type = check_respond_to_missing(obj, v);
11709 }
11710 break;
11711 }
11712 case DEFINED_YIELD:
11713 if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
11714 expr_type = DEFINED_YIELD;
11715 }
11716 break;
11717 case DEFINED_ZSUPER:
11718 {
11719 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
11720 if (me) {
11721 VALUE klass = vm_search_normal_superclass(me->defined_class);
11722 ID id = me->def->original_id;
11723 if (rb_method_boundp(klass, id, 0)) {
11724 expr_type = DEFINED_ZSUPER;
11725 }
11726 }
11727 }
11728 break;
11729 case DEFINED_REF:{
11730 if (vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), ((int)rb_fix2int((VALUE)(obj)))) != ((VALUE)RUBY_Qnil)) {
11731 expr_type = DEFINED_GVAR;
11732 }
11733 break;
11734 }
11735 default:
11736 rb_bug("unimplemented defined? type (VM)");
11737 break;
11738 }
11739 if (expr_type != 0) {
11740 if (needstr != ((VALUE)RUBY_Qfalse)) {
11741 return rb_iseq_defined_string(expr_type);
11742 }
11743 else {
11744 return ((VALUE)RUBY_Qtrue);
11745 }
11746 }
11747 else {
11748 return ((VALUE)RUBY_Qnil);
11749 }
11750}
11751static const VALUE *
11752vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
11753{
11754 rb_num_t i;
11755 const VALUE *ep = reg_ep;
11756 for (i = 0; i < lv; i++) {
11757 ep = ((VALUE *)((ep)[(-1)] & ~0x03));
11758 }
11759 return ep;
11760}
11761static VALUE
11762vm_get_special_object(const VALUE *const reg_ep,
11764{
11765 switch (type) {
11767 return rb_mRubyVMFrozenCore;
11769 return vm_get_cbase(reg_ep);
11771 return vm_get_const_base(reg_ep);
11772 default:
11773 rb_bug("putspecialobject insn: unknown value_type %d", type);
11774 }
11775}
11776static void
11777vm_freezestring(VALUE str, VALUE debug)
11778{
11779 if (!!((VALUE)(debug) != ((VALUE)RUBY_Qnil))) {
11781 }
11783}
11784static VALUE
11785vm_concat_array(VALUE ary1, VALUE ary2st)
11786{
11787 const VALUE ary2 = ary2st;
11788 VALUE tmp1 = rb_check_to_array(ary1);
11789 VALUE tmp2 = rb_check_to_array(ary2);
11790 if (!((VALUE)(tmp1) != ((VALUE)RUBY_Qnil))) {
11791 tmp1 = __extension__ ({ const VALUE args_to_new_ary[] = {ary1}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
11792 }
11793 if (!((VALUE)(tmp2) != ((VALUE)RUBY_Qnil))) {
11794 tmp2 = __extension__ ({ const VALUE args_to_new_ary[] = {ary2}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
11795 }
11796 if (tmp1 == ary1) {
11797 tmp1 = rb_ary_dup(ary1);
11798 }
11799 return rb_ary_concat(tmp1, tmp2);
11800}
11801static VALUE
11802vm_splat_array(VALUE flag, VALUE ary)
11803{
11804 VALUE tmp = rb_check_to_array(ary);
11805 if (!((VALUE)(tmp) != ((VALUE)RUBY_Qnil))) {
11806 return __extension__ ({ const VALUE args_to_new_ary[] = {ary}; if (__builtin_constant_p(1)) { _Static_assert(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))) == (1), "rb_ary_new_from_args" ": " "numberof(args_to_new_ary) == (1)"); } rb_ary_new_from_values(((int)(sizeof(args_to_new_ary) / sizeof((args_to_new_ary)[0]))), args_to_new_ary); });
11807 }
11808 else if (!(((VALUE)(flag) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
11809 return rb_ary_dup(tmp);
11810 }
11811 else {
11812 return tmp;
11813 }
11814}
11815static VALUE
11816vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
11817{
11818 enum vm_check_match_type type = ((int)flag) & 0x03;
11819 if (flag & 0x04) {
11820 long i;
11821 const long n = rb_array_len(pattern);
11822 for (i = 0; i < n; i++) {
11823 VALUE v = (rb_array_const_ptr_transient(pattern)[i]);
11824 VALUE c = check_match(ec, v, target, type);
11825 if (!(((VALUE)(c) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
11826 return c;
11827 }
11828 }
11829 return ((VALUE)RUBY_Qfalse);
11830 }
11831 else {
11832 return check_match(ec, pattern, target, type);
11833 }
11834}
11835static VALUE
11836vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
11837{
11838 const VALUE kw_bits = *(ep - bits);
11839 if ((((int)(long)(kw_bits))&RUBY_FIXNUM_FLAG)) {
11840 unsigned int b = (unsigned int)((unsigned long)((long)(((long)(kw_bits))>>(int)(1))));
11841 if ((idx < (32-1)) && (b & (0x01 << idx)))
11842 return ((VALUE)RUBY_Qfalse);
11843 }
11844 else {
11845 ((void)0);
11846 if (rb_hash_has_key(kw_bits, (((VALUE)(idx))<<1 | RUBY_FIXNUM_FLAG))) return ((VALUE)RUBY_Qfalse);
11847 }
11848 return ((VALUE)RUBY_Qtrue);
11849}
11850static void
11851vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
11852{
11853 if (0 ||
11854 0 ||
11855 0 ||
11856 0) {
11857 switch (flag) {
11858 case 0x0008:
11859 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);
11860 return;
11861 case 0x0020:
11862 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);
11863 return;
11864 case 0x0010:
11865 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);
11866 return;
11867 case 0x0040:
11868 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);
11869 return;
11870 }
11871 }
11872}
11873static VALUE
11874vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
11875{
11876 VALUE ns;
11877 if ((ns = vm_search_const_defined_class(cbase, id)) == 0) {
11878 return ns;
11879 }
11880 else if (((flags) & 0x08)) {
11881 return rb_public_const_get_at(ns, id);
11882 }
11883 else {
11884 return rb_const_get_at(ns, id);
11885 }
11886}
11887static VALUE
11888vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
11889{
11890 if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
11891 return 0;
11892 }
11893 else if (((flags) & 0x10)) {
11895 if (tmp != super) {
11897 "superclass mismatch for class %""l""i" "\v""",
11898 rb_id2str(id));
11899 }
11900 else {
11901 return klass;
11902 }
11903 }
11904 else {
11905 return klass;
11906 }
11907}
11908static VALUE
11909vm_check_if_module(ID id, VALUE mod)
11910{
11911 if (!( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(mod))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((mod) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((mod) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((mod) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((mod) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(mod)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(mod))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
11912 return 0;
11913 }
11914 else {
11915 return mod;
11916 }
11917}
11918static VALUE
11919declare_under(ID id, VALUE cbase, VALUE c)
11920{
11922 rb_const_set(cbase, id, c);
11923 return c;
11924}
11925static VALUE
11926vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
11927{
11928 VALUE s = ((flags) & 0x10) ? super : rb_cObject;
11929 VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
11930 rb_class_inherited(s, c);
11931 return c;
11932}
11933static VALUE
11934vm_declare_module(ID id, VALUE cbase)
11935{
11936 return declare_under(id, cbase, rb_define_module_id(id));
11937}
11938__attribute__ ((__noreturn__)) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
11939static void
11940unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
11941{
11942 VALUE name = rb_id2str(id);
11943 VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
11944 name, type);
11945 VALUE location = rb_const_source_location_at(cbase, id);
11946 if (!!((VALUE)(location) != ((VALUE)RUBY_Qnil))) {
11947 rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
11948 " previous definition of %""l""i" "\v"" was here",
11949 rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
11950 }
11952}
11953static VALUE
11954vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
11955{
11956 VALUE klass;
11957 if (((flags) & 0x10) && !( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(super))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((super) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((super) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((super) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((super) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(super)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(super))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
11959 "superclass must be a Class (%""l""i" "\v"" given)",
11960 rb_obj_class(super));
11961 }
11962 vm_check_if_namespace(cbase);
11964 if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
11965 if (!vm_check_if_class(id, flags, super, klass))
11966 unmatched_redefinition("class", cbase, id, klass);
11967 return klass;
11968 }
11969 else {
11970 return vm_declare_class(id, flags, cbase, super);
11971 }
11972}
11973static VALUE
11974vm_define_module(ID id, rb_num_t flags, VALUE cbase)
11975{
11976 VALUE mod;
11977 vm_check_if_namespace(cbase);
11978 if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
11979 if (!vm_check_if_module(id, mod))
11980 unmatched_redefinition("module", cbase, id, mod);
11981 return mod;
11982 }
11983 else {
11984 return vm_declare_module(id, cbase);
11985 }
11986}
11987static VALUE
11988vm_find_or_create_class_by_id(ID id,
11989 rb_num_t flags,
11990 VALUE cbase,
11991 VALUE super)
11992{
11994 switch (type) {
11996 return vm_define_class(id, flags, cbase, super);
11998 return rb_singleton_class(cbase);
12000 return vm_define_module(id, flags, cbase);
12001 default:
12002 rb_bug("unknown defineclass type: %d", (int)type);
12003 }
12004}
12006vm_scope_visibility_get(const rb_execution_context_t *ec)
12007{
12009 if (!vm_env_cref_by_cref(cfp->ep)) {
12010 return METHOD_VISI_PUBLIC;
12011 }
12012 else {
12013 return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
12014 }
12015}
12016static int
12017vm_scope_module_func_check(const rb_execution_context_t *ec)
12018{
12020 if (!vm_env_cref_by_cref(cfp->ep)) {
12021 return 0;
12022 }
12023 else {
12024 return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
12025 }
12026}
12027static void
12028vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
12029{
12030 VALUE klass;
12032 rb_cref_t *cref = vm_ec_cref(ec);
12033 if (!is_singleton) {
12034 klass = CREF_CLASS(cref);
12035 visi = vm_scope_visibility_get(ec);
12036 }
12037 else {
12039 visi = METHOD_VISI_PUBLIC;
12040 }
12041 if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
12042 rb_raise(rb_eTypeError, "no class/module to add method");
12043 }
12044 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
12045 if (!is_singleton && vm_scope_module_func_check(ec)) {
12047 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
12048 }
12049}
12050static void
12051vm_search_method_wrap(
12052 const struct rb_control_frame_struct *reg_cfp,
12053 struct rb_call_data *cd,
12054 VALUE recv)
12055{
12056 vm_search_method(cd, recv);
12057}
12058static void
12059vm_search_invokeblock(
12060 const struct rb_control_frame_struct *reg_cfp,
12061 struct rb_call_data *cd,
12062 VALUE recv)
12063{
12064}
12065static VALUE
12066vm_invokeblock_i(
12067 struct rb_execution_context_struct *ec,
12069 struct rb_calling_info *calling,
12070 struct rb_call_data *cd)
12071{
12072 const struct rb_call_info *ci = &cd->ci;
12073 VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
12074 if (block_handler == 0) {
12075 rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
12076 }
12077 else {
12078 return vm_invoke_block(ec, (((reg_cfp))), calling, ci, block_handler);
12079 }
12080}
12081static VALUE
12082vm_sendish(
12083 struct rb_execution_context_struct *ec,
12085 struct rb_call_data *cd,
12087 void (*method_explorer)(
12088 const struct rb_control_frame_struct *reg_cfp,
12089 struct rb_call_data *cd,
12090 VALUE recv))
12091{
12092 CALL_INFO ci = &cd->ci;
12093 CALL_CACHE cc = &cd->cc;
12094 VALUE val;
12095 int argc = ci->orig_argc;
12096 VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
12097 struct rb_calling_info calling;
12098 calling.block_handler = block_handler;
12099 calling.kw_splat = ((ci)->flag & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0;
12100 calling.recv = recv;
12101 calling.argc = argc;
12102 method_explorer((((reg_cfp))), cd, recv);
12103 val = cc->call(ec, (((reg_cfp))), &calling, cd);
12104 if (val != ((VALUE)RUBY_Qundef)) {
12105 return val;
12106 }
12107 else {
12108 do { (reg_cfp) = ec->cfp; } while (0);
12109 }
12110 if (((((reg_cfp)))->iseq)->body->catch_except_p) {
12111 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
12112 return rb_vm_exec(ec, 1);
12113 }
12114 else if ((val = mjit_exec(ec)) == ((VALUE)RUBY_Qundef)) {
12115 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
12116 return rb_vm_exec(ec, 0);
12117 }
12118 else {
12119 return val;
12120 }
12121}
12122static VALUE
12123vm_opt_str_freeze(VALUE str, int bop, ID id)
12124{
12125 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
12126 return str;
12127 }
12128 else {
12129 return ((VALUE)RUBY_Qundef);
12130 }
12131}
12132static VALUE
12133vm_opt_newarray_max(rb_num_t num, const VALUE *ptr)
12134{
12135 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
12136 if (num == 0) {
12137 return ((VALUE)RUBY_Qnil);
12138 }
12139 else {
12140 struct cmp_opt_data cmp_opt = { 0, 0 };
12141 VALUE result = *ptr;
12142 rb_snum_t i = num - 1;
12143 while (i-- > 0) {
12144 const VALUE v = *++ptr;
12145 if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((v)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((result)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( ((((int)(long)(result))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) > 0) {
12146 result = v;
12147 }
12148 }
12149 return result;
12150 }
12151 }
12152 else {
12153 VALUE ary = rb_ary_new_from_values(num, ptr);
12154 return __extension__({ const int rb_funcall_argc = (0); const VALUE rb_funcall_args[] = {}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, ary, idMax, __builtin_choose_expr(__builtin_constant_p(rb_funcall_argc), (((rb_funcall_argc) == 0 ? (rb_funcall_nargs) <= 1 : (rb_funcall_argc) == (rb_funcall_nargs)) ? (rb_funcall_argc) : rb_varargs_bad_length(rb_funcall_argc, rb_funcall_nargs)), (((rb_funcall_argc) <= (rb_funcall_nargs)) ? (rb_funcall_argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", rb_funcall_argc, rb_funcall_nargs), 0))), rb_funcall_nargs ? rb_funcall_args : ((void *)0)); }); });
12155 }
12156}
12157static VALUE
12158vm_opt_newarray_min(rb_num_t num, const VALUE *ptr)
12159{
12160 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
12161 if (num == 0) {
12162 return ((VALUE)RUBY_Qnil);
12163 }
12164 else {
12165 struct cmp_opt_data cmp_opt = { 0, 0 };
12166 VALUE result = *ptr;
12167 rb_snum_t i = num - 1;
12168 while (i-- > 0) {
12169 const VALUE v = *++ptr;
12170 if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((v)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((result)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( ((((int)(long)(result))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) < 0) {
12171 result = v;
12172 }
12173 }
12174 return result;
12175 }
12176 }
12177 else {
12178 VALUE ary = rb_ary_new_from_values(num, ptr);
12179 return __extension__({ const int rb_funcall_argc = (0); const VALUE rb_funcall_args[] = {}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, ary, idMin, __builtin_choose_expr(__builtin_constant_p(rb_funcall_argc), (((rb_funcall_argc) == 0 ? (rb_funcall_nargs) <= 1 : (rb_funcall_argc) == (rb_funcall_nargs)) ? (rb_funcall_argc) : rb_varargs_bad_length(rb_funcall_argc, rb_funcall_nargs)), (((rb_funcall_argc) <= (rb_funcall_nargs)) ? (rb_funcall_argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", rb_funcall_argc, rb_funcall_nargs), 0))), rb_funcall_nargs ? rb_funcall_args : ((void *)0)); }); });
12180 }
12181}
12182static int
12183vm_ic_hit_p(IC ic, const VALUE *reg_ep)
12184{
12186 return (ic->ic_cref == ((void *)0) ||
12187 ic->ic_cref == vm_get_cref(reg_ep));
12188 }
12189 return 0;
12190}
12191static void
12192vm_ic_update(IC ic, VALUE val, const VALUE *reg_ep)
12193{
12194 ((void)0);
12195 ic->value = val;
12197 ic->ic_cref = vm_get_const_key_cref(reg_ep);
12199}
12200static VALUE
12201vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
12202{
12203 rb_thread_t *th = rb_ec_thread_ptr(ec);
12204 rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
12205 again:
12206 if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
12207 return is->once.value;
12208 }
12209 else if (is->once.running_thread == ((void *)0)) {
12210 VALUE val;
12211 is->once.running_thread = th;
12212 val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
12213 __extension__({
12214;
12215; typeof(rb_obj_write((VALUE)(ec->cfp->iseq), (VALUE *)(&is->once.value), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 4160)) unaligned_member_access_result = (rb_obj_write((VALUE)(ec->cfp->iseq), (VALUE *)(&is->once.value), (VALUE)(val), "../ruby-2.7.7/vm_insnhelper.c", 4160));
12216; unaligned_member_access_result; });
12217 is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
12218 return val;
12219 }
12220 else if (is->once.running_thread == th) {
12221 return vm_once_exec((VALUE)iseq);
12222 }
12223 else {
12224 rb_vm_check_ints(ec);
12226 goto again;
12227 }
12228}
12229static OFFSET
12230vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
12231{
12232 switch (__extension__({ VALUE arg_obj = (key); (((VALUE)(arg_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(arg_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) ? -1 : (int)(((struct RBasic*)(arg_obj))->flags & RUBY_T_MASK); })) {
12233 case -1:
12234 case RUBY_T_FLOAT:
12235 case RUBY_T_SYMBOL:
12236 case RUBY_T_BIGNUM:
12237 case RUBY_T_STRING:
12238 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
12239 st_data_t val;
12240 if (( ((((int)(long)(key))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == RUBY_T_FLOAT))) {
12241 double kval = rb_float_value_inline(key);
12242 if (!(__builtin_isinf_sign (kval)) && modf(kval, &kval) == 0.0) {
12243 key = (((kval) < (0x7fffffffffffffffL>>1)+1) && ((kval) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))) ? (((VALUE)((long)kval))<<1 | RUBY_FIXNUM_FLAG) : rb_dbl2big(kval);
12244 }
12245 }
12246 if (rb_hash_stlike_lookup(hash, key, &val)) {
12247 return ((long)(((long)((VALUE)val))>>(int)(1)));
12248 }
12249 else {
12250 return else_offset;
12251 }
12252 }
12253 }
12254 return 0;
12255}
12256__attribute__ ((__noreturn__)) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
12257static void
12258vm_stack_consistency_error(const rb_execution_context_t *ec,
12259 const rb_control_frame_t *cfp,
12260 const VALUE *bp)
12261{
12262 const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
12263 const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
12264 static const char stack_consistency_error[] =
12265 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
12266 rb_bug(stack_consistency_error, nsp, nbp);
12267}
12269vm_opt_plus(VALUE recv, VALUE obj));
12270static inline VALUE
12271vm_opt_plus(VALUE recv, VALUE obj) {
12272 if (FIXNUM_2_P(recv, obj) &&
12273 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
12274 return rb_fix_plus_fix(recv, obj);
12275 }
12276 else if (FLONUM_2_P(recv, obj) &&
12277 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
12278 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
12279 }
12280 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12281 return ((VALUE)RUBY_Qundef);
12282 }
12283 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12284 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12285 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
12286 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
12287 }
12288 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
12289 (((struct RBasic*)(obj))->klass) == rb_cString &&
12290 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
12291 return rb_str_opt_plus(recv, obj);
12292 }
12293 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
12294 (((struct RBasic*)(obj))->klass) == rb_cArray &&
12295 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
12296 return rb_ary_plus(recv, obj);
12297 }
12298 else {
12299 return ((VALUE)RUBY_Qundef);
12300 }
12301}
12302ALWAYS_INLINE(static inline VALUE
12303vm_opt_minus(VALUE recv, VALUE obj));
12304static inline VALUE
12305vm_opt_minus(VALUE recv, VALUE obj) {
12306 if (FIXNUM_2_P(recv, obj) &&
12307 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
12308 return rb_fix_minus_fix(recv, obj);
12309 }
12310 else if (FLONUM_2_P(recv, obj) &&
12311 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
12312 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
12313 }
12314 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12315 return ((VALUE)RUBY_Qundef);
12316 }
12317 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12318 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12319 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
12320 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
12321 }
12322 else {
12323 return ((VALUE)RUBY_Qundef);
12324 }
12325}
12326ALWAYS_INLINE(static inline VALUE
12327vm_opt_mult(VALUE recv, VALUE obj));
12328static inline VALUE
12329vm_opt_mult(VALUE recv, VALUE obj) {
12330 if (FIXNUM_2_P(recv, obj) &&
12331 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
12332 return rb_fix_mul_fix(recv, obj);
12333 }
12334 else if (FLONUM_2_P(recv, obj) &&
12335 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
12336 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
12337 }
12338 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12339 return ((VALUE)RUBY_Qundef);
12340 }
12341 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12342 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12343 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
12344 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
12345 }
12346 else {
12347 return ((VALUE)RUBY_Qundef);
12348 }
12349}
12350ALWAYS_INLINE(static inline VALUE
12351vm_opt_div(VALUE recv, VALUE obj));
12352static inline VALUE
12353vm_opt_div(VALUE recv, VALUE obj) {
12354 if (FIXNUM_2_P(recv, obj) &&
12355 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
12356 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
12357 }
12358 else if (FLONUM_2_P(recv, obj) &&
12359 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
12360 return rb_flo_div_flo(recv, obj);
12361 }
12362 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12363 return ((VALUE)RUBY_Qundef);
12364 }
12365 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12366 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12367 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
12368 return rb_flo_div_flo(recv, obj);
12369 }
12370 else {
12371 return ((VALUE)RUBY_Qundef);
12372 }
12373}
12374ALWAYS_INLINE(static inline VALUE
12375vm_opt_mod(VALUE recv, VALUE obj));
12376static inline VALUE
12377vm_opt_mod(VALUE recv, VALUE obj) {
12378 if (FIXNUM_2_P(recv, obj) &&
12379 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
12380 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
12381 }
12382 else if (FLONUM_2_P(recv, obj) &&
12383 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
12384 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
12385 }
12386 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12387 return ((VALUE)RUBY_Qundef);
12388 }
12389 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12390 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12391 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
12392 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
12393 }
12394 else {
12395 return ((VALUE)RUBY_Qundef);
12396 }
12397}
12399vm_opt_neq(CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj));
12400static inline VALUE
12401vm_opt_neq(CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj) {
12402 if (vm_method_cfunc_is(cd, recv, rb_obj_not_equal)) {
12403 VALUE val = opt_eq_func(recv, obj, cd_eq);
12404 if (val != ((VALUE)RUBY_Qundef)) {
12405 return !(((VALUE)(val) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
12406 }
12407 }
12408 return ((VALUE)RUBY_Qundef);
12409}
12410ALWAYS_INLINE(static inline VALUE
12411vm_opt_lt(VALUE recv, VALUE obj));
12412static inline VALUE
12413vm_opt_lt(VALUE recv, VALUE obj) {
12414 if (FIXNUM_2_P(recv, obj) &&
12415 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
12416 return (long)recv < (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12417 }
12418 else if (FLONUM_2_P(recv, obj) &&
12419 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
12420 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12421 }
12422 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12423 return ((VALUE)RUBY_Qundef);
12424 }
12425 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12426 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12427 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
12428 ;
12429 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12430 }
12431 else {
12432 return ((VALUE)RUBY_Qundef);
12433 }
12434}
12435ALWAYS_INLINE(static inline VALUE
12436vm_opt_le(VALUE recv, VALUE obj));
12437static inline VALUE
12438vm_opt_le(VALUE recv, VALUE obj) {
12439 if (FIXNUM_2_P(recv, obj) &&
12440 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
12441 return (long)recv <= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12442 }
12443 else if (FLONUM_2_P(recv, obj) &&
12444 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
12445 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12446 }
12447 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12448 return ((VALUE)RUBY_Qundef);
12449 }
12450 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12451 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12452 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
12453 ;
12454 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12455 }
12456 else {
12457 return ((VALUE)RUBY_Qundef);
12458 }
12459}
12460ALWAYS_INLINE(static inline VALUE
12461vm_opt_gt(VALUE recv, VALUE obj));
12462static inline VALUE
12463vm_opt_gt(VALUE recv, VALUE obj) {
12464 if (FIXNUM_2_P(recv, obj) &&
12465 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
12466 return (long)recv > (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12467 }
12468 else if (FLONUM_2_P(recv, obj) &&
12469 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
12470 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12471 }
12472 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12473 return ((VALUE)RUBY_Qundef);
12474 }
12475 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12476 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12477 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
12478 ;
12479 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12480 }
12481 else {
12482 return ((VALUE)RUBY_Qundef);
12483 }
12484}
12485ALWAYS_INLINE(static inline VALUE
12486vm_opt_ge(VALUE recv, VALUE obj));
12487static inline VALUE
12488vm_opt_ge(VALUE recv, VALUE obj) {
12489 if (FIXNUM_2_P(recv, obj) &&
12490 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
12491 return (long)recv >= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12492 }
12493 else if (FLONUM_2_P(recv, obj) &&
12494 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
12495 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12496 }
12497 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12498 return ((VALUE)RUBY_Qundef);
12499 }
12500 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
12501 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
12502 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
12503 ;
12504 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
12505 }
12506 else {
12507 return ((VALUE)RUBY_Qundef);
12508 }
12509}
12510ALWAYS_INLINE(static inline VALUE
12511vm_opt_ltlt(VALUE recv, VALUE obj));
12512static inline VALUE
12513vm_opt_ltlt(VALUE recv, VALUE obj) {
12514 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12515 return ((VALUE)RUBY_Qundef);
12516 }
12517 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
12518 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
12519 return rb_str_concat(recv, obj);
12520 }
12521 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
12522 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
12523 return rb_ary_push(recv, obj);
12524 }
12525 else {
12526 return ((VALUE)RUBY_Qundef);
12527 }
12528}
12529ALWAYS_INLINE(static inline VALUE
12530vm_opt_and(VALUE recv, VALUE obj));
12531static inline VALUE
12532vm_opt_and(VALUE recv, VALUE obj) {
12533 if (FIXNUM_2_P(recv, obj) &&
12534 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
12535 return (recv & obj) | 1;
12536 }
12537 else {
12538 return ((VALUE)RUBY_Qundef);
12539 }
12540}
12541ALWAYS_INLINE(static inline VALUE
12542vm_opt_or(VALUE recv, VALUE obj));
12543static inline VALUE
12544vm_opt_or(VALUE recv, VALUE obj) {
12545 if (FIXNUM_2_P(recv, obj) &&
12546 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
12547 return recv | obj;
12548 }
12549 else {
12550 return ((VALUE)RUBY_Qundef);
12551 }
12552}
12553ALWAYS_INLINE(static inline VALUE
12554vm_opt_aref(VALUE recv, VALUE obj));
12555static inline VALUE
12556vm_opt_aref(VALUE recv, VALUE obj) {
12557 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12558 if (FIXNUM_2_P(recv, obj) &&
12559 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
12560 return rb_fix_aref(recv, obj);
12561 }
12562 return ((VALUE)RUBY_Qundef);
12563 }
12564 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
12565 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
12566 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
12567 return rb_ary_entry_internal(recv, ((long)(((long)(obj))>>(int)(1))));
12568 }
12569 else {
12570 return rb_ary_aref1(recv, obj);
12571 }
12572 }
12573 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
12574 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
12575 return rb_hash_aref(recv, obj);
12576 }
12577 else {
12578 return ((VALUE)RUBY_Qundef);
12579 }
12580}
12582vm_opt_aset(VALUE recv, VALUE obj, VALUE set));
12583static inline VALUE
12584vm_opt_aset(VALUE recv, VALUE obj, VALUE set) {
12585 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12586 return ((VALUE)RUBY_Qundef);
12587 }
12588 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
12589 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
12590 (((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
12591 rb_ary_store(recv, ((long)(((long)(obj))>>(int)(1))), set);
12592 return set;
12593 }
12594 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
12595 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
12596 rb_hash_aset(recv, obj, set);
12597 return set;
12598 }
12599 else {
12600 return ((VALUE)RUBY_Qundef);
12601 }
12602}
12604vm_opt_aref_with(VALUE recv, VALUE key));
12605static inline VALUE
12606vm_opt_aref_with(VALUE recv, VALUE key) {
12607 if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
12608 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
12610 return rb_hash_aref(recv, key);
12611 }
12612 else {
12613 return ((VALUE)RUBY_Qundef);
12614 }
12615}
12617vm_opt_aset_with(VALUE recv, VALUE key, VALUE val));
12618static inline VALUE
12619vm_opt_aset_with(VALUE recv, VALUE key, VALUE val) {
12620 if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
12621 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
12623 return rb_hash_aset(recv, key, val);
12624 }
12625 else {
12626 return ((VALUE)RUBY_Qundef);
12627 }
12628}
12629static VALUE
12630vm_opt_length(VALUE recv, int bop)
12631{
12632 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12633 return ((VALUE)RUBY_Qundef);
12634 }
12635 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
12636 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
12637 if (bop == BOP_EMPTY_P) {
12638 return rb_long2num_inline((!(((struct RBasic*)(recv))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(recv))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(recv))->as.heap.len));
12639 }
12640 else {
12641 return rb_str_length(recv);
12642 }
12643 }
12644 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
12645 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
12646 return rb_long2num_inline(rb_array_len(recv));
12647 }
12648 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
12649 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
12650 return (((VALUE)(((!(((struct RBasic*)((recv)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(recv))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(recv))->as.st)->num_entries))))<<1 | RUBY_FIXNUM_FLAG);
12651 }
12652 else {
12653 return ((VALUE)RUBY_Qundef);
12654 }
12655}
12656static VALUE
12657vm_opt_empty_p(VALUE recv)
12658{
12659 switch (vm_opt_length(recv, BOP_EMPTY_P)) {
12660 case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
12661 case (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG): return ((VALUE)RUBY_Qtrue);
12662 default: return ((VALUE)RUBY_Qfalse);
12663 }
12664}
12666static VALUE
12667vm_opt_nil_p(CALL_DATA cd, VALUE recv)
12668{
12669 if (recv == ((VALUE)RUBY_Qnil) &&
12670 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
12671 return ((VALUE)RUBY_Qtrue);
12672 }
12673 else if (vm_method_cfunc_is(cd, recv, rb_false)) {
12674 return ((VALUE)RUBY_Qfalse);
12675 }
12676 else {
12677 return ((VALUE)RUBY_Qundef);
12678 }
12679}
12680static VALUE
12681fix_succ(VALUE x)
12682{
12683 switch (x) {
12684 case ~0UL:
12685 return (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
12686 case ((~0UL)>>(int)(1)):
12687 return rb_uint2big(1UL << (8 * 8 - 2));
12688 default:
12689 return x + 2;
12690 }
12691}
12692static VALUE
12693vm_opt_succ(VALUE recv)
12694{
12695 if ((((int)(long)(recv))&RUBY_FIXNUM_FLAG) &&
12696 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
12697 return fix_succ(recv);
12698 }
12699 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12700 return ((VALUE)RUBY_Qundef);
12701 }
12702 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
12703 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
12704 return rb_str_succ(recv);
12705 }
12706 else {
12707 return ((VALUE)RUBY_Qundef);
12708 }
12709}
12711vm_opt_not(CALL_DATA cd, VALUE recv));
12712static inline VALUE
12713vm_opt_not(CALL_DATA cd, VALUE recv) {
12714 if (vm_method_cfunc_is(cd, recv, rb_obj_not)) {
12715 return !(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
12716 }
12717 else {
12718 return ((VALUE)RUBY_Qundef);
12719 }
12720}
12721static VALUE
12722vm_opt_regexpmatch2(VALUE recv, VALUE obj)
12723{
12724 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12725 return ((VALUE)RUBY_Qundef);
12726 }
12727 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
12728 rb_class_of((VALUE)(obj)) == rb_cRegexp &&
12729 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
12730 return rb_reg_match(obj, recv);
12731 }
12732 else if ((((struct RBasic*)(recv))->klass) == rb_cRegexp &&
12733 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
12734 return rb_reg_match(recv, obj);
12735 }
12736 else {
12737 return ((VALUE)RUBY_Qundef);
12738 }
12739}
12741__attribute__ ((__noinline__)) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc);
12742static inline void
12743vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
12744 rb_event_flag_t pc_events, rb_event_flag_t target_event,
12745 rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val)
12746{
12747 rb_event_flag_t event = pc_events & target_event;
12748 VALUE self = (((((reg_cfp)))->self));
12749 ((void)0);
12750 if (event & global_hooks->events) {
12751 reg_cfp->pc++;
12752 vm_dtrace(event, ec);
12753 rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
12754 reg_cfp->pc--;
12755 }
12756 if (local_hooks != ((void *)0)) {
12757 if (event & local_hooks->events) {
12758 reg_cfp->pc++;
12759 rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
12760 reg_cfp->pc--;
12761 }
12762 }
12763}
12764static void
12766{
12767 rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0100| 0x0200| 0x010000| 0x020000);
12768 if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
12769 return;
12770 }
12771 else {
12772 const rb_iseq_t *iseq = reg_cfp->iseq;
12773 size_t pos = pc - iseq->body->iseq_encoded;
12774 rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
12775 rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
12776 rb_event_flag_t local_hook_events = local_hooks != ((void *)0) ? local_hooks->events : 0;
12777 enabled_flags |= local_hook_events;
12778 ((void)0);
12779 if ((pc_events & enabled_flags) == 0) {
12780 return;
12781 }
12782 else if (ec->trace_arg != ((void *)0)) {
12783 return;
12784 }
12785 else {
12786 rb_hook_list_t *global_hooks = rb_vm_global_hooks(ec);
12787 if (0) {
12788 fprintf(((__getreent())->_stderr), "vm_trace>>%4d (%4x) - %s:%d %s\n",
12789 (int)pos,
12790 (int)pc_events,
12791 (!(((struct RBasic*)(rb_iseq_path(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_path(iseq)))->as.ary : ((struct RString*)(rb_iseq_path(iseq)))->as.heap.ptr),
12792 (int)rb_iseq_line_no(iseq, pos),
12793 (!(((struct RBasic*)(rb_iseq_label(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_label(iseq)))->as.ary : ((struct RString*)(rb_iseq_label(iseq)))->as.heap.ptr));
12794 }
12795 ((void)0);
12796 ((void)0);
12797 ((void)0);
12798 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, (((VALUE)RUBY_Qundef))); } } while (0);
12799 do { if ((pc_events & (0x0001)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x0001), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
12800 do { if ((pc_events & (0x010000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x010000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
12801 do { if ((pc_events & (0x020000)) & enabled_flags) { vm_trace_hook(ec, reg_cfp, pc, pc_events, (0x020000), global_hooks, local_hooks, (((VALUE)RUBY_Qundef))); } } while (0);
12802 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, ((*(((((reg_cfp)->sp)))-(0)-1)))); } } while (0);
12803 }
12804 }
12805}static inline
12806void Init_vm_stack_canary(void) { }
12807static VALUE
12808builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12809{
12810 typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
12811 return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
12812}
12813static VALUE
12814builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12815{
12816 typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
12817 return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
12818}
12819static VALUE
12820builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12821{
12822 typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
12823 return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
12824}
12825static VALUE
12826builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12827{
12828 typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
12829 return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
12830}
12831static VALUE
12832builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12833{
12834 typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
12835 return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
12836}
12837static VALUE
12838builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12839{
12840 typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
12841 return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
12842}
12843static VALUE
12844builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12845{
12846 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);
12847 return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
12848}
12849static VALUE
12850builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12851{
12852 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);
12853 return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
12854}
12855static VALUE
12856builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12857{
12858 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);
12859 return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
12860}
12861static VALUE
12862builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12863{
12864 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);
12865 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]);
12866}
12867static VALUE
12868builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12869{
12870 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);
12871 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]);
12872}
12873static VALUE
12874builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12875{
12876 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);
12877 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]);
12878}
12879static VALUE
12880builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12881{
12882 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);
12883 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]);
12884}
12885static VALUE
12886builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12887{
12888 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);
12889 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]);
12890}
12891static VALUE
12892builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12893{
12894 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);
12895 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]);
12896}
12897static VALUE
12898builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
12899{
12900 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);
12901 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]);
12902}
12904static builtin_invoker
12905lookup_builtin_invoker(int argc)
12906{
12907 static const builtin_invoker invokers[] = {
12908 builtin_invoker0,
12909 builtin_invoker1,
12910 builtin_invoker2,
12911 builtin_invoker3,
12912 builtin_invoker4,
12913 builtin_invoker5,
12914 builtin_invoker6,
12915 builtin_invoker7,
12916 builtin_invoker8,
12917 builtin_invoker9,
12918 builtin_invoker10,
12919 builtin_invoker11,
12920 builtin_invoker12,
12921 builtin_invoker13,
12922 builtin_invoker14,
12923 builtin_invoker15,
12924 };
12925 return invokers[argc];
12926}
12927static inline VALUE
12928invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
12929{
12930 VALUE self = cfp->self;
12931 return (*lookup_builtin_invoker(bf->argc))(ec, self, argv, (rb_insn_func_t)bf->func_ptr);
12932}
12933static VALUE
12934vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
12935{
12936 return invoke_bf(ec, cfp, bf, argv);
12937}
12938static VALUE
12939vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
12940{
12941 if (0) {
12942 fprintf(((__getreent())->_stderr), "vm_invoke_builtin_delegate: passing -> ");
12943 for (int i=0; i<bf->argc; i++) {
12944 fprintf(((__getreent())->_stderr), ":%s ", rb_id2name(cfp->iseq->body->local_table[i+start_index]));
12945 }
12946 fprintf(((__getreent())->_stderr), "\n");
12947 fprintf(((__getreent())->_stderr), "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
12948 }
12949 if (bf->argc == 0) {
12950 return invoke_bf(ec, cfp, bf, ((void *)0));
12951 }
12952 else {
12953 const VALUE *argv = cfp->ep - cfp->iseq->body->local_table_size - ( 3) + 1 + start_index;
12954 return invoke_bf(ec, cfp, bf, argv);
12955 }
12956}static inline
12957VALUE
12958rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
12959{
12960 const rb_control_frame_t *cfp = ec->cfp;
12961 return cfp->ep[index];
12962}
12965};
12966static inline VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
12967static 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);
12968static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
12969static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
12970static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
12972static 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);
12973static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
12974static VALUE rb_eUncaughtThrow;
12975static ID id_result, id_tag, id_value;
12976typedef enum call_type {
12984static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
12985static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv);
12986static inline void
12987stack_check(rb_execution_context_t *ec)
12988{
12989 if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
12990 rb_ec_stack_check(ec)) {
12991 ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
12992 rb_ec_stack_overflow(ec, 0);
12993 }
12994}
12995static void
12996raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
12997 enum method_missing_reason last_call_status)
12998{
13000 VALUE format = 0;
13001 if ((__builtin_expect(!!(argc == 0), 0))) {
13002 rb_raise(rb_eArgError, "no method name given");
13003 }
13004 else if ((__builtin_expect(!!(!((((VALUE)(argv[0])&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(argv[0]) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(argv[0]) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(argv[0]))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))), 0))) {
13005 const VALUE e = rb_eArgError;
13006 rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
13007 rb_obj_class(argv[0]));
13008 }
13009 stack_check(ec);
13010 if (last_call_status & MISSING_PRIVATE) {
13011 format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
13012 }
13013 else if (last_call_status & MISSING_PROTECTED) {
13014 format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
13015 }
13016 else if (last_call_status & MISSING_VCALL) {
13017 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));
13019 }
13020 else if (last_call_status & MISSING_SUPER) {
13021 format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
13022 }
13023 {
13025 last_call_status & (MISSING_FCALL|MISSING_VCALL));
13026 if (!(last_call_status & MISSING_MISSING)) {
13027 rb_vm_pop_cfunc_frame();
13028 }
13030 }
13031}
13032static void
13033vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
13034 VALUE obj, int call_status)
13035{
13036 vm_passed_block_handler_set(ec, 0);
13037 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
13038}
13039static inline VALUE
13040method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
13041{
13042 VALUE *nargv, result, work, klass;
13043 rb_execution_context_t *ec = rb_current_execution_context();
13044 VALUE block_handler = vm_passed_block_handler(ec);
13047 if (id == idMethodMissing) {
13048 missing:
13049 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
13050 }
13051 nargv = ((VALUE*)(((size_t)(argc + 1) < 1024 / sizeof(VALUE)) ? ((work) = 0, __builtin_alloca((size_t)(argc + 1) * sizeof(VALUE))) : rb_alloc_tmp_buffer2(&(work), (long)(argc + 1), sizeof(VALUE))));
13052 nargv[0] = (rb_id2sym(id));
13053 ((__builtin_object_size((nargv + 1), 0) != (size_t)-1) ? __builtin___memcpy_chk((nargv + 1), (argv), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((nargv + 1), 0)) : __memcpy_ichk((nargv + 1), (argv), sizeof(VALUE)*(size_t)(argc)));
13054 ++argc;
13055 argv = nargv;
13056 klass = rb_class_of((VALUE)(obj));
13057 if (!klass) goto missing;
13059 if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
13060 vm_passed_block_handler_set(ec, block_handler);
13061 result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
13062 if (work) rb_free_tmp_buffer(&(work));
13063 return result;
13064}
13065static rb_control_frame_t *
13066vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
13067{
13068 if (VM_FRAME_RUBYFRAME_P(cfp)) {
13069 return (rb_control_frame_t *)cfp;
13070 }
13071 cfp = ((cfp)+1);
13072 while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
13073 if (VM_FRAME_RUBYFRAME_P(cfp)) {
13074 return (rb_control_frame_t *)cfp;
13075 }
13076 if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
13077 break;
13078 }
13079 cfp = ((cfp)+1);
13080 }
13081 return 0;
13082}
13083static void
13084rb_vm_pop_cfunc_frame(void)
13085{
13086 rb_execution_context_t *ec = rb_current_execution_context();
13087 rb_control_frame_t *cfp = ec->cfp;
13088 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
13089 do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_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);
13090 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);
13091 vm_pop_frame(ec, cfp, cfp->ep);
13092}
13093static VALUE
13094vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13095{
13096 ((void)0);
13097 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 0);
13098}
13099static VALUE
13100vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13101{
13102 ((void)0);
13103 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 1);
13104}
13105static VALUE
13106vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13107{
13108 ((void)0);
13109 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 2);
13110}
13111static VALUE
13112vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13113{
13114 ((void)0);
13115 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 3);
13116}
13117static VALUE
13118vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13119{
13120 ((void)0);
13121 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 4);
13122}
13123static VALUE
13124vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13125{
13126 ((void)0);
13127 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 5);
13128}
13129static VALUE
13130vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13131{
13132 ((void)0);
13133 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 0);
13134}
13135static VALUE
13136vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13137{
13138 ((void)0);
13139 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 1);
13140}
13141static VALUE
13142vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13143{
13144 ((void)0);
13145 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 2);
13146}
13147static VALUE
13148vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13149{
13150 ((void)0);
13151 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 3);
13152}
13153static VALUE
13154vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13155{
13156 ((void)0);
13157 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 4);
13158}
13159static VALUE
13160vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13161{
13162 ((void)0);
13163 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 5);
13164}
13165static VALUE
13166vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13167{
13168 ((void)0);
13169 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 0);
13170}
13171static VALUE
13172vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13173{
13174 ((void)0);
13175 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 1);
13176}
13177static VALUE
13178vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13179{
13180 ((void)0);
13181 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 2);
13182}
13183static VALUE
13184vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13185{
13186 ((void)0);
13187 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 3);
13188}
13189static VALUE
13190vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13191{
13192 ((void)0);
13193 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 4);
13194}
13195static VALUE
13196vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13197{
13198 ((void)0);
13199 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 5);
13200}
13201static VALUE
13202vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13203{
13204 ((void)0);
13205 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 0);
13206}
13207static VALUE
13208vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13209{
13210 ((void)0);
13211 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 1);
13212}
13213static VALUE
13214vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13215{
13216 ((void)0);
13217 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 2);
13218}
13219static VALUE
13220vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13221{
13222 ((void)0);
13223 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 3);
13224}
13225static VALUE
13226vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13227{
13228 ((void)0);
13229 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 4);
13230}
13231static VALUE
13232vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
13233{
13234 ((void)0);
13235 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 5);
13236}
13237static const vm_call_handler vm_call_iseq_handlers[][6] = {
13238{vm_call_iseq_setup_normal_0start_0params_0locals,
13239 vm_call_iseq_setup_normal_0start_0params_1locals,
13240 vm_call_iseq_setup_normal_0start_0params_2locals,
13241 vm_call_iseq_setup_normal_0start_0params_3locals,
13242 vm_call_iseq_setup_normal_0start_0params_4locals,
13243 vm_call_iseq_setup_normal_0start_0params_5locals},
13244{vm_call_iseq_setup_normal_0start_1params_0locals,
13245 vm_call_iseq_setup_normal_0start_1params_1locals,
13246 vm_call_iseq_setup_normal_0start_1params_2locals,
13247 vm_call_iseq_setup_normal_0start_1params_3locals,
13248 vm_call_iseq_setup_normal_0start_1params_4locals,
13249 vm_call_iseq_setup_normal_0start_1params_5locals},
13250{vm_call_iseq_setup_normal_0start_2params_0locals,
13251 vm_call_iseq_setup_normal_0start_2params_1locals,
13252 vm_call_iseq_setup_normal_0start_2params_2locals,
13253 vm_call_iseq_setup_normal_0start_2params_3locals,
13254 vm_call_iseq_setup_normal_0start_2params_4locals,
13255 vm_call_iseq_setup_normal_0start_2params_5locals},
13256{vm_call_iseq_setup_normal_0start_3params_0locals,
13257 vm_call_iseq_setup_normal_0start_3params_1locals,
13258 vm_call_iseq_setup_normal_0start_3params_2locals,
13259 vm_call_iseq_setup_normal_0start_3params_3locals,
13260 vm_call_iseq_setup_normal_0start_3params_4locals,
13261 vm_call_iseq_setup_normal_0start_3params_5locals}
13262};
13263static inline vm_call_handler
13264vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
13265{
13266 if ((__builtin_expect(!!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
13267 return &vm_call_iseq_setup_tailcall_0start;
13268 }
13269 else if (0) {
13270 return &vm_call_iseq_setup_normal_0start;
13271 }
13272 else {
13273 if (param_size <= 3 &&
13274 local_size <= 5) {
13275 ((void)0);
13276 return vm_call_iseq_handlers[param_size][local_size];
13277 }
13278 return &vm_call_iseq_setup_normal_0start;
13279 }
13280}
13281#define MJIT_HEADER 1
13282#define _FORTIFY_SOURCE 2
13283#define RUBY_EXPORT 1
13284#define CANONICALIZATION_FOR_MATHN 1
13285#define _XOPEN_SOURCE 1
13286#define _GNU_SOURCE 1
13287#define RUBY_INTERNAL_H 1
13288#define RUBY_H 1
13289#define HAVE_RUBY_DEFINES_H 1
13290#define HAVE_RUBY_ENCODING_H 1
13291#define HAVE_RUBY_INTERN_H 1
13292#define HAVE_RUBY_IO_H 1
13293#define HAVE_RUBY_MISSING_H 1
13294#define HAVE_RUBY_ONIGURUMA_H 1
13295#define HAVE_RUBY_RE_H 1
13296#define HAVE_RUBY_REGEX_H 1
13297#define HAVE_RUBY_RUBY_H 1
13298#define HAVE_RUBY_ST_H 1
13299#define HAVE_RUBY_THREAD_H 1
13300#define HAVE_RUBY_UTIL_H 1
13301#define HAVE_RUBY_VERSION_H 1
13302#define HAVE_RUBY_VM_H 1
13303#define RUBY_RUBY_H 1
13304#define INCLUDE_RUBY_CONFIG_H 1
13305#define HAVE_STDIO_H 1
13306#define HAVE_STDLIB_H 1
13307#define HAVE_STRING_H 1
13308#define HAVE_INTTYPES_H 1
13309#define HAVE_STDINT_H 1
13310#define HAVE_STRINGS_H 1
13311#define HAVE_SYS_STAT_H 1
13312#define HAVE_SYS_TYPES_H 1
13313#define HAVE_UNISTD_H 1
13314#define HAVE_WCHAR_H 1
13315#define STDC_HEADERS 1
13316#define _ALL_SOURCE 1
13317#define _DARWIN_C_SOURCE 1
13318#define _GNU_SOURCE 1
13319#define _HPUX_ALT_XOPEN_SOCKET_API 1
13320#define _NETBSD_SOURCE 1
13321#define _OPENBSD_SOURCE 1
13322#define _POSIX_PTHREAD_SEMANTICS 1
13323#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
13324#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
13325#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
13326#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
13327#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
13328#define __STDC_WANT_LIB_EXT2__ 1
13329#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
13330#define _TANDEM_SOURCE 1
13331#define __EXTENSIONS__ 1
13332#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
13333#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
13334#define HAVE_STMT_AND_DECL_IN_EXPR 1
13335#define HAVE_CYGWIN_CONV_PATH 1
13336#define HAVE_LIBCRYPT 1
13337#define HAVE_LIBDL 1
13338#define HAVE_DIRENT_H 1
13339#define HAVE__BOOL 1
13340#define HAVE_STDBOOL_H 1
13341#define HAVE_SYS_WAIT_H 1
13342#define HAVE_A_OUT_H 1
13343#define HAVE_GRP_H 1
13344#define HAVE_FCNTL_H 1
13345#define HAVE_FLOAT_H 1
13346#define HAVE_IEEEFP_H 1
13347#define HAVE_LANGINFO_H 1
13348#define HAVE_LIMITS_H 1
13349#define HAVE_LOCALE_H 1
13350#define HAVE_MALLOC_H 1
13351#define HAVE_PROCESS_H 1
13352#define HAVE_PWD_H 1
13353#define HAVE_STDALIGN_H 1
13354#define HAVE_SYS_FCNTL_H 1
13355#define HAVE_SYS_FILE_H 1
13356#define HAVE_SYS_IOCTL_H 1
13357#define HAVE_SYS_PARAM_H 1
13358#define HAVE_SYS_RESOURCE_H 1
13359#define HAVE_SYS_SELECT_H 1
13360#define HAVE_SYS_SOCKET_H 1
13361#define HAVE_SYS_SYSMACROS_H 1
13362#define HAVE_SYS_TIME_H 1
13363#define HAVE_SYS_TIMES_H 1
13364#define HAVE_SYS_UIO_H 1
13365#define HAVE_SYS_UTIME_H 1
13366#define HAVE_TIME_H 1
13367#define HAVE_UCONTEXT_H 1
13368#define HAVE_UTIME_H 1
13369#define HAVE_GMP_H 1
13370#define HAVE_LIBGMP 1
13371#define HAVE_TYPEOF 1
13372#define restrict __restrict__
13373#define HAVE_LONG_LONG 1
13374#define HAVE_OFF_T 1
13375#define SIZEOF_INT 4
13376#define SIZEOF_SHORT 2
13377#define SIZEOF_LONG 8
13378#define SIZEOF_LONG_LONG 8
13379#define SIZEOF___INT64 0
13380#define SIZEOF___INT128 16
13381#define SIZEOF_OFF_T 8
13382#define SIZEOF_VOIDP 8
13383#define SIZEOF_FLOAT 4
13384#define SIZEOF_DOUBLE 8
13385#define SIZEOF_TIME_T 8
13386#define SIZEOF_CLOCK_T 8
13387#define PACKED_STRUCT(x) x __attribute__((packed))
13388#define USE_UNALIGNED_MEMBER_ACCESS 1
13389#define PRI_LL_PREFIX "ll"
13390#define HAVE_PID_T 1
13391#define rb_pid_t pid_t
13392#define SIGNEDNESS_OF_PID_T -1
13393#define PIDT2NUM(v) INT2NUM(v)
13394#define NUM2PIDT(v) NUM2INT(v)
13395#define PRI_PIDT_PREFIX PRI_INT_PREFIX
13396#define HAVE_UID_T 1
13397#define rb_uid_t uid_t
13398#define SIGNEDNESS_OF_UID_T +1
13399#define UIDT2NUM(v) UINT2NUM(v)
13400#define NUM2UIDT(v) NUM2UINT(v)
13401#define PRI_UIDT_PREFIX PRI_INT_PREFIX
13402#define HAVE_GID_T 1
13403#define rb_gid_t gid_t
13404#define SIGNEDNESS_OF_GID_T +1
13405#define GIDT2NUM(v) UINT2NUM(v)
13406#define NUM2GIDT(v) NUM2UINT(v)
13407#define PRI_GIDT_PREFIX PRI_INT_PREFIX
13408#define HAVE_TIME_T 1
13409#define rb_time_t time_t
13410#define SIGNEDNESS_OF_TIME_T -1
13411#define TIMET2NUM(v) LONG2NUM(v)
13412#define NUM2TIMET(v) NUM2LONG(v)
13413#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
13414#define HAVE_DEV_T 1
13415#define rb_dev_t dev_t
13416#define SIGNEDNESS_OF_DEV_T +1
13417#define DEVT2NUM(v) UINT2NUM(v)
13418#define NUM2DEVT(v) NUM2UINT(v)
13419#define PRI_DEVT_PREFIX PRI_INT_PREFIX
13420#define HAVE_MODE_T 1
13421#define rb_mode_t mode_t
13422#define SIGNEDNESS_OF_MODE_T +1
13423#define MODET2NUM(v) UINT2NUM(v)
13424#define NUM2MODET(v) NUM2UINT(v)
13425#define PRI_MODET_PREFIX PRI_INT_PREFIX
13426#define HAVE_RLIM_T 1
13427#define rb_rlim_t rlim_t
13428#define SIGNEDNESS_OF_RLIM_T +1
13429#define RLIM2NUM(v) ULONG2NUM(v)
13430#define NUM2RLIM(v) NUM2ULONG(v)
13431#define PRI_RLIM_PREFIX PRI_LONG_PREFIX
13432#define HAVE_OFF_T 1
13433#define rb_off_t off_t
13434#define SIGNEDNESS_OF_OFF_T -1
13435#define OFFT2NUM(v) LONG2NUM(v)
13436#define NUM2OFFT(v) NUM2LONG(v)
13437#define PRI_OFFT_PREFIX PRI_LONG_PREFIX
13438#define HAVE_CLOCKID_T 1
13439#define rb_clockid_t clockid_t
13440#define SIGNEDNESS_OF_CLOCKID_T +1
13441#define CLOCKID2NUM(v) ULONG2NUM(v)
13442#define NUM2CLOCKID(v) NUM2ULONG(v)
13443#define PRI_CLOCKID_PREFIX PRI_LONG_PREFIX
13444#define HAVE_PROTOTYPES 1
13445#define TOKEN_PASTE(x,y) x ##y
13446#define STRINGIZE(expr) STRINGIZE0(expr)
13447#define HAVE_STDARG_PROTOTYPES 1
13448#define HAVE_VA_ARGS_MACRO 1
13449#define RUBY_ALIGNAS(x) __declspec(aligned(x))
13450#define RUBY_ALIGNOF alignof
13451#define CONSTFUNC(x) __attribute__ ((__const__)) x
13452#define PUREFUNC(x) __attribute__ ((__pure__)) x
13453#define NORETURN(x) __attribute__ ((__noreturn__)) x
13454#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
13455#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
13456#define DEPRECATED_TYPE(mesg,x) __attribute__ ((__deprecated__ mesg)) x
13457#define NOINLINE(x) __attribute__ ((__noinline__)) x
13458#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
13459#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
13460#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
13461#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
13462#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
13463#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
13464#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
13465#define WEAK(x) __attribute__ ((__weak__)) x
13466#define HAVE_FUNC_WEAK 1
13467#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
13468#define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x
13469#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
13470#define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x
13471#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x
13472#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x
13473#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1
13474#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name)));
13475#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)
13476#define HAVE_GCC_ATOMIC_BUILTINS 1
13477#define HAVE_GCC_SYNC_BUILTINS 1
13478#define UNREACHABLE __builtin_unreachable()
13479#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
13480#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
13481#define RUBY_FUNCTION_NAME_STRING __func__
13482#define ENUM_OVER_INT 1
13483#define HAVE_DECL_SYS_NERR 1
13484#define HAVE_DECL_GETENV 1
13485#define SIZEOF_SIZE_T 8
13486#define SIZEOF_PTRDIFF_T 8
13487#define PRI_SIZE_PREFIX "z"
13488#define PRI_PTRDIFF_PREFIX "t"
13489#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
13490#define HAVE_STRUCT_STAT_ST_BLOCKS 1
13491#define HAVE_STRUCT_STAT_ST_RDEV 1
13492#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
13493#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
13494#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
13495#define HAVE_STRUCT_STAT_ST_ATIM 1
13496#define HAVE_STRUCT_STAT_ST_MTIM 1
13497#define HAVE_STRUCT_STAT_ST_CTIM 1
13498#define HAVE_STRUCT_TIMEVAL 1
13499#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
13500#define HAVE_STRUCT_TIMESPEC 1
13501#define HAVE_STRUCT_TIMEZONE 1
13502#define HAVE_RB_FD_INIT 1
13503#define HAVE_INT8_T 1
13504#define SIZEOF_INT8_T 1
13505#define HAVE_UINT8_T 1
13506#define SIZEOF_UINT8_T 1
13507#define HAVE_INT16_T 1
13508#define SIZEOF_INT16_T 2
13509#define HAVE_UINT16_T 1
13510#define SIZEOF_UINT16_T 2
13511#define HAVE_INT32_T 1
13512#define SIZEOF_INT32_T 4
13513#define HAVE_UINT32_T 1
13514#define SIZEOF_UINT32_T 4
13515#define HAVE_INT64_T 1
13516#define SIZEOF_INT64_T 8
13517#define HAVE_UINT64_T 1
13518#define SIZEOF_UINT64_T 8
13519#define HAVE_INT128_T 1
13520#define int128_t __int128
13521#define SIZEOF_INT128_T SIZEOF___INT128
13522#define HAVE_UINT128_T 1
13523#define uint128_t unsigned __int128
13524#define SIZEOF_UINT128_T SIZEOF___INT128
13525#define HAVE_INTPTR_T 1
13526#define SIZEOF_INTPTR_T 8
13527#define HAVE_UINTPTR_T 1
13528#define SIZEOF_UINTPTR_T 8
13529#define PRI_PTR_PREFIX "l"
13530#define HAVE_SSIZE_T 1
13531#define SIZEOF_SSIZE_T 8
13532#define PRI_64_PREFIX "l"
13533#define GETGROUPS_T gid_t
13534#define RETSIGTYPE void
13535#define HAVE_ALLOCA_H 1
13536#define HAVE_ALLOCA 1
13537#define HAVE_ACOSH 1
13538#define HAVE_CBRT 1
13539#define HAVE_CRYPT 1
13540#define HAVE_DUP2 1
13541#define HAVE_ERF 1
13542#define HAVE_EXPLICIT_BZERO 1
13543#define HAVE_FFS 1
13544#define HAVE_FLOCK 1
13545#define HAVE_HYPOT 1
13546#define HAVE_LGAMMA_R 1
13547#define HAVE_MEMMOVE 1
13548#define HAVE_NAN 1
13549#define HAVE_NEXTAFTER 1
13550#define HAVE_STRCHR 1
13551#define HAVE_STRERROR 1
13552#define HAVE_STRLCAT 1
13553#define HAVE_STRLCPY 1
13554#define HAVE_STRSTR 1
13555#define HAVE_TGAMMA 1
13556#define HAVE_FINITE 1
13557#define HAVE_ISINF 1
13558#define HAVE_ISNAN 1
13559#define HAVE_SIGNBIT 1
13560#define HAVE_FORK 1
13561#define HAVE_VFORK 1
13562#define HAVE_WORKING_VFORK 1
13563#define HAVE_WORKING_FORK 1
13564#define HAVE__LONGJMP 1
13565#define HAVE_ARC4RANDOM_BUF 1
13566#define HAVE_ATAN2L 1
13567#define HAVE_ATAN2F 1
13568#define HAVE_CHROOT 1
13569#define HAVE_CLOCK_GETTIME 1
13570#define HAVE_COSH 1
13571#define HAVE_CRYPT_R 1
13572#define HAVE_DIRFD 1
13573#define HAVE_DLOPEN 1
13574#define HAVE_DLADDR 1
13575#define HAVE_DUP 1
13576#define HAVE_DUP3 1
13577#define HAVE_EACCESS 1
13578#define HAVE_ENDGRENT 1
13579#define HAVE_FCHMOD 1
13580#define HAVE_FCHOWN 1
13581#define HAVE_FCNTL 1
13582#define HAVE_FDATASYNC 1
13583#define HAVE_FDOPENDIR 1
13584#define HAVE_FMOD 1
13585#define HAVE_FSTATAT 1
13586#define HAVE_FSYNC 1
13587#define HAVE_FTRUNCATE 1
13588#define HAVE_GETCWD 1
13589#define HAVE_GETGRNAM 1
13590#define HAVE_GETGRNAM_R 1
13591#define HAVE_GETGROUPS 1
13592#define HAVE_GETLOGIN 1
13593#define HAVE_GETLOGIN_R 1
13594#define HAVE_GETPGID 1
13595#define HAVE_GETPGRP 1
13596#define HAVE_GETPRIORITY 1
13597#define HAVE_GETPWNAM 1
13598#define HAVE_GETPWNAM_R 1
13599#define HAVE_GETPWUID 1
13600#define HAVE_GETPWUID_R 1
13601#define HAVE_GETRANDOM 1
13602#define HAVE_GETRLIMIT 1
13603#define HAVE_GETSID 1
13604#define HAVE_GETTIMEOFDAY 1
13605#define HAVE_GMTIME_R 1
13606#define HAVE_GRANTPT 1
13607#define HAVE_INITGROUPS 1
13608#define HAVE_IOCTL 1
13609#define HAVE_ISSETUGID 1
13610#define HAVE_KILLPG 1
13611#define HAVE_LCHOWN 1
13612#define HAVE_LINK 1
13613#define HAVE_LLABS 1
13614#define HAVE_LOCKF 1
13615#define HAVE_LOG2 1
13616#define HAVE_LSTAT 1
13617#define HAVE_LUTIMES 1
13618#define HAVE_MALLOC_USABLE_SIZE 1
13619#define HAVE_MBLEN 1
13620#define HAVE_MEMALIGN 1
13621#define HAVE_WRITEV 1
13622#define HAVE_MEMRCHR 1
13623#define HAVE_MEMMEM 1
13624#define HAVE_MKFIFO 1
13625#define HAVE_MKNOD 1
13626#define HAVE_MKTIME 1
13627#define HAVE_OPENAT 1
13628#define HAVE_PIPE2 1
13629#define HAVE_POLL 1
13630#define HAVE_POSIX_FADVISE 1
13631#define HAVE_POSIX_MEMALIGN 1
13632#define HAVE_PPOLL 1
13633#define HAVE_PREAD 1
13634#define HAVE_PWRITE 1
13635#define HAVE_QSORT_R 1
13636#define HAVE_READLINK 1
13637#define HAVE_REALPATH 1
13638#define HAVE_ROUND 1
13639#define HAVE_SCHED_GETAFFINITY 1
13640#define HAVE_SEEKDIR 1
13641#define HAVE_SETEGID 1
13642#define HAVE_SETENV 1
13643#define HAVE_SETEUID 1
13644#define HAVE_SETGID 1
13645#define HAVE_SETGROUPS 1
13646#define HAVE_SETPGID 1
13647#define HAVE_SETPGRP 1
13648#define HAVE_SETREGID 1
13649#define HAVE_SETREUID 1
13650#define HAVE_SETRLIMIT 1
13651#define HAVE_SETSID 1
13652#define HAVE_SETUID 1
13653#define HAVE_SHUTDOWN 1
13654#define HAVE_SIGACTION 1
13655#define HAVE_SIGALTSTACK 1
13656#define HAVE_SIGPROCMASK 1
13657#define HAVE_SINH 1
13658#define HAVE_SPAWNV 1
13659#define HAVE_SYMLINK 1
13660#define HAVE_SYSCONF 1
13661#define HAVE_TANH 1
13662#define HAVE_TELLDIR 1
13663#define HAVE_TIMEGM 1
13664#define HAVE_TIMES 1
13665#define HAVE_TRUNCATE 1
13666#define HAVE_UNSETENV 1
13667#define HAVE_UTIMENSAT 1
13668#define HAVE_UTIMES 1
13669#define HAVE_WAIT4 1
13670#define HAVE_WAITPID 1
13671#define HAVE_CRYPT_H 1
13672#define HAVE_STRUCT_CRYPT_DATA_INITIALIZED 1
13673#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
13674#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
13675#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
13676#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
13677#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
13678#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
13679#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
13680#define HAVE_BUILTIN___BUILTIN_CLZ 1
13681#define HAVE_BUILTIN___BUILTIN_CLZL 1
13682#define HAVE_BUILTIN___BUILTIN_CLZLL 1
13683#define HAVE_BUILTIN___BUILTIN_CTZ 1
13684#define HAVE_BUILTIN___BUILTIN_CTZLL 1
13685#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
13686#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
13687#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
13688#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
13689#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
13690#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
13691#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
13692#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
13693#define HAVE_BUILTIN___BUILTIN_TRAP 1
13694#define HAVE_GNU_QSORT_R 1
13695#define ATAN2_INF_C99 1
13696#define HAVE_CLOCK_GETRES 1
13697#define HAVE_LIBRT 1
13698#define HAVE_LIBRT 1
13699#define HAVE_TIMER_CREATE 1
13700#define HAVE_TIMER_SETTIME 1
13701#define HAVE_STRUCT_TM_TM_ZONE 1
13702#define HAVE_TM_ZONE 1
13703#define HAVE_STRUCT_TM_TM_GMTOFF 1
13704#define HAVE_DAYLIGHT 1
13705#define NEGATIVE_TIME_T 1
13706#define POSIX_SIGNAL 1
13707#define HAVE_SIG_T 1
13708#define RSHIFT(x,y) ((x)>>(int)(y))
13709#define HAVE__SC_CLK_TCK 1
13710#define STACK_GROW_DIRECTION -1
13711#define COROUTINE_H "coroutine/ucontext/Context.h"
13712#define _REENTRANT 1
13713#define _THREAD_SAFE 1
13714#define HAVE_LIBPTHREAD 1
13715#define HAVE_SCHED_YIELD 1
13716#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
13717#define HAVE_PTHREAD_ATTR_GETSTACK 1
13718#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
13719#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
13720#define HAVE_PTHREAD_SIGMASK 1
13721#define HAVE_PTHREAD_SETNAME_NP 1
13722#define HAVE_PTHREAD_GETATTR_NP 1
13723#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(pthread_self(), name)
13724#define SET_ANOTHER_THREAD_NAME(thid,name) pthread_setname_np(thid, name)
13725#define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t *mc = &(uc)->uc_mcontext
13726#define HAVE_GETCONTEXT 1
13727#define HAVE_SETCONTEXT 1
13728#define DLEXT_MAXLEN 3
13729#define DLEXT ".so"
13730#define LIBDIR_BASENAME "lib"
13731#define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat"
13732#define HAVE__SETJMP 1
13733#define RUBY_SETJMP(env) __builtin_setjmp((env))
13734#define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
13735#define USE_MJIT 1
13736#define HAVE_PTHREAD_H 1
13737#define RUBY_PLATFORM "x86_64-cygwin"
13738#define RUBY_DEFINES_H 1
13739#define HAVE_ATTRIBUTE_ERRORFUNC 1
13740#define HAVE_ATTRIBUTE_WARNINGFUNC 1
13741#define GCC_VERSION_SINCE(major,minor,patchlevel) ((__GNUC__ > (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ > (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))))
13742#define GCC_VERSION_BEFORE(major,minor,patchlevel) ((__GNUC__ < (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ < (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ <= (patchlevel))))))
13743#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
13744#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
13745#define COLDFUNC __attribute__((cold))
13746#define PRINTF_ARGS(decl,string_index,first_to_check) decl __attribute__((format(printf, string_index, first_to_check)))
13747#define RB_GNUC_EXTENSION __extension__
13748#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
13749#define _STDIO_H_
13750#define _ANSIDECL_H_
13751#define __NEWLIB_H__ 1
13752#define _NEWLIB_VERSION_H__ 1
13753#define _NEWLIB_VERSION "4.1.0"
13754#define __NEWLIB__ 4
13755#define __NEWLIB_MINOR__ 1
13756#define __NEWLIB_PATCHLEVEL__ 0
13757#define _WANT_IO_C99_FORMATS 1
13758#define _WANT_IO_LONG_LONG 1
13759#define _WANT_IO_LONG_DOUBLE 1
13760#define _WANT_IO_POS_ARGS 1
13761#define _REENT_CHECK_VERIFY 1
13762#define _MB_CAPABLE 1
13763#define _MB_LEN_MAX 8
13764#define _ATEXIT_DYNAMIC_ALLOC 1
13765#define _HAVE_LONG_DOUBLE 1
13766#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
13767#define _FVWRITE_IN_STREAMIO 1
13768#define _FSEEK_OPTIMIZATION 1
13769#define _WIDE_ORIENT 1
13770#define _UNBUF_STREAM_OPT 1
13771#define __SYS_CONFIG_H__
13772#define __IEEE_LITTLE_ENDIAN
13773#define _SUPPORTS_ERREXCEPT
13774#define __OBSOLETE_MATH_DEFAULT 0
13775#define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT
13776#define _SYS_FEATURES_H
13777#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
13778#define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)
13779#undef _ATFILE_SOURCE
13780#define _ATFILE_SOURCE 1
13781#undef _DEFAULT_SOURCE
13782#define _DEFAULT_SOURCE 1
13783#undef _ISOC99_SOURCE
13784#define _ISOC99_SOURCE 1
13785#undef _ISOC11_SOURCE
13786#define _ISOC11_SOURCE 1
13787#undef _POSIX_SOURCE
13788#define _POSIX_SOURCE 1
13789#undef _POSIX_C_SOURCE
13790#define _POSIX_C_SOURCE 200809L
13791#undef _XOPEN_SOURCE
13792#define _XOPEN_SOURCE 700
13793#undef _XOPEN_SOURCE_EXTENDED
13794#define _XOPEN_SOURCE_EXTENDED 1
13795#undef _POSIX_SOURCE
13796#define _POSIX_SOURCE 1
13797#undef _POSIX_C_SOURCE
13798#define _POSIX_C_SOURCE 200809L
13799#undef _ATFILE_SOURCE
13800#define _ATFILE_SOURCE 1
13801#define __ATFILE_VISIBLE 1
13802#define __BSD_VISIBLE 1
13803#define __GNU_VISIBLE 1
13804#define __ISO_C_VISIBLE 2011
13805#define __LARGEFILE_VISIBLE 1
13806#define __MISC_VISIBLE 1
13807#define __POSIX_VISIBLE 200809
13808#define __SVID_VISIBLE 1
13809#define __XSI_VISIBLE 700
13810#define __SSP_FORTIFY_LEVEL 2
13811#define _POSIX_VERSION 200809L
13812#define _POSIX2_VERSION 200809L
13813#define _XOPEN_VERSION __XSI_VISIBLE
13814#define _POSIX_ADVISORY_INFO 200809L
13815#define _POSIX_ASYNCHRONOUS_IO 200809L
13816#define _POSIX_BARRIERS 200809L
13817#define _POSIX_CHOWN_RESTRICTED 1
13818#define _POSIX_CLOCK_SELECTION 200809L
13819#define _POSIX_CPUTIME 200809L
13820#define _POSIX_FSYNC 200809L
13821#define _POSIX_IPV6 200809L
13822#define _POSIX_JOB_CONTROL 1
13823#define _POSIX_MAPPED_FILES 200809L
13824#define _POSIX_MEMLOCK_RANGE 200809L
13825#define _POSIX_MEMORY_PROTECTION 200809L
13826#define _POSIX_MESSAGE_PASSING 200809L
13827#define _POSIX_MONOTONIC_CLOCK 200809L
13828#define _POSIX_NO_TRUNC 1
13829#define _POSIX_PRIORITY_SCHEDULING 200809L
13830#define _POSIX_RAW_SOCKETS 200809L
13831#define _POSIX_READER_WRITER_LOCKS 200809L
13832#define _POSIX_REALTIME_SIGNALS 200809L
13833#define _POSIX_REGEXP 1
13834#define _POSIX_SAVED_IDS 1
13835#define _POSIX_SEMAPHORES 200809L
13836#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
13837#define _POSIX_SHELL 1
13838#define _POSIX_SPAWN 200809L
13839#define _POSIX_SPIN_LOCKS 200809L
13840#define _POSIX_SYNCHRONIZED_IO 200809L
13841#define _POSIX_THREAD_ATTR_STACKADDR 200809L
13842#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
13843#define _POSIX_THREAD_CPUTIME 200809L
13844#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
13845#define _POSIX_THREAD_PROCESS_SHARED 200809L
13846#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
13847#define _POSIX_THREADS 200809L
13848#define _POSIX_TIMEOUTS 200809L
13849#define _POSIX_TIMERS 200809L
13850#define _POSIX_VDISABLE '\0'
13851#define _POSIX2_C_VERSION _POSIX2_VERSION
13852#define _POSIX2_C_BIND _POSIX2_VERSION
13853#define _POSIX2_C_DEV _POSIX2_VERSION
13854#define _POSIX2_CHAR_TERM _POSIX2_VERSION
13855#define _POSIX2_SW_DEV _POSIX2_VERSION
13856#define _POSIX2_UPE _POSIX2_VERSION
13857#define _POSIX_V6_ILP32_OFF32 -1
13858#define _POSIX_V6_ILP32_OFFBIG -1
13859#define _POSIX_V6_LP64_OFF64 1
13860#define _POSIX_V6_LPBIG_OFFBIG 1
13861#define _POSIX_V7_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
13862#define _POSIX_V7_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
13863#define _POSIX_V7_LP64_OFF64 _POSIX_V6_LP64_OFF64
13864#define _POSIX_V7_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
13865#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
13866#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
13867#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
13868#define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
13869#define _XOPEN_CRYPT 1
13870#define _XOPEN_ENH_I18N 1
13871#define _XOPEN_SHM 1
13872#define __STDC_ISO_10646__ 201806L
13873#define _POINTER_INT long
13874#undef __RAND_MAX
13875#define __RAND_MAX 0x7fffffff
13876#define _CYGWIN_CONFIG_H
13877#define __DYNAMIC_REENT__
13878#define __SYMBOL_PREFIX
13879#define _SYMSTR(x) __SYMBOL_PREFIX #x
13880#define __FILENAME_MAX__ 4096
13881#define _READ_WRITE_RETURN_TYPE _ssize_t
13882#define _READ_WRITE_BUFSIZE_TYPE size_t
13883#define __LARGE64_FILES 1
13884#define __USE_INTERNAL_STAT64 1
13885#define __LINUX_ERRNO_EXTENSIONS__ 1
13886#define _MB_EXTENDED_CHARSETS_ALL 1
13887#define __HAVE_LOCALE_INFO__ 1
13888#define __HAVE_LOCALE_INFO_EXTENDED__ 1
13889#define _WANT_C99_TIME_FORMATS 1
13890#define _GLIBC_EXTENSION 1
13891#define _STDIO_BSD_SEMANTICS 1
13892#define __TM_GMTOFF tm_gmtoff
13893#define __TM_ZONE tm_zone
13894#define _USE_LONG_TIME_T 1
13895#define __EXPORT
13896#define __IMPORT __declspec(dllimport)
13897#define DEFAULT_LOCALE "C.UTF-8"
13898#define _MB_EXTENDED_CHARSETS_ISO 1
13899#define _MB_EXTENDED_CHARSETS_WINDOWS 1
13900#define _BEGIN_STD_C
13901#define _END_STD_C
13902#define _NOTHROW
13903#define _LONG_DOUBLE long double
13904#define _ATTRIBUTE(attrs) __attribute__ (attrs)
13905#define _ELIDABLE_INLINE static __inline__
13906#define _NOINLINE __attribute__ ((__noinline__))
13907#define _NOINLINE_STATIC _NOINLINE static
13908#define _FSTDIO
13909#define __need_size_t
13910#define __need_NULL
13911#define _SYS_CDEFS_H_
13912#define _MACHINE__DEFAULT_TYPES_H
13913#define __EXP(x) __ ##x ##__
13914#define __have_longlong64 1
13915#define __have_long64 1
13916#define ___int8_t_defined 1
13917#define ___int16_t_defined 1
13918#define ___int32_t_defined 1
13919#define ___int64_t_defined 1
13920#define ___int_least8_t_defined 1
13921#define ___int_least16_t_defined 1
13922#define ___int_least32_t_defined 1
13923#define ___int_least64_t_defined 1
13924#undef __EXP
13925#define __size_t__
13926#define __SIZE_T__
13927#define _SIZE_T
13928#define _SYS_SIZE_T_H
13929#define _T_SIZE_
13930#define _T_SIZE
13931#define __SIZE_T
13932#define _SIZE_T_
13933#define _BSD_SIZE_T_
13934#define _SIZE_T_DEFINED_
13935#define _SIZE_T_DEFINED
13936#define _BSD_SIZE_T_DEFINED_
13937#define _SIZE_T_DECLARED
13938#define ___int_size_t_h
13939#define _GCC_SIZE_T
13940#define _SIZET_
13941#define __size_t
13942#undef __need_size_t
13943#undef NULL
13944#define NULL ((void *)0)
13945#undef __need_NULL
13946#define __PMT(args) args
13947#define __DOTS , ...
13948#define __THROW
13949#define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname
13950#define __ptr_t void *
13951#define __long_double_t long double
13952#define __attribute_malloc__
13953#define __attribute_pure__
13954#define __attribute_format_strfmon__(a,b)
13955#define __flexarr [0]
13956#define __bounded
13957#define __unbounded
13958#define __ptrvalue
13959#define __has_extension __has_feature
13960#define __has_feature(x) 0
13961#define __BEGIN_DECLS
13962#define __END_DECLS
13963#define __GNUCLIKE_ASM 3
13964#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
13965#define __GNUCLIKE___TYPEOF 1
13966#define __GNUCLIKE___OFFSETOF 1
13967#define __GNUCLIKE___SECTION 1
13968#define __GNUCLIKE_CTOR_SECTION_HANDLING 1
13969#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
13970#define __GNUCLIKE_BUILTIN_VARARGS 1
13971#define __GNUCLIKE_BUILTIN_STDARG 1
13972#define __GNUCLIKE_BUILTIN_VAALIST 1
13973#define __GNUC_VA_LIST_COMPATIBILITY 1
13974#define __compiler_membar() __asm __volatile(" " : : : "memory")
13975#define __GNUCLIKE_BUILTIN_NEXT_ARG 1
13976#define __GNUCLIKE_MATH_BUILTIN_RELOPS
13977#define __GNUCLIKE_BUILTIN_MEMCPY 1
13978#define __CC_SUPPORTS_INLINE 1
13979#define __CC_SUPPORTS___INLINE 1
13980#define __CC_SUPPORTS___INLINE__ 1
13981#define __CC_SUPPORTS___FUNC__ 1
13982#define __CC_SUPPORTS_WARNING 1
13983#define __CC_SUPPORTS_VARADIC_XXX 1
13984#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
13985#define __P(protos) protos
13986#define __CONCAT1(x,y) x ## y
13987#define __CONCAT(x,y) __CONCAT1(x,y)
13988#define __STRING(x) #x
13989#define __XSTRING(x) __STRING(x)
13990#define __const const
13991#define __signed signed
13992#define __volatile volatile
13993#define __weak_symbol __attribute__((__weak__))
13994#define __dead2 __attribute__((__noreturn__))
13995#define __pure2 __attribute__((__const__))
13996#define __unused __attribute__((__unused__))
13997#define __used __attribute__((__used__))
13998#define __packed __attribute__((__packed__))
13999#define __aligned(x) __attribute__((__aligned__(x)))
14000#define __section(x) __attribute__((__section__(x)))
14001#define __alloc_size(x) __attribute__((__alloc_size__(x)))
14002#define __alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))
14003#define __alloc_align(x) __attribute__((__alloc_align__(x)))
14004#define __generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)
14005#define __min_size(x) static (x)
14006#define __malloc_like __attribute__((__malloc__))
14007#define __pure __attribute__((__pure__))
14008#define __always_inline __inline__ __attribute__((__always_inline__))
14009#define __noinline __attribute__ ((__noinline__))
14010#define __nonnull(x) __attribute__((__nonnull__ x))
14011#define __nonnull_all __attribute__((__nonnull__))
14012#define __fastcall __attribute__((__fastcall__))
14013#define __result_use_check __attribute__((__warn_unused_result__))
14014#define __returns_twice __attribute__((__returns_twice__))
14015#define __unreachable() __builtin_unreachable()
14016#define __restrict restrict
14017#define __predict_true(exp) __builtin_expect((exp), 1)
14018#define __predict_false(exp) __builtin_expect((exp), 0)
14019#define __null_sentinel __attribute__((__sentinel__))
14020#define __exported __attribute__((__visibility__("default")))
14021#define __hidden
14022#define __offsetof(type,field) offsetof(type, field)
14023#define __rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))
14024#define __containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})
14025#define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
14026#define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
14027#define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
14028#define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
14029#define __strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
14030#define __printf0like(fmtarg,firstvararg)
14031#define __strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
14032#define __weak_reference(sym,alias) __asm__(".stabs \"_" #alias "\",11,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
14033#define __warn_references(sym,msg) __asm__(".stabs \"" msg "\",30,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
14034#define __FBSDID(s) struct __hack
14035#define __RCSID(s) struct __hack
14036#define __RCSID_SOURCE(s) struct __hack
14037#define __SCCSID(s) struct __hack
14038#define __COPYRIGHT(s) struct __hack
14039#define __DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))
14040#define __DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))
14041#define __DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))
14042#define _Nonnull
14043#define _Nullable
14044#define _Null_unspecified
14045#define __NULLABILITY_PRAGMA_PUSH
14046#define __NULLABILITY_PRAGMA_POP
14047#define __arg_type_tag(arg_kind,arg_idx,type_tag_idx)
14048#define __datatype_type_tag(kind,type)
14049#define __lock_annotate(x)
14050#define __lockable __lock_annotate(lockable)
14051#define __locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))
14052#define __locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))
14053#define __trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))
14054#define __trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))
14055#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
14056#define __asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))
14057#define __asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))
14058#define __requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))
14059#define __requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))
14060#define __requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))
14061#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
14062#define __nosanitizeaddress
14063#define __nosanitizethread
14064#define __guarded_by(x) __lock_annotate(guarded_by(x))
14065#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))
14066#define _STDDEF_H
14067#define _STDDEF_H_
14068#define _ANSI_STDDEF_H
14069#define _PTRDIFF_T
14070#define _T_PTRDIFF_
14071#define _T_PTRDIFF
14072#define __PTRDIFF_T
14073#define _PTRDIFF_T_
14074#define _BSD_PTRDIFF_T_
14075#define ___int_ptrdiff_t_h
14076#define _GCC_PTRDIFF_T
14077#define _PTRDIFF_T_DECLARED
14078#undef __need_ptrdiff_t
14079#undef __need_size_t
14080#define __wchar_t__
14081#define __WCHAR_T__
14082#define _WCHAR_T
14083#define _T_WCHAR_
14084#define _T_WCHAR
14085#define __WCHAR_T
14086#define _WCHAR_T_
14087#define _BSD_WCHAR_T_
14088#define _WCHAR_T_DEFINED_
14089#define _WCHAR_T_DEFINED
14090#define _WCHAR_T_H
14091#define ___int_wchar_t_h
14092#define __INT_WCHAR_T_H
14093#define _GCC_WCHAR_T
14094#define _WCHAR_T_DECLARED
14095#undef _BSD_WCHAR_T_
14096#undef __need_wchar_t
14097#undef NULL
14098#define NULL ((void *)0)
14099#undef __need_NULL
14100#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14101#define _GCC_MAX_ALIGN_T
14102#define __need___va_list
14103#undef __need___va_list
14104#define __GNUC_VA_LIST
14105#define _VA_LIST_DEFINED
14106#define _SYS_REENT_H_
14107#define _SYS__TYPES_H
14108#define __need_size_t
14109#define __need_wint_t
14110#undef __need_ptrdiff_t
14111#undef __need_size_t
14112#undef __need_wchar_t
14113#define _WINT_T
14114#undef __need_wint_t
14115#undef NULL
14116#define NULL ((void *)0)
14117#undef __need_NULL
14118#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14119#define _MACHINE__TYPES_H
14120#define __machine_blkcnt_t_defined
14121#define __machine_blksize_t_defined
14122#define __machine_dev_t_defined
14123#define __machine_fsblkcnt_t_defined
14124#define __machine_fsfilcnt_t_defined
14125#define __machine_uid_t_defined
14126#define __machine_gid_t_defined
14127#define __machine_ino_t_defined
14128#define __machine_key_t_defined
14129#define __machine_sa_family_t_defined
14130#define __machine_socklen_t_defined
14131#undef __size_t
14132#define unsigned signed
14133#undef unsigned
14134#define _CLOCK_T_ unsigned long
14135#define _TIME_T_ long
14136#define _CLOCKID_T_ unsigned long
14137#define _TIMER_T_ unsigned long
14138#define _NULL 0
14139#define __Long int
14140#define _SYS_LOCK_H_
14141#define _LOCK_RECURSIVE_T _LOCK_T
14142#define _LOCK_T_RECURSIVE_INITIALIZER ((_LOCK_T)18)
14143#define _LOCK_T_INITIALIZER ((_LOCK_T)19)
14144#define __LOCK_INIT(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_INITIALIZER;
14145#define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_RECURSIVE_INITIALIZER;
14146#define __lock_init(__lock) __cygwin_lock_init(&__lock)
14147#define __lock_init_recursive(__lock) __cygwin_lock_init_recursive(&__lock)
14148#define __lock_close(__lock) __cygwin_lock_fini(&__lock)
14149#define __lock_close_recursive(__lock) __cygwin_lock_fini(&__lock)
14150#define __lock_acquire(__lock) __cygwin_lock_lock(&__lock)
14151#define __lock_acquire_recursive(__lock) __cygwin_lock_lock(&__lock)
14152#define __lock_try_acquire(lock) __cygwin_lock_trylock(&__lock)
14153#define __lock_try_acquire_recursive(lock) __cygwin_lock_trylock(&__lock)
14154#define __lock_release(__lock) __cygwin_lock_unlock(&__lock)
14155#define __lock_release_recursive(__lock) __cygwin_lock_unlock(&__lock)
14156#define _ATEXIT_SIZE 32
14157#define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
14158#define _REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT,
14159#define _REENT_SMALL_CHECK_INIT(ptr)
14160#define _RAND48_SEED_0 (0x330e)
14161#define _RAND48_SEED_1 (0xabcd)
14162#define _RAND48_SEED_2 (0x1234)
14163#define _RAND48_MULT_0 (0xe66d)
14164#define _RAND48_MULT_1 (0xdeec)
14165#define _RAND48_MULT_2 (0x0005)
14166#define _RAND48_ADD (0x000b)
14167#define _REENT_EMERGENCY_SIZE 25
14168#define _REENT_ASCTIME_SIZE 26
14169#define _REENT_SIGNAL_SIZE 24
14170#define _N_LISTS 30
14171#define _REENT_STDIO_STREAM(var,index) &(var)->__sf[index]
14172#define _REENT_INIT(var) { 0, _REENT_STDIO_STREAM(&(var), 0), _REENT_STDIO_STREAM(&(var), 1), _REENT_STDIO_STREAM(&(var), 2), 0, "", 0, _NULL, 0, _NULL, _NULL, 0, _NULL, _NULL, 0, _NULL, { { 0, _NULL, "", {0, 0, 0, 0, 0, 0, 0, 0, 0}, 0, 1, { {_RAND48_SEED_0, _RAND48_SEED_1, _RAND48_SEED_2}, {_RAND48_MULT_0, _RAND48_MULT_1, _RAND48_MULT_2}, _RAND48_ADD }, {0, {0}}, {0, {0}}, {0, {0}}, "", "", 0, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}}, {0, {0}} } }, _REENT_INIT_ATEXIT _NULL, {_NULL, 0, _NULL} }
14173#define _REENT_INIT_PTR_ZEROED(var) { (var)->_stdin = _REENT_STDIO_STREAM(var, 0); (var)->_stdout = _REENT_STDIO_STREAM(var, 1); (var)->_stderr = _REENT_STDIO_STREAM(var, 2); (var)->_new._reent._rand_next = 1; (var)->_new._reent._r48._seed[0] = _RAND48_SEED_0; (var)->_new._reent._r48._seed[1] = _RAND48_SEED_1; (var)->_new._reent._r48._seed[2] = _RAND48_SEED_2; (var)->_new._reent._r48._mult[0] = _RAND48_MULT_0; (var)->_new._reent._r48._mult[1] = _RAND48_MULT_1; (var)->_new._reent._r48._mult[2] = _RAND48_MULT_2; (var)->_new._reent._r48._add = _RAND48_ADD; }
14174#define _REENT_CHECK_RAND48(ptr)
14175#define _REENT_CHECK_MP(ptr)
14176#define _REENT_CHECK_TM(ptr)
14177#define _REENT_CHECK_ASCTIME_BUF(ptr)
14178#define _REENT_CHECK_EMERGENCY(ptr)
14179#define _REENT_CHECK_MISC(ptr)
14180#define _REENT_CHECK_SIGNAL_BUF(ptr)
14181#define _REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)
14182#define _REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)
14183#define _REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)
14184#define _REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)
14185#define _REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)
14186#define _REENT_MP_RESULT(ptr) ((ptr)->_result)
14187#define _REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)
14188#define _REENT_MP_P5S(ptr) ((ptr)->_p5s)
14189#define _REENT_MP_FREELIST(ptr) ((ptr)->_freelist)
14190#define _REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)
14191#define _REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)
14192#define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
14193#define _REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)
14194#define _REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)
14195#define _REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)
14196#define _REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)
14197#define _REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)
14198#define _REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)
14199#define _REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)
14200#define _REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)
14201#define _REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)
14202#define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)
14203#define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)
14204#define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))
14205#define _REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }
14206#define _Kmax (sizeof (size_t) << 3)
14207#define __ATTRIBUTE_IMPURE_PTR__
14208#define _REENT (__getreent())
14209#define _GLOBAL_REENT _global_impure_ptr
14210#define _GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)
14211#define __BIT_TYPES_DEFINED__ 1
14212#define _SYS_TYPES_H
14213#define _SYS__STDINT_H
14214#define _INT8_T_DECLARED
14215#define _UINT8_T_DECLARED
14216#define __int8_t_defined 1
14217#define _INT16_T_DECLARED
14218#define _UINT16_T_DECLARED
14219#define __int16_t_defined 1
14220#define _INT32_T_DECLARED
14221#define _UINT32_T_DECLARED
14222#define __int32_t_defined 1
14223#define _INT64_T_DECLARED
14224#define _UINT64_T_DECLARED
14225#define __int64_t_defined 1
14226#define _INTMAX_T_DECLARED
14227#define _UINTMAX_T_DECLARED
14228#define _INTPTR_T_DECLARED
14229#define _UINTPTR_T_DECLARED
14230#define __MACHINE_ENDIAN_H__
14231#define _BITS_ENDIAN_H_
14232#define __BIG_ENDIAN 4321
14233#define __LITTLE_ENDIAN 1234
14234#define __BYTE_ORDER __LITTLE_ENDIAN
14235#define _LITTLE_ENDIAN __LITTLE_ENDIAN
14236#define _BIG_ENDIAN __BIG_ENDIAN
14237#define _PDP_ENDIAN __PDP_ENDIAN
14238#define _BYTE_ORDER __BYTE_ORDER
14239#define __machine_host_to_from_network_defined
14240#define __htonl(_x) __ntohl(_x)
14241#define __htons(_x) __ntohs(_x)
14242#define _QUAD_HIGHWORD 1
14243#define _QUAD_LOWWORD 0
14244#define LITTLE_ENDIAN _LITTLE_ENDIAN
14245#define BIG_ENDIAN _BIG_ENDIAN
14246#define PDP_ENDIAN _PDP_ENDIAN
14247#define BYTE_ORDER _BYTE_ORDER
14248#define __bswap16(_x) __builtin_bswap16(_x)
14249#define __bswap32(_x) __builtin_bswap32(_x)
14250#define __bswap64(_x) __builtin_bswap64(_x)
14251#define _SYS_SELECT_H
14252#define _SYS__SIGSET_H_
14253#define _SYS__TIMEVAL_H_
14254#define _SUSECONDS_T_DECLARED
14255#define __time_t_defined
14256#define _TIME_T_DECLARED
14257#define _TIMEVAL_DEFINED
14258#define _SYS_TIMESPEC_H_
14259#define _SYS__TIMESPEC_H_
14260#define TIMEVAL_TO_TIMESPEC(tv,ts) do { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; } while (0)
14261#define TIMESPEC_TO_TIMEVAL(tv,ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0)
14262#define _SIGSET_T_DECLARED
14263#define _SYS_TYPES_FD_SET
14264#define FD_SETSIZE 64
14265#define _NFDBITS ((int)sizeof(__fd_mask) * 8)
14266#define NFDBITS _NFDBITS
14267#define _howmany(x,y) (((x) + ((y) - 1)) / (y))
14268#define fds_bits __fds_bits
14269#define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS))
14270#define FD_CLR(n,p) ((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n))
14271#define FD_COPY(f,t) (void)(*(t) = *(f))
14272#define FD_ISSET(n,p) (((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0)
14273#define FD_SET(n,p) ((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n))
14274#define FD_ZERO(p) do { fd_set *_p; __size_t _n; _p = (p); _n = _howmany(FD_SETSIZE, _NFDBITS); while (_n > 0) _p->__fds_bits[--_n] = 0; } while (0)
14275#define physadr physadr_t
14276#define quad quad_t
14277#define _IN_ADDR_T_DECLARED
14278#define _IN_PORT_T_DECLARED
14279#define __u_char_defined
14280#define __u_short_defined
14281#define __u_int_defined
14282#define __u_long_defined
14283#define _BSDTYPES_DEFINED
14284#define _BLKCNT_T_DECLARED
14285#define _BLKSIZE_T_DECLARED
14286#define __clock_t_defined
14287#define _CLOCK_T_DECLARED
14288#define __daddr_t_defined
14289#define __caddr_t_defined
14290#define _FSBLKCNT_T_DECLARED
14291#define _ID_T_DECLARED
14292#define _INO_T_DECLARED
14293#define _OFF_T_DECLARED
14294#define _DEV_T_DECLARED
14295#define _UID_T_DECLARED
14296#define _GID_T_DECLARED
14297#define _PID_T_DECLARED
14298#define _KEY_T_DECLARED
14299#define _SSIZE_T_DECLARED
14300#define _MODE_T_DECLARED
14301#define _NLINK_T_DECLARED
14302#define __clockid_t_defined
14303#define _CLOCKID_T_DECLARED
14304#define __timer_t_defined
14305#define _TIMER_T_DECLARED
14306#define _USECONDS_T_DECLARED
14307#define _SYS__PTHREADTYPES_H_
14308#define _SYS_CPUSET_H_
14309#define __CPU_SETSIZE 1024
14310#define __NCPUBITS (8 * sizeof (__cpu_mask))
14311#define __CPU_GROUPMAX (__CPU_SETSIZE / __NCPUBITS)
14312#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
14313#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
14314#define CPU_ALLOC_SIZE(num) ((num+__NCPUBITS-1) / __NCPUBITS) * sizeof (__cpu_mask)
14315#define CPU_ALLOC(num) __builtin_malloc (CPU_ALLOC_SIZE(num))
14316#define CPU_FREE(set) __builtin_free (set)
14317#define CPU_ZERO_S(siz,set) __builtin_memset (set, 0, siz)
14318#define CPU_SET_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu);
14319#define CPU_CLR_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu));
14320#define CPU_ISSET_S(cpu,siz,set) ({int res = 0; if (cpu < 8 * siz) res = !!((set)->__bits[__CPUELT(cpu)] & __CPUMASK(cpu)); res;})
14321#define CPU_COUNT_S(siz,set) ({int tot = 0; for (int i = 0; i < siz / sizeof (__cpu_mask); i++) tot += __builtin_popcountl ((set)->__bits[i]); tot;})
14322#define CPU_AND_S(siz,dst,src1,src2) for (int i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] & (src2)->__bits[i];
14323#define CPU_OR_S(siz,dst,src1,src2) for (int i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] | (src2)->__bits[i];
14324#define CPU_XOR_S(siz,dst,src1,src2) for (int i = 0; i < siz / sizeof (__cpu_mask); i++) (dst)->__bits[i] = (src1)->__bits[i] ^ (src2)->__bits[i];
14325#define CPU_EQUAL_S(siz,src1,src2) ({int res = 1; for (int i = 0; res && i < siz / sizeof (__cpu_mask); i++) res &= (src1)->__bits[i] == (src2)->__bits[i]; res;})
14326#define CPU_ZERO(set) CPU_ZERO_S(sizeof (cpu_set_t), set)
14327#define CPU_SET(cpu,set) CPU_SET_S(cpu, sizeof (cpu_set_t), set)
14328#define CPU_CLR(cpu,set) CPU_CLR_S(cpu, sizeof (cpu_set_t), set)
14329#define CPU_ISSET(cpu,set) CPU_ISSET_S(cpu, sizeof (cpu_set_t), set)
14330#define CPU_COUNT(set) CPU_COUNT_S(sizeof (cpu_set_t), set)
14331#define CPU_AND(dst,src1,src2) CPU_AND_S(sizeof (cpu_set_t), dst, src1, src2)
14332#define CPU_OR(dst,src1,src2) CPU_OR_S(sizeof (cpu_set_t), dst, src1, src2)
14333#define CPU_XOR(dst,src1,src2) CPU_XOR_S(sizeof (cpu_set_t), dst, src1, src2)
14334#define CPU_EQUAL(src1,src2) CPU_EQUAL_S(sizeof (cpu_set_t), src1, src2)
14335#define CPU_SETSIZE __CPU_SETSIZE
14336#define _ENDIAN_H_
14337#define __LONG_LONG_PAIR(HI,LO) LO, HI
14338#define _BITS_BYTESWAP_H
14339#define htobe16(x) __bswap_16(x)
14340#define htobe32(x) __bswap_32(x)
14341#define htobe64(x) __bswap_64(x)
14342#define be16toh(x) __bswap_16(x)
14343#define be32toh(x) __bswap_32(x)
14344#define be64toh(x) __bswap_64(x)
14345#define htole16(x) (x)
14346#define htole32(x) (x)
14347#define htole64(x) (x)
14348#define le16toh(x) (x)
14349#define le32toh(x) (x)
14350#define le64toh(x) (x)
14351#define _WORDSIZE_H 1
14352#define __WORDSIZE 64
14353#define __WORDSIZE_COMPAT32 1
14354#define __timespec_t_defined
14355#define __timestruc_t_defined
14356#define __BIT_TYPES_DEFINED__ 1
14357#define __vm_offset_t_defined
14358#define __vm_size_t_defined
14359#define __vm_object_t_defined
14360#define __addr_t_defined
14361#define _SYS_SYSMACROS_H
14362#define major(dev) gnu_dev_major(dev)
14363#define minor(dev) gnu_dev_minor(dev)
14364#define makedev(maj,min) gnu_dev_makedev(maj, min)
14365#undef __need_inttypes
14366#define __FILE_defined
14367#define _SYS_STDIO_H_
14368#define _flockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_lock ((_LOCK_T *)&(fp)->_lock); })
14369#define _ftrylockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __cygwin_lock_trylock ((_LOCK_T *)&(fp)->_lock))
14370#define _funlockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_unlock ((_LOCK_T *)&(fp)->_lock); })
14371#define __SLBF 0x0001
14372#define __SNBF 0x0002
14373#define __SRD 0x0004
14374#define __SWR 0x0008
14375#define __SRW 0x0010
14376#define __SEOF 0x0020
14377#define __SERR 0x0040
14378#define __SMBF 0x0080
14379#define __SAPP 0x0100
14380#define __SSTR 0x0200
14381#define __SOPT 0x0400
14382#define __SNPT 0x0800
14383#define __SOFF 0x1000
14384#define __SORD 0x2000
14385#define __SCLE 0x4000
14386#define __SL64 0x8000
14387#define __SNLK 0x0001
14388#define __SWID 0x2000
14389#define _IOFBF 0
14390#define _IOLBF 1
14391#define _IONBF 2
14392#define EOF (-1)
14393#define BUFSIZ 1024
14394#define FOPEN_MAX 20
14395#define FILENAME_MAX __FILENAME_MAX__
14396#define L_tmpnam FILENAME_MAX
14397#define P_tmpdir "/tmp"
14398#define SEEK_SET 0
14399#define SEEK_CUR 1
14400#define SEEK_END 2
14401#define TMP_MAX 26
14402#define stdin (_REENT->_stdin)
14403#define stdout (_REENT->_stdout)
14404#define stderr (_REENT->_stderr)
14405#define _stdin_r(x) ((x)->_stdin)
14406#define _stdout_r(x) ((x)->_stdout)
14407#define _stderr_r(x) ((x)->_stderr)
14408#define __VALIST __gnuc_va_list
14409#define fropen(__cookie,__fn) funopen(__cookie, __fn, (int (*)())0, (fpos_t (*)())0, (int (*)())0)
14410#define fwopen(__cookie,__fn) funopen(__cookie, (int (*)())0, __fn, (fpos_t (*)())0, (int (*)())0)
14411#define __sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
14412#define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))
14413#define __sferror(p) ((int)(((p)->_flags & __SERR) != 0))
14414#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
14415#define __sfileno(p) ((p)->_file)
14416#define feof(p) __sfeof(p)
14417#define ferror(p) __sferror(p)
14418#define clearerr(p) __sclearerr(p)
14419#define feof_unlocked(p) __sfeof(p)
14420#define ferror_unlocked(p) __sferror(p)
14421#define clearerr_unlocked(p) __sclearerr(p)
14422#define getchar_unlocked() _getchar_unlocked()
14423#define putchar_unlocked(_c) _putchar_unlocked(_c)
14424#define fast_putc(x,p) (--(p)->_w < 0 ? __swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
14425#define L_cuserid 9
14426#define L_ctermid 16
14427#define _SSP_STDIO_H_
14428#define _SSP_SSP_H_
14429#define __ssp_real_(fun) __ssp_real_ ## fun
14430#define __ssp_real(fun) __ssp_real_(fun)
14431#define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
14432#define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1)
14433#define __ssp_bos0(ptr) __builtin_object_size(ptr, 0)
14434#define __ssp_check(buf,len,bos) if (bos(buf) != (size_t)-1 && len > bos(buf)) __chk_fail()
14435#define __ssp_decl(rtype,fun,args) rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); __ssp_inline rtype fun args
14436#define __ssp_redirect_raw(rtype,fun,args,call,cond,bos) __ssp_decl(rtype, fun, args) { if (cond) __ssp_check(__buf, __len, bos); return __ssp_real_(fun) call; }
14437#define __ssp_redirect(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos)
14438#define __ssp_redirect0(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos0)
14439#define __ssp_overlap(a,b,l) (((a) <= (b) && (b) < (a) + (l)) || ((b) <= (a) && (a) < (b) + (l)))
14440#define sprintf(str,...) __builtin___sprintf_chk(str, 0, __ssp_bos(str), __VA_ARGS__)
14441#define vsprintf(str,fmt,ap) __builtin___vsprintf_chk(str, 0, __ssp_bos(str), fmt, ap)
14442#define snprintf(str,len,...) __builtin___snprintf_chk(str, len, 0, __ssp_bos(str), __VA_ARGS__)
14443#define vsnprintf(str,len,fmt,ap) __builtin___vsnprintf_chk(str, len, 0, __ssp_bos(str), fmt, ap)
14444#define gets(str) __gets_chk(str, __ssp_bos(str))
14445#define _SYS_STAT_H
14446#define _TIME_H_
14447#define __need_size_t
14448#define __need_NULL
14449#undef __need_ptrdiff_t
14450#undef __need_size_t
14451#undef __need_wchar_t
14452#undef NULL
14453#define NULL ((void *)0)
14454#undef __need_NULL
14455#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14456#define _MACHTIME_H_
14457#define _CLOCKS_PER_SEC_ 1000
14458#define CLOCKS_PER_SEC _CLOCKS_PER_SEC_
14459#define CLK_TCK CLOCKS_PER_SEC
14460#define _SYS__LOCALE_H
14461#define tzname _tzname
14462#define _CYGWIN_TIME_H
14463#define TIMER_RELTIME 0
14464#define _SIGNAL_H_
14465#define _SYS_SIGNAL_H
14466#define _STDINT_H
14467#define _SYS__INTSUP_H
14468#define __STDINT_EXP(x) __ ##x ##__
14469#undef signed
14470#undef unsigned
14471#undef char
14472#undef short
14473#undef int
14474#undef __int20
14475#undef __int20__
14476#undef long
14477#define signed +0
14478#define unsigned +0
14479#define char +0
14480#define short +1
14481#define __int20 +2
14482#define __int20__ +2
14483#define int +2
14484#define long +4
14485#define _INTPTR_EQ_LONG
14486#define __INT8 "hh"
14487#define __INT16 "h"
14488#define __INT32
14489#define __INT64 "l"
14490#define __FAST8 "hh"
14491#define __FAST16 "l"
14492#define __FAST32 "l"
14493#define __FAST64 "l"
14494#define __LEAST8 "hh"
14495#define __LEAST16 "h"
14496#define __LEAST32
14497#define __LEAST64 "l"
14498#undef signed
14499#undef unsigned
14500#undef char
14501#undef short
14502#undef int
14503#undef long
14504#undef __int20
14505#undef __int20__
14506#define __int_least8_t_defined 1
14507#define __int_least16_t_defined 1
14508#define __int_least32_t_defined 1
14509#define __int_least64_t_defined 1
14510#define __int_fast8_t_defined 1
14511#define __int_fast16_t_defined 1
14512#define __int_fast32_t_defined 1
14513#define __int_fast64_t_defined 1
14514#define INTPTR_MIN (-__INTPTR_MAX__ - 1)
14515#define INTPTR_MAX (__INTPTR_MAX__)
14516#define UINTPTR_MAX (__UINTPTR_MAX__)
14517#define INT8_MIN (-__INT8_MAX__ - 1)
14518#define INT8_MAX (__INT8_MAX__)
14519#define UINT8_MAX (__UINT8_MAX__)
14520#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
14521#define INT_LEAST8_MAX (__INT_LEAST8_MAX__)
14522#define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)
14523#define INT16_MIN (-__INT16_MAX__ - 1)
14524#define INT16_MAX (__INT16_MAX__)
14525#define UINT16_MAX (__UINT16_MAX__)
14526#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
14527#define INT_LEAST16_MAX (__INT_LEAST16_MAX__)
14528#define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)
14529#define INT32_MIN (-__INT32_MAX__ - 1)
14530#define INT32_MAX (__INT32_MAX__)
14531#define UINT32_MAX (__UINT32_MAX__)
14532#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
14533#define INT_LEAST32_MAX (__INT_LEAST32_MAX__)
14534#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)
14535#define INT64_MIN (-__INT64_MAX__ - 1)
14536#define INT64_MAX (__INT64_MAX__)
14537#define UINT64_MAX (__UINT64_MAX__)
14538#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
14539#define INT_LEAST64_MAX (__INT_LEAST64_MAX__)
14540#define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)
14541#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
14542#define INT_FAST8_MAX (__INT_FAST8_MAX__)
14543#define UINT_FAST8_MAX (__UINT_FAST8_MAX__)
14544#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
14545#define INT_FAST16_MAX (__INT_FAST16_MAX__)
14546#define UINT_FAST16_MAX (__UINT_FAST16_MAX__)
14547#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
14548#define INT_FAST32_MAX (__INT_FAST32_MAX__)
14549#define UINT_FAST32_MAX (__UINT_FAST32_MAX__)
14550#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
14551#define INT_FAST64_MAX (__INT_FAST64_MAX__)
14552#define UINT_FAST64_MAX (__UINT_FAST64_MAX__)
14553#define INTMAX_MAX (__INTMAX_MAX__)
14554#define INTMAX_MIN (-INTMAX_MAX - 1)
14555#define UINTMAX_MAX (__UINTMAX_MAX__)
14556#define SIZE_MAX (__SIZE_MAX__)
14557#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
14558#define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))
14559#define PTRDIFF_MAX (__PTRDIFF_MAX__)
14560#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
14561#define WCHAR_MIN (__WCHAR_MIN__)
14562#define WCHAR_MAX (__WCHAR_MAX__)
14563#define WINT_MAX (__WINT_MAX__)
14564#define WINT_MIN (__WINT_MIN__)
14565#define INT8_C(x) __INT8_C(x)
14566#define UINT8_C(x) __UINT8_C(x)
14567#define INT16_C(x) __INT16_C(x)
14568#define UINT16_C(x) __UINT16_C(x)
14569#define INT32_C(x) __INT32_C(x)
14570#define UINT32_C(x) __UINT32_C(x)
14571#define INT64_C(x) __INT64_C(x)
14572#define UINT64_C(x) __UINT64_C(x)
14573#define INTMAX_C(x) __INTMAX_C(x)
14574#define UINTMAX_C(x) __UINTMAX_C(x)
14575#define _GCC_WRAP_STDINT_H
14576#define _CYGWIN_SIGNAL_H
14577#define __COPY_CONTEXT_SIZE 816
14578#pragma pack(push,4)
14579#define __SI_PAD_SIZE 32
14580#pragma pack(pop)
14581#define SI_USER SI_USER
14582#define SI_ASYNCIO SI_ASYNCIO
14583#define SI_MESGQ SI_MESGQ
14584#define SI_TIMER SI_TIMER
14585#define SI_QUEUE SI_QUEUE
14586#define SI_KERNEL SI_KERNEL
14587#define ILL_ILLOPC ILL_ILLOPC
14588#define ILL_ILLOPN ILL_ILLOPN
14589#define ILL_ILLADR ILL_ILLADR
14590#define ILL_ILLTRP ILL_ILLTRP
14591#define ILL_PRVOPC ILL_PRVOPC
14592#define ILL_PRVREG ILL_PRVREG
14593#define ILL_COPROC ILL_COPROC
14594#define ILL_BADSTK ILL_BADSTK
14595#define FPE_INTDIV FPE_INTDIV
14596#define FPE_INTOVF FPE_INTOVF
14597#define FPE_FLTDIV FPE_FLTDIV
14598#define FPE_FLTOVF FPE_FLTOVF
14599#define FPE_FLTUND FPE_FLTUND
14600#define FPE_FLTRES FPE_FLTRES
14601#define FPE_FLTINV FPE_FLTINV
14602#define FPE_FLTSUB FPE_FLTSUB
14603#define SEGV_MAPERR SEGV_MAPERR
14604#define SEGV_ACCERR SEGV_ACCERR
14605#define BUS_ADRALN BUS_ADRALN
14606#define BUS_ADRERR BUS_ADRERR
14607#define BUS_OBJERR BUS_OBJERR
14608#define CLD_EXITED CLD_EXITED
14609#define CLD_KILLED CLD_KILLED
14610#define CLD_DUMPED CLD_DUMPED
14611#define CLD_TRAPPED CLD_TRAPPED
14612#define CLD_STOPPED CLD_STOPPED
14613#define CLD_CONTINUED CLD_CONTINUED
14614#define SIGEV_SIGNAL SIGEV_SIGNAL
14615#define SIGEV_NONE SIGEV_NONE
14616#define SIGEV_THREAD SIGEV_THREAD
14617#define SA_NOCLDSTOP 1
14618#define SA_SIGINFO 2
14619#define SA_RESTART 0x10000000
14620#define SA_ONSTACK 0x20000000
14621#define SA_NODEFER 0x40000000
14622#define SA_RESETHAND 0x80000000
14623#define SA_ONESHOT SA_RESETHAND
14624#define SA_NOMASK SA_NODEFER
14625#define _SA_INTERNAL_MASK 0xf000
14626#undef MINSIGSTKSZ
14627#define MINSIGSTKSZ 8192
14628#undef SIGSTKSZ
14629#define SIGSTKSZ 32768
14630#define SIGHUP 1
14631#define SIGINT 2
14632#define SIGQUIT 3
14633#define SIGILL 4
14634#define SIGTRAP 5
14635#define SIGABRT 6
14636#define SIGIOT SIGABRT
14637#define SIGEMT 7
14638#define SIGFPE 8
14639#define SIGKILL 9
14640#define SIGBUS 10
14641#define SIGSEGV 11
14642#define SIGSYS 12
14643#define SIGPIPE 13
14644#define SIGALRM 14
14645#define SIGTERM 15
14646#define SIGURG 16
14647#define SIGSTOP 17
14648#define SIGTSTP 18
14649#define SIGCONT 19
14650#define SIGCHLD 20
14651#define SIGCLD 20
14652#define SIGTTIN 21
14653#define SIGTTOU 22
14654#define SIGIO 23
14655#define SIGPOLL SIGIO
14656#define SIGXCPU 24
14657#define SIGXFSZ 25
14658#define SIGVTALRM 26
14659#define SIGPROF 27
14660#define SIGWINCH 28
14661#define SIGLOST 29
14662#define SIGPWR SIGLOST
14663#define SIGUSR1 30
14664#define SIGUSR2 31
14665#define _NSIG 65
14666#define NSIG _NSIG
14667#define SIGRTMIN 32
14668#define SIGRTMAX (_NSIG - 1)
14669#define SIG_HOLD ((_sig_func_ptr)2)
14670#define SS_ONSTACK 0x1
14671#define SS_DISABLE 0x2
14672#define SIG_SETMASK 0
14673#define SIG_BLOCK 1
14674#define SIG_UNBLOCK 2
14675#define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("4294967295") - 1)
14676#define _SYS_UCONTEXT_H_
14677#define SIG_DFL ((_sig_func_ptr)0)
14678#define SIG_IGN ((_sig_func_ptr)1)
14679#define SIG_ERR ((_sig_func_ptr)-1)
14680#define CLOCK_ENABLED 1
14681#define CLOCK_DISABLED 0
14682#define CLOCK_ALLOWED 1
14683#define CLOCK_DISALLOWED 0
14684#define TIMER_ABSTIME 4
14685#define CLOCK_REALTIME_COARSE ((clockid_t) 0)
14686#define CLOCK_REALTIME ((clockid_t) 1)
14687#define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2)
14688#define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3)
14689#define CLOCK_MONOTONIC ((clockid_t) 4)
14690#define CLOCK_MONOTONIC_RAW ((clockid_t) 5)
14691#define CLOCK_MONOTONIC_COARSE ((clockid_t) 6)
14692#define CLOCK_BOOTTIME ((clockid_t) 7)
14693#define CLOCK_REALTIME_ALARM ((clockid_t) 8)
14694#define CLOCK_BOOTTIME_ALARM ((clockid_t) 9)
14695#define _CYGWIN_STAT_H
14696#define st_atime st_atim.tv_sec
14697#define st_mtime st_mtim.tv_sec
14698#define st_ctime st_ctim.tv_sec
14699#define st_birthtime st_birthtim.tv_sec
14700#define S_TYPEISMQ(buf) ((void)(buf)->st_mode,0)
14701#define S_TYPEISSEM(buf) ((void)(buf)->st_mode,0)
14702#define S_TYPEISSHM(buf) ((void)(buf)->st_mode,0)
14703#define _IFMT 0170000
14704#define _IFDIR 0040000
14705#define _IFCHR 0020000
14706#define _IFBLK 0060000
14707#define _IFREG 0100000
14708#define _IFLNK 0120000
14709#define _IFSOCK 0140000
14710#define _IFIFO 0010000
14711#define S_BLKSIZE 1024
14712#define S_ISUID 0004000
14713#define S_ISGID 0002000
14714#define S_ISVTX 0001000
14715#define S_IREAD 0000400
14716#define S_IWRITE 0000200
14717#define S_IEXEC 0000100
14718#define S_ENFMT 0002000
14719#define S_IFMT _IFMT
14720#define S_IFDIR _IFDIR
14721#define S_IFCHR _IFCHR
14722#define S_IFBLK _IFBLK
14723#define S_IFREG _IFREG
14724#define S_IFLNK _IFLNK
14725#define S_IFSOCK _IFSOCK
14726#define S_IFIFO _IFIFO
14727#define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
14728#define S_IRUSR 0000400
14729#define S_IWUSR 0000200
14730#define S_IXUSR 0000100
14731#define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
14732#define S_IRGRP 0000040
14733#define S_IWGRP 0000020
14734#define S_IXGRP 0000010
14735#define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
14736#define S_IROTH 0000004
14737#define S_IWOTH 0000002
14738#define S_IXOTH 0000001
14739#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
14740#define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
14741#define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
14742#define S_ISBLK(m) (((m)&_IFMT) == _IFBLK)
14743#define S_ISCHR(m) (((m)&_IFMT) == _IFCHR)
14744#define S_ISDIR(m) (((m)&_IFMT) == _IFDIR)
14745#define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
14746#define S_ISREG(m) (((m)&_IFMT) == _IFREG)
14747#define S_ISLNK(m) (((m)&_IFMT) == _IFLNK)
14748#define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
14749#define UTIME_NOW -2L
14750#define UTIME_OMIT -1L
14751#define _STDLIB_H_
14752#define __need_size_t
14753#define __need_wchar_t
14754#define __need_NULL
14755#undef __need_ptrdiff_t
14756#undef __need_size_t
14757#undef __need_wchar_t
14758#undef NULL
14759#define NULL ((void *)0)
14760#undef __need_NULL
14761#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14762#define _MACHSTDLIB_H_
14763#define _NEWLIB_ALLOCA_H
14764#undef alloca
14765#define alloca(size) __builtin_alloca(size)
14766#define _CYGWIN_STDLIB_H
14767#define _CYGWIN_WAIT_H
14768#define WAIT_ANY (pid_t)-1
14769#define WAIT_MYPGRP (pid_t)0
14770#define WNOHANG 1
14771#define WUNTRACED 2
14772#define WCONTINUED 8
14773#define __W_CONTINUED 0xffff
14774#define WIFEXITED(_w) (((_w) & 0xff) == 0)
14775#define WIFSIGNALED(_w) (((_w) & 0x7f) > 0 && (((_w) & 0x7f) < 0x7f))
14776#define WIFSTOPPED(_w) (((_w) & 0xff) == 0x7f)
14777#define WIFCONTINUED(_w) (((_w) & 0xffff) == __W_CONTINUED)
14778#define WEXITSTATUS(_w) (((_w) >> 8) & 0xff)
14779#define WTERMSIG(_w) ((_w) & 0x7f)
14780#define WSTOPSIG WEXITSTATUS
14781#define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & 0x80))
14782#undef _malloc_r
14783#define _malloc_r(r,s) malloc (s)
14784#undef _free_r
14785#define _free_r(r,p) free (p)
14786#undef _realloc_r
14787#define _realloc_r(r,p,s) realloc (p, s)
14788#undef _calloc_r
14789#define _calloc_r(r,s1,s2) calloc (s1, s2);
14790#undef _memalign_r
14791#define _memalign_r(r,s1,s2) memalign (s1, s2);
14792#undef _mallinfo_r
14793#define _mallinfo_r(r) mallinfo ()
14794#undef _malloc_stats_r
14795#define _malloc_stats_r(r) malloc_stats ()
14796#undef _mallopt_r
14797#define _mallopt_r(i1,i2) mallopt (i1, i2)
14798#undef _malloc_usable_size_r
14799#define _malloc_usable_size_r(r,p) malloc_usable_size (p)
14800#undef _valloc_r
14801#define _valloc_r(r,s) valloc (s)
14802#undef _pvalloc_r
14803#define _pvalloc_r(r,s) pvalloc (s)
14804#undef _malloc_trim_r
14805#define _malloc_trim_r(r,s) malloc_trim (s)
14806#undef _mstats_r
14807#define _mstats_r(r,p) mstats (p)
14808#define __compar_fn_t_defined
14809#define EXIT_FAILURE 1
14810#define EXIT_SUCCESS 0
14811#define RAND_MAX __RAND_MAX
14812#define MB_CUR_MAX __locale_mb_cur_max()
14813#define strtodf strtof
14814#define _SSP_STDLIB_H_
14815#define _STRING_H_
14816#define __need_size_t
14817#define __need_NULL
14818#undef __need_ptrdiff_t
14819#undef __need_size_t
14820#undef __need_wchar_t
14821#undef NULL
14822#define NULL ((void *)0)
14823#undef __need_NULL
14824#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14825#define _STRINGS_H_
14826#define _SSP_STRINGS_H_
14827#define bcopy(src,dst,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___memmove_chk(dst, src, len, __ssp_bos0(dst)) : __memmove_ichk(dst, src, len))
14828#define bzero(dst,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : __memset_ichk(dst, 0, len))
14829#define strdupa(__s) (__extension__ ({const char *__sin = (__s); size_t __len = strlen (__sin) + 1; char * __sout = (char *) __builtin_alloca (__len); (char *) memcpy (__sout, __sin, __len);}))
14830#define strndupa(__s,__n) (__extension__ ({const char *__sin = (__s); size_t __len = strnlen (__sin, (__n)) + 1; char *__sout = (char *) __builtin_alloca (__len); __sout[__len-1] = '\0'; (char *) memcpy (__sout, __sin, __len-1);}))
14831#define basename basename
14832#define _SSP_STRING_H_
14833#define __ssp_bos_check3(fun,dst,src,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)) : __ ## fun ## _ichk(dst, src, len))
14834#define __ssp_bos_check2(fun,dst,src) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___ ## fun ## _chk(dst, src, __ssp_bos0(dst)) : __ ## fun ## _ichk(dst, src))
14835#define __ssp_bos_icheck3_restrict(fun,type1,type2) __ssp_inline type1 __ ## fun ## _ichk(type1 __restrict, type2 __restrict, size_t); __ssp_inline type1 __ ## fun ## _ichk(type1 __restrict dst, type2 __restrict src, size_t len) { return __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)); }
14836#define __ssp_bos_icheck3(fun,type1,type2) __ssp_inline type1 __ ## fun ## _ichk(type1, type2, size_t); __ssp_inline type1 __ ## fun ## _ichk(type1 dst, type2 src, size_t len) { return __builtin___ ## fun ## _chk(dst, src, len, __ssp_bos0(dst)); }
14837#define __ssp_bos_icheck2_restrict(fun,type1,type2) __ssp_inline type1 __ ## fun ## _ichk(type1, type2); __ssp_inline type1 __ ## fun ## _ichk(type1 __restrict dst, type2 __restrict src) { return __builtin___ ## fun ## _chk(dst, src, __ssp_bos0(dst)); }
14838#define memcpy(dst,src,len) __ssp_bos_check3(memcpy, dst, src, len)
14839#define memmove(dst,src,len) __ssp_bos_check3(memmove, dst, src, len)
14840#define mempcpy(dst,src,len) __ssp_bos_check3(mempcpy, dst, src, len)
14841#define memset(dst,val,len) __ssp_bos_check3(memset, dst, val, len)
14842#define stpcpy(dst,src) __ssp_bos_check2(stpcpy, dst, src)
14843#define stpncpy(dst,src,len) __ssp_bos_check3(stpncpy, dst, src, len)
14844#define strcpy(dst,src) __ssp_bos_check2(strcpy, dst, src)
14845#define strcat(dst,src) __ssp_bos_check2(strcat, dst, src)
14846#define strncpy(dst,src,len) __ssp_bos_check3(strncpy, dst, src, len)
14847#define strncat(dst,src,len) __ssp_bos_check3(strncat, dst, src, len)
14848#define _INTTYPES_H
14849#define __need_wchar_t
14850#undef __need_ptrdiff_t
14851#undef __need_size_t
14852#undef __need_wchar_t
14853#undef NULL
14854#define NULL ((void *)0)
14855#undef __need_NULL
14856#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
14857#define __STRINGIFY(a) #a
14858#define __PRI8(x) __INT8 __STRINGIFY(x)
14859#define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x)
14860#define __PRI8FAST(x) __FAST8 __STRINGIFY(x)
14861#define __SCN8(x) __INT8 __STRINGIFY(x)
14862#define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x)
14863#define __SCN8FAST(x) __FAST8 __STRINGIFY(x)
14864#define PRId8 __PRI8(d)
14865#define PRIi8 __PRI8(i)
14866#define PRIo8 __PRI8(o)
14867#define PRIu8 __PRI8(u)
14868#define PRIx8 __PRI8(x)
14869#define PRIX8 __PRI8(X)
14870#define SCNd8 __SCN8(d)
14871#define SCNi8 __SCN8(i)
14872#define SCNo8 __SCN8(o)
14873#define SCNu8 __SCN8(u)
14874#define SCNx8 __SCN8(x)
14875#define PRIdLEAST8 __PRI8LEAST(d)
14876#define PRIiLEAST8 __PRI8LEAST(i)
14877#define PRIoLEAST8 __PRI8LEAST(o)
14878#define PRIuLEAST8 __PRI8LEAST(u)
14879#define PRIxLEAST8 __PRI8LEAST(x)
14880#define PRIXLEAST8 __PRI8LEAST(X)
14881#define SCNdLEAST8 __SCN8LEAST(d)
14882#define SCNiLEAST8 __SCN8LEAST(i)
14883#define SCNoLEAST8 __SCN8LEAST(o)
14884#define SCNuLEAST8 __SCN8LEAST(u)
14885#define SCNxLEAST8 __SCN8LEAST(x)
14886#define PRIdFAST8 __PRI8FAST(d)
14887#define PRIiFAST8 __PRI8FAST(i)
14888#define PRIoFAST8 __PRI8FAST(o)
14889#define PRIuFAST8 __PRI8FAST(u)
14890#define PRIxFAST8 __PRI8FAST(x)
14891#define PRIXFAST8 __PRI8FAST(X)
14892#define SCNdFAST8 __SCN8FAST(d)
14893#define SCNiFAST8 __SCN8FAST(i)
14894#define SCNoFAST8 __SCN8FAST(o)
14895#define SCNuFAST8 __SCN8FAST(u)
14896#define SCNxFAST8 __SCN8FAST(x)
14897#define __PRI16(x) __INT16 __STRINGIFY(x)
14898#define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x)
14899#define __PRI16FAST(x) __FAST16 __STRINGIFY(x)
14900#define __SCN16(x) __INT16 __STRINGIFY(x)
14901#define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x)
14902#define __SCN16FAST(x) __FAST16 __STRINGIFY(x)
14903#define PRId16 __PRI16(d)
14904#define PRIi16 __PRI16(i)
14905#define PRIo16 __PRI16(o)
14906#define PRIu16 __PRI16(u)
14907#define PRIx16 __PRI16(x)
14908#define PRIX16 __PRI16(X)
14909#define SCNd16 __SCN16(d)
14910#define SCNi16 __SCN16(i)
14911#define SCNo16 __SCN16(o)
14912#define SCNu16 __SCN16(u)
14913#define SCNx16 __SCN16(x)
14914#define PRIdLEAST16 __PRI16LEAST(d)
14915#define PRIiLEAST16 __PRI16LEAST(i)
14916#define PRIoLEAST16 __PRI16LEAST(o)
14917#define PRIuLEAST16 __PRI16LEAST(u)
14918#define PRIxLEAST16 __PRI16LEAST(x)
14919#define PRIXLEAST16 __PRI16LEAST(X)
14920#define SCNdLEAST16 __SCN16LEAST(d)
14921#define SCNiLEAST16 __SCN16LEAST(i)
14922#define SCNoLEAST16 __SCN16LEAST(o)
14923#define SCNuLEAST16 __SCN16LEAST(u)
14924#define SCNxLEAST16 __SCN16LEAST(x)
14925#define PRIdFAST16 __PRI16FAST(d)
14926#define PRIiFAST16 __PRI16FAST(i)
14927#define PRIoFAST16 __PRI16FAST(o)
14928#define PRIuFAST16 __PRI16FAST(u)
14929#define PRIxFAST16 __PRI16FAST(x)
14930#define PRIXFAST16 __PRI16FAST(X)
14931#define SCNdFAST16 __SCN16FAST(d)
14932#define SCNiFAST16 __SCN16FAST(i)
14933#define SCNoFAST16 __SCN16FAST(o)
14934#define SCNuFAST16 __SCN16FAST(u)
14935#define SCNxFAST16 __SCN16FAST(x)
14936#define __PRI32(x) __INT32 __STRINGIFY(x)
14937#define __SCN32(x) __INT32 __STRINGIFY(x)
14938#define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x)
14939#define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x)
14940#define __PRI32FAST(x) __FAST32 __STRINGIFY(x)
14941#define __SCN32FAST(x) __FAST32 __STRINGIFY(x)
14942#define PRId32 __PRI32(d)
14943#define PRIi32 __PRI32(i)
14944#define PRIo32 __PRI32(o)
14945#define PRIu32 __PRI32(u)
14946#define PRIx32 __PRI32(x)
14947#define PRIX32 __PRI32(X)
14948#define SCNd32 __SCN32(d)
14949#define SCNi32 __SCN32(i)
14950#define SCNo32 __SCN32(o)
14951#define SCNu32 __SCN32(u)
14952#define SCNx32 __SCN32(x)
14953#define PRIdLEAST32 __PRI32LEAST(d)
14954#define PRIiLEAST32 __PRI32LEAST(i)
14955#define PRIoLEAST32 __PRI32LEAST(o)
14956#define PRIuLEAST32 __PRI32LEAST(u)
14957#define PRIxLEAST32 __PRI32LEAST(x)
14958#define PRIXLEAST32 __PRI32LEAST(X)
14959#define SCNdLEAST32 __SCN32LEAST(d)
14960#define SCNiLEAST32 __SCN32LEAST(i)
14961#define SCNoLEAST32 __SCN32LEAST(o)
14962#define SCNuLEAST32 __SCN32LEAST(u)
14963#define SCNxLEAST32 __SCN32LEAST(x)
14964#define PRIdFAST32 __PRI32FAST(d)
14965#define PRIiFAST32 __PRI32FAST(i)
14966#define PRIoFAST32 __PRI32FAST(o)
14967#define PRIuFAST32 __PRI32FAST(u)
14968#define PRIxFAST32 __PRI32FAST(x)
14969#define PRIXFAST32 __PRI32FAST(X)
14970#define SCNdFAST32 __SCN32FAST(d)
14971#define SCNiFAST32 __SCN32FAST(i)
14972#define SCNoFAST32 __SCN32FAST(o)
14973#define SCNuFAST32 __SCN32FAST(u)
14974#define SCNxFAST32 __SCN32FAST(x)
14975#define __PRI64(x) __INT64 __STRINGIFY(x)
14976#define __SCN64(x) __INT64 __STRINGIFY(x)
14977#define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x)
14978#define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x)
14979#define __PRI64FAST(x) __FAST64 __STRINGIFY(x)
14980#define __SCN64FAST(x) __FAST64 __STRINGIFY(x)
14981#define PRId64 __PRI64(d)
14982#define PRIi64 __PRI64(i)
14983#define PRIo64 __PRI64(o)
14984#define PRIu64 __PRI64(u)
14985#define PRIx64 __PRI64(x)
14986#define PRIX64 __PRI64(X)
14987#define SCNd64 __SCN64(d)
14988#define SCNi64 __SCN64(i)
14989#define SCNo64 __SCN64(o)
14990#define SCNu64 __SCN64(u)
14991#define SCNx64 __SCN64(x)
14992#define PRIdLEAST64 __PRI64LEAST(d)
14993#define PRIiLEAST64 __PRI64LEAST(i)
14994#define PRIoLEAST64 __PRI64LEAST(o)
14995#define PRIuLEAST64 __PRI64LEAST(u)
14996#define PRIxLEAST64 __PRI64LEAST(x)
14997#define PRIXLEAST64 __PRI64LEAST(X)
14998#define SCNdLEAST64 __SCN64LEAST(d)
14999#define SCNiLEAST64 __SCN64LEAST(i)
15000#define SCNoLEAST64 __SCN64LEAST(o)
15001#define SCNuLEAST64 __SCN64LEAST(u)
15002#define SCNxLEAST64 __SCN64LEAST(x)
15003#define PRIdFAST64 __PRI64FAST(d)
15004#define PRIiFAST64 __PRI64FAST(i)
15005#define PRIoFAST64 __PRI64FAST(o)
15006#define PRIuFAST64 __PRI64FAST(u)
15007#define PRIxFAST64 __PRI64FAST(x)
15008#define PRIXFAST64 __PRI64FAST(X)
15009#define SCNdFAST64 __SCN64FAST(d)
15010#define SCNiFAST64 __SCN64FAST(i)
15011#define SCNoFAST64 __SCN64FAST(o)
15012#define SCNuFAST64 __SCN64FAST(u)
15013#define SCNxFAST64 __SCN64FAST(x)
15014#define __PRIMAX(x) __STRINGIFY(l ##x)
15015#define __SCNMAX(x) __STRINGIFY(l ##x)
15016#define PRIdMAX __PRIMAX(d)
15017#define PRIiMAX __PRIMAX(i)
15018#define PRIoMAX __PRIMAX(o)
15019#define PRIuMAX __PRIMAX(u)
15020#define PRIxMAX __PRIMAX(x)
15021#define PRIXMAX __PRIMAX(X)
15022#define SCNdMAX __SCNMAX(d)
15023#define SCNiMAX __SCNMAX(i)
15024#define SCNoMAX __SCNMAX(o)
15025#define SCNuMAX __SCNMAX(u)
15026#define SCNxMAX __SCNMAX(x)
15027#define __PRIPTR(x) __STRINGIFY(l ##x)
15028#define __SCNPTR(x) __STRINGIFY(l ##x)
15029#define PRIdPTR __PRIPTR(d)
15030#define PRIiPTR __PRIPTR(i)
15031#define PRIoPTR __PRIPTR(o)
15032#define PRIuPTR __PRIPTR(u)
15033#define PRIxPTR __PRIPTR(x)
15034#define PRIXPTR __PRIPTR(X)
15035#define SCNdPTR __SCNPTR(d)
15036#define SCNiPTR __SCNPTR(i)
15037#define SCNoPTR __SCNPTR(o)
15038#define SCNuPTR __SCNPTR(u)
15039#define SCNxPTR __SCNPTR(x)
15040#define _STDALIGN_H
15041#define alignas _Alignas
15042#define alignof _Alignof
15043#define __alignas_is_defined 1
15044#define __alignof_is_defined 1
15045#define _UNISTD_H_
15046#define _SYS_UNISTD_H
15047#define __need_size_t
15048#define __need_ptrdiff_t
15049#undef __need_ptrdiff_t
15050#undef __need_size_t
15051#undef __need_wchar_t
15052#undef NULL
15053#define NULL ((void *)0)
15054#undef __need_NULL
15055#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
15056#define F_ULOCK 0
15057#define F_LOCK 1
15058#define F_TLOCK 2
15059#define F_TEST 3
15060#define __UNISTD_GETOPT__
15061#define __GETOPT_H__
15062#undef __UNISTD_GETOPT__
15063#define F_OK 0
15064#define R_OK 4
15065#define W_OK 2
15066#define X_OK 1
15067#define SEEK_SET 0
15068#define SEEK_CUR 1
15069#define SEEK_END 2
15070#define STDIN_FILENO 0
15071#define STDOUT_FILENO 1
15072#define STDERR_FILENO 2
15073#define _SC_ARG_MAX 0
15074#define _SC_CHILD_MAX 1
15075#define _SC_CLK_TCK 2
15076#define _SC_NGROUPS_MAX 3
15077#define _SC_OPEN_MAX 4
15078#define _SC_JOB_CONTROL 5
15079#define _SC_SAVED_IDS 6
15080#define _SC_VERSION 7
15081#define _SC_PAGESIZE 8
15082#define _SC_PAGE_SIZE _SC_PAGESIZE
15083#define _SC_NPROCESSORS_CONF 9
15084#define _SC_NPROCESSORS_ONLN 10
15085#define _SC_PHYS_PAGES 11
15086#define _SC_AVPHYS_PAGES 12
15087#define _SC_MQ_OPEN_MAX 13
15088#define _SC_MQ_PRIO_MAX 14
15089#define _SC_RTSIG_MAX 15
15090#define _SC_SEM_NSEMS_MAX 16
15091#define _SC_SEM_VALUE_MAX 17
15092#define _SC_SIGQUEUE_MAX 18
15093#define _SC_TIMER_MAX 19
15094#define _SC_TZNAME_MAX 20
15095#define _SC_ASYNCHRONOUS_IO 21
15096#define _SC_FSYNC 22
15097#define _SC_MAPPED_FILES 23
15098#define _SC_MEMLOCK 24
15099#define _SC_MEMLOCK_RANGE 25
15100#define _SC_MEMORY_PROTECTION 26
15101#define _SC_MESSAGE_PASSING 27
15102#define _SC_PRIORITIZED_IO 28
15103#define _SC_REALTIME_SIGNALS 29
15104#define _SC_SEMAPHORES 30
15105#define _SC_SHARED_MEMORY_OBJECTS 31
15106#define _SC_SYNCHRONIZED_IO 32
15107#define _SC_TIMERS 33
15108#define _SC_AIO_LISTIO_MAX 34
15109#define _SC_AIO_MAX 35
15110#define _SC_AIO_PRIO_DELTA_MAX 36
15111#define _SC_DELAYTIMER_MAX 37
15112#define _SC_THREAD_KEYS_MAX 38
15113#define _SC_THREAD_STACK_MIN 39
15114#define _SC_THREAD_THREADS_MAX 40
15115#define _SC_TTY_NAME_MAX 41
15116#define _SC_THREADS 42
15117#define _SC_THREAD_ATTR_STACKADDR 43
15118#define _SC_THREAD_ATTR_STACKSIZE 44
15119#define _SC_THREAD_PRIORITY_SCHEDULING 45
15120#define _SC_THREAD_PRIO_INHERIT 46
15121#define _SC_THREAD_PRIO_PROTECT 47
15122#define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
15123#define _SC_THREAD_PROCESS_SHARED 48
15124#define _SC_THREAD_SAFE_FUNCTIONS 49
15125#define _SC_GETGR_R_SIZE_MAX 50
15126#define _SC_GETPW_R_SIZE_MAX 51
15127#define _SC_LOGIN_NAME_MAX 52
15128#define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
15129#define _SC_ADVISORY_INFO 54
15130#define _SC_ATEXIT_MAX 55
15131#define _SC_BARRIERS 56
15132#define _SC_BC_BASE_MAX 57
15133#define _SC_BC_DIM_MAX 58
15134#define _SC_BC_SCALE_MAX 59
15135#define _SC_BC_STRING_MAX 60
15136#define _SC_CLOCK_SELECTION 61
15137#define _SC_COLL_WEIGHTS_MAX 62
15138#define _SC_CPUTIME 63
15139#define _SC_EXPR_NEST_MAX 64
15140#define _SC_HOST_NAME_MAX 65
15141#define _SC_IOV_MAX 66
15142#define _SC_IPV6 67
15143#define _SC_LINE_MAX 68
15144#define _SC_MONOTONIC_CLOCK 69
15145#define _SC_RAW_SOCKETS 70
15146#define _SC_READER_WRITER_LOCKS 71
15147#define _SC_REGEXP 72
15148#define _SC_RE_DUP_MAX 73
15149#define _SC_SHELL 74
15150#define _SC_SPAWN 75
15151#define _SC_SPIN_LOCKS 76
15152#define _SC_SPORADIC_SERVER 77
15153#define _SC_SS_REPL_MAX 78
15154#define _SC_SYMLOOP_MAX 79
15155#define _SC_THREAD_CPUTIME 80
15156#define _SC_THREAD_SPORADIC_SERVER 81
15157#define _SC_TIMEOUTS 82
15158#define _SC_TRACE 83
15159#define _SC_TRACE_EVENT_FILTER 84
15160#define _SC_TRACE_EVENT_NAME_MAX 85
15161#define _SC_TRACE_INHERIT 86
15162#define _SC_TRACE_LOG 87
15163#define _SC_TRACE_NAME_MAX 88
15164#define _SC_TRACE_SYS_MAX 89
15165#define _SC_TRACE_USER_EVENT_MAX 90
15166#define _SC_TYPED_MEMORY_OBJECTS 91
15167#define _SC_V7_ILP32_OFF32 92
15168#define _SC_V6_ILP32_OFF32 _SC_V7_ILP32_OFF32
15169#define _SC_XBS5_ILP32_OFF32 _SC_V7_ILP32_OFF32
15170#define _SC_V7_ILP32_OFFBIG 93
15171#define _SC_V6_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
15172#define _SC_XBS5_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
15173#define _SC_V7_LP64_OFF64 94
15174#define _SC_V6_LP64_OFF64 _SC_V7_LP64_OFF64
15175#define _SC_XBS5_LP64_OFF64 _SC_V7_LP64_OFF64
15176#define _SC_V7_LPBIG_OFFBIG 95
15177#define _SC_V6_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
15178#define _SC_XBS5_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
15179#define _SC_XOPEN_CRYPT 96
15180#define _SC_XOPEN_ENH_I18N 97
15181#define _SC_XOPEN_LEGACY 98
15182#define _SC_XOPEN_REALTIME 99
15183#define _SC_STREAM_MAX 100
15184#define _SC_PRIORITY_SCHEDULING 101
15185#define _SC_XOPEN_REALTIME_THREADS 102
15186#define _SC_XOPEN_SHM 103
15187#define _SC_XOPEN_STREAMS 104
15188#define _SC_XOPEN_UNIX 105
15189#define _SC_XOPEN_VERSION 106
15190#define _SC_2_CHAR_TERM 107
15191#define _SC_2_C_BIND 108
15192#define _SC_2_C_DEV 109
15193#define _SC_2_FORT_DEV 110
15194#define _SC_2_FORT_RUN 111
15195#define _SC_2_LOCALEDEF 112
15196#define _SC_2_PBS 113
15197#define _SC_2_PBS_ACCOUNTING 114
15198#define _SC_2_PBS_CHECKPOINT 115
15199#define _SC_2_PBS_LOCATE 116
15200#define _SC_2_PBS_MESSAGE 117
15201#define _SC_2_PBS_TRACK 118
15202#define _SC_2_SW_DEV 119
15203#define _SC_2_UPE 120
15204#define _SC_2_VERSION 121
15205#define _SC_THREAD_ROBUST_PRIO_INHERIT 122
15206#define _SC_THREAD_ROBUST_PRIO_PROTECT 123
15207#define _SC_XOPEN_UUCP 124
15208#define _SC_LEVEL1_ICACHE_SIZE 125
15209#define _SC_LEVEL1_ICACHE_ASSOC 126
15210#define _SC_LEVEL1_ICACHE_LINESIZE 127
15211#define _SC_LEVEL1_DCACHE_SIZE 128
15212#define _SC_LEVEL1_DCACHE_ASSOC 129
15213#define _SC_LEVEL1_DCACHE_LINESIZE 130
15214#define _SC_LEVEL2_CACHE_SIZE 131
15215#define _SC_LEVEL2_CACHE_ASSOC 132
15216#define _SC_LEVEL2_CACHE_LINESIZE 133
15217#define _SC_LEVEL3_CACHE_SIZE 134
15218#define _SC_LEVEL3_CACHE_ASSOC 135
15219#define _SC_LEVEL3_CACHE_LINESIZE 136
15220#define _SC_LEVEL4_CACHE_SIZE 137
15221#define _SC_LEVEL4_CACHE_ASSOC 138
15222#define _SC_LEVEL4_CACHE_LINESIZE 139
15223#define _SC_POSIX_26_VERSION 140
15224#define _PC_LINK_MAX 0
15225#define _PC_MAX_CANON 1
15226#define _PC_MAX_INPUT 2
15227#define _PC_NAME_MAX 3
15228#define _PC_PATH_MAX 4
15229#define _PC_PIPE_BUF 5
15230#define _PC_CHOWN_RESTRICTED 6
15231#define _PC_NO_TRUNC 7
15232#define _PC_VDISABLE 8
15233#define _PC_ASYNC_IO 9
15234#define _PC_PRIO_IO 10
15235#define _PC_SYNC_IO 11
15236#define _PC_FILESIZEBITS 12
15237#define _PC_2_SYMLINKS 13
15238#define _PC_SYMLINK_MAX 14
15239#define _PC_ALLOC_SIZE_MIN 15
15240#define _PC_REC_INCR_XFER_SIZE 16
15241#define _PC_REC_MAX_XFER_SIZE 17
15242#define _PC_REC_MIN_XFER_SIZE 18
15243#define _PC_REC_XFER_ALIGN 19
15244#define _PC_TIMESTAMP_RESOLUTION 20
15245#define _PC_POSIX_PERMISSIONS 90
15246#define _PC_POSIX_SECURITY 91
15247#define _PC_CASE_INSENSITIVE 92
15248#define _CS_PATH 0
15249#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1
15250#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
15251#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
15252#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 2
15253#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
15254#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
15255#define _CS_POSIX_V7_ILP32_OFF32_LIBS 3
15256#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
15257#define _CS_XBS5_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
15258#define _CS_XBS5_ILP32_OFF32_LINTFLAGS 4
15259#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 5
15260#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
15261#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
15262#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6
15263#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
15264#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
15265#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 7
15266#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
15267#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
15268#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 8
15269#define _CS_POSIX_V7_LP64_OFF64_CFLAGS 9
15270#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
15271#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
15272#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 10
15273#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
15274#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
15275#define _CS_POSIX_V7_LP64_OFF64_LIBS 11
15276#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
15277#define _CS_XBS5_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
15278#define _CS_XBS5_LP64_OFF64_LINTFLAGS 12
15279#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 13
15280#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
15281#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
15282#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 14
15283#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
15284#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
15285#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 15
15286#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
15287#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
15288#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 16
15289#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 17
15290#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
15291#define _CS_XBS5_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
15292#define _CS_POSIX_V7_THREADS_CFLAGS 18
15293#define _CS_POSIX_V7_THREADS_LDFLAGS 19
15294#define _CS_V7_ENV 20
15295#define _CS_V6_ENV _CS_V7_ENV
15296#define _CS_LFS_CFLAGS 21
15297#define _CS_LFS_LDFLAGS 22
15298#define _CS_LFS_LIBS 23
15299#define _CS_LFS_LINTFLAGS 24
15300#define _SSP_UNISTD_H_
15301#define RUBY_MISSING_H 1
15302#define _MATH_H_
15303#define _M_LN2 0.693147180559945309417
15304#define HUGE_VAL (__builtin_huge_val())
15305#define HUGE_VALF (__builtin_huge_valf())
15306#define HUGE_VALL (__builtin_huge_vall())
15307#define INFINITY (__builtin_inff())
15308#define NAN (__builtin_nanf(""))
15309#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
15310#define __TMP_FLT_EVAL_METHOD
15311#undef FLT_EVAL_METHOD
15312#define FP_NAN 0
15313#define FP_INFINITE 1
15314#define FP_ZERO 2
15315#define FP_SUBNORMAL 3
15316#define FP_NORMAL 4
15317#define FP_ILOGB0 (-__INT_MAX__)
15318#define FP_ILOGBNAN __INT_MAX__
15319#define MATH_ERRNO 1
15320#define MATH_ERREXCEPT 2
15321#define _MATH_ERRHANDLING_ERRNO MATH_ERRNO
15322#define _MATH_ERRHANDLING_ERREXCEPT MATH_ERREXCEPT
15323#define math_errhandling (_MATH_ERRHANDLING_ERRNO | _MATH_ERRHANDLING_ERREXCEPT)
15324#define fpclassify(__x) (__builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, __x))
15325#define isfinite(__x) (__builtin_isfinite (__x))
15326#define isinf(__x) (__builtin_isinf_sign (__x))
15327#define isnan(__x) (__builtin_isnan (__x))
15328#define isnormal(__x) (__builtin_isnormal (__x))
15329#define signbit(__x) ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : (sizeof(__x) == sizeof(double)) ? __builtin_signbit (__x) : __builtin_signbitl(__x))
15330#define isgreater(__x,__y) (__builtin_isgreater (__x, __y))
15331#define isgreaterequal(__x,__y) (__builtin_isgreaterequal (__x, __y))
15332#define isless(__x,__y) (__builtin_isless (__x, __y))
15333#define islessequal(__x,__y) (__builtin_islessequal (__x, __y))
15334#define islessgreater(__x,__y) (__builtin_islessgreater (__x, __y))
15335#define isunordered(__x,__y) (__builtin_isunordered (__x, __y))
15336#define log2(x) (log (x) / _M_LN2)
15337#define signgam (*__signgam())
15338#define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
15339#define MAXFLOAT 3.40282347e+38F
15340#define M_E 2.7182818284590452354
15341#define M_LOG2E 1.4426950408889634074
15342#define M_LOG10E 0.43429448190325182765
15343#define M_LN2 _M_LN2
15344#define M_LN10 2.30258509299404568402
15345#define M_PI 3.14159265358979323846
15346#define M_PI_2 1.57079632679489661923
15347#define M_PI_4 0.78539816339744830962
15348#define M_1_PI 0.31830988618379067154
15349#define M_2_PI 0.63661977236758134308
15350#define M_2_SQRTPI 1.12837916709551257390
15351#define M_SQRT2 1.41421356237309504880
15352#define M_SQRT1_2 0.70710678118654752440
15353#define M_TWOPI (M_PI * 2.0)
15354#define M_3PI_4 2.3561944901923448370E0
15355#define M_SQRTPI 1.77245385090551602792981
15356#define M_LN2LO 1.9082149292705877000E-10
15357#define M_LN2HI 6.9314718036912381649E-1
15358#define M_SQRT3 1.73205080756887719000
15359#define M_IVLN10 0.43429448190325182765
15360#define M_LOG2_E _M_LN2
15361#define M_INVLN2 1.4426950408889633870E0
15362#undef RUBY_EXTERN
15363#define RUBY_EXTERN extern
15364#pragma GCC visibility push(default)
15365#pragma GCC visibility pop
15366#define RUBY
15367#undef _
15368#define _(args) args
15369#undef __
15370#define __(args) args
15371#define ANYARGS
15372#pragma GCC visibility push(default)
15373#define xmalloc ruby_xmalloc
15374#define xmalloc2 ruby_xmalloc2
15375#define xcalloc ruby_xcalloc
15376#define xrealloc ruby_xrealloc
15377#define xrealloc2 ruby_xrealloc2
15378#define xfree ruby_xfree
15379#define RUBY_ATTR_ALLOC_SIZE(params) __attribute__ ((alloc_size params))
15380#define RUBY_ATTR_MALLOC __attribute__((__malloc__))
15381#define RUBY_ATTR_RETURNS_NONNULL __attribute__((__returns_nonnull__))
15382#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
15383#define STRINGIZE(expr) STRINGIZE0(expr)
15384#define STRINGIZE0(expr) #expr
15385#define HAVE_TRUE_LONG_LONG 1
15386#define LONG_LONG long long
15387#undef _WIN32
15388#undef RUBY_EXTERN
15389#define FALSE 0
15390#define TRUE 1
15391#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
15392#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
15393#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
15394#define RUBY_EXTERN extern
15395#define EXTERN _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); RUBY_EXTERN
15396#define RUBY_MBCHAR_MAXSIZE INT_MAX
15397#define FLUSH_REGISTER_WINDOWS ((void)0)
15398#define PATH_SEP ":"
15399#define PATH_SEP_CHAR PATH_SEP[0]
15400#define PATH_ENV "PATH"
15401#define CASEFOLD_FILESYSTEM 0
15402#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
15403#define UNALIGNED_WORD_ACCESS 1
15404#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
15405#define NORETURN_STYLE_NEW 1
15406#pragma GCC visibility pop
15407#define RUBY_ASSERT_H
15408#define RUBY_ASSERT_FAIL(expr) rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
15409#define RUBY_ASSERT_MESG(expr,mesg) ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
15410#define RUBY_ASSERT_MESG_WHEN(cond,expr,mesg) ((RUBY_DEBUG+0) ? RUBY_ASSERT_MESG((expr), mesg) : __builtin_choose_expr( __builtin_constant_p(cond), __builtin_choose_expr(cond, RUBY_ASSERT_MESG(expr, mesg), (void)0), RUBY_ASSERT_MESG(!(cond) || (expr), mesg)))
15411#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
15412#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
15413#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
15414#define RUBY_DEBUG 0
15415#define RUBY_NDEBUG 0
15416#define ASSUME(x) (RB_LIKELY(!!(x)) ? (void)0 : UNREACHABLE)
15417#define UNREACHABLE_RETURN(val) UNREACHABLE
15418#define RUBY_MACRO_SELECT(base,n) TOKEN_PASTE(base, n)
15419#define _STDARG_H
15420#define _ANSI_STDARG_H_
15421#undef __need___va_list
15422#define va_start(v,l) __builtin_va_start(v,l)
15423#define va_end(v) __builtin_va_end(v)
15424#define va_arg(v,l) __builtin_va_arg(v,l)
15425#define va_copy(d,s) __builtin_va_copy(d,s)
15426#define __va_copy(d,s) __builtin_va_copy(d,s)
15427#define _VA_LIST_
15428#define _VA_LIST
15429#define _VA_LIST_T_H
15430#define __va_list__
15431#pragma GCC visibility push(default)
15432#define SIGNED_VALUE long
15433#define SIZEOF_VALUE SIZEOF_LONG
15434#define PRI_VALUE_PREFIX "l"
15435#define PRI_INT_PREFIX ""
15436#define PRI_LONG_PREFIX "l"
15437#define PRI_SHORT_PREFIX "h"
15438#define RUBY_PRI_VALUE_MARK "\v"
15439#define PRIdVALUE PRI_VALUE_PREFIX"d"
15440#define PRIoVALUE PRI_VALUE_PREFIX"o"
15441#define PRIuVALUE PRI_VALUE_PREFIX"u"
15442#define PRIxVALUE PRI_VALUE_PREFIX"x"
15443#define PRIXVALUE PRI_VALUE_PREFIX"X"
15444#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
15445#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
15446#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
15447#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
15448#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
15449#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
15450#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
15451#define PRIdSIZE PRI_SIZE_PREFIX"d"
15452#define PRIiSIZE PRI_SIZE_PREFIX"i"
15453#define PRIoSIZE PRI_SIZE_PREFIX"o"
15454#define PRIuSIZE PRI_SIZE_PREFIX"u"
15455#define PRIxSIZE PRI_SIZE_PREFIX"x"
15456#define PRIXSIZE PRI_SIZE_PREFIX"X"
15457#define _GCC_LIMITS_H_
15458#define _GCC_NEXT_LIMITS_H
15459#define _FEATURES_H
15460#define _CYGWIN_LIMITS_H__
15461#define __AIO_LISTIO_MAX 32
15462#define __AIO_MAX 8
15463#define __AIO_PRIO_DELTA_MAX 0
15464#define __ARG_MAX 32000
15465#define __ATEXIT_MAX 32
15466#define __CHILD_MAX 256
15467#define __DELAYTIMER_MAX __INT_MAX__
15468#define __HOST_NAME_MAX 255
15469#define __IOV_MAX 1024
15470#define __LOGIN_NAME_MAX 256
15471#define __MQ_OPEN_MAX 256
15472#define __MQ_PRIO_MAX INT_MAX
15473#define __OPEN_MAX 3200
15474#define __PAGESIZE 65536
15475#define __PTHREAD_DESTRUCTOR_ITERATIONS 4
15476#define __PTHREAD_KEYS_MAX 1024
15477#define __PTHREAD_STACK_MIN 65536
15478#define __RTSIG_MAX 33
15479#define __SEM_VALUE_MAX 1147483648
15480#define __SIGQUEUE_MAX 32
15481#define __STREAM_MAX 20
15482#define __SYMLOOP_MAX 10
15483#define __TIMER_MAX 32
15484#define __TTY_NAME_MAX 32
15485#define __FILESIZEBITS 64
15486#define __LINK_MAX 1024
15487#define __MAX_CANON 255
15488#define __MAX_INPUT 255
15489#define __NAME_MAX 255
15490#define __PATH_MAX 4096
15491#define __PIPE_BUF 4096
15492#define _LIMITS_H___
15493#define _MACH_MACHLIMITS_H_
15494#undef CHAR_BIT
15495#define CHAR_BIT __CHAR_BIT__
15496#undef LONG_BIT
15497#define LONG_BIT (__SIZEOF_LONG__ * __CHAR_BIT__)
15498#undef WORD_BIT
15499#define WORD_BIT (__SIZEOF_INT__ * __CHAR_BIT__)
15500#define MB_LEN_MAX 8
15501#undef SCHAR_MIN
15502#define SCHAR_MIN (-128)
15503#undef SCHAR_MAX
15504#define SCHAR_MAX 127
15505#undef UCHAR_MAX
15506#define UCHAR_MAX 255
15507#undef CHAR_MIN
15508#define CHAR_MIN (-128)
15509#undef CHAR_MAX
15510#define CHAR_MAX 127
15511#undef SHRT_MIN
15512#define SHRT_MIN (-32768)
15513#undef SHRT_MAX
15514#define SHRT_MAX 32767
15515#undef USHRT_MAX
15516#define USHRT_MAX 65535
15517#undef INT_MIN
15518#define INT_MIN (-INT_MAX-1)
15519#undef INT_MAX
15520#define INT_MAX __INT_MAX__
15521#undef UINT_MAX
15522#define UINT_MAX (INT_MAX * 2U + 1)
15523#undef LONG_MIN
15524#define LONG_MIN (-LONG_MAX-1L)
15525#undef LONG_MAX
15526#define LONG_MAX __LONG_MAX__
15527#undef ULONG_MAX
15528#define ULONG_MAX (LONG_MAX * 2UL + 1)
15529#undef LONG_LONG_MIN
15530#define LONG_LONG_MIN (-LONG_LONG_MAX-1)
15531#undef LONG_LONG_MAX
15532#define LONG_LONG_MAX __LONG_LONG_MAX__
15533#undef ULONG_LONG_MAX
15534#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
15535#undef LLONG_MIN
15536#define LLONG_MIN (-LLONG_MAX-1)
15537#undef LLONG_MAX
15538#define LLONG_MAX __LONG_LONG_MAX__
15539#undef ULLONG_MAX
15540#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
15541#undef SSIZE_MAX
15542#define SSIZE_MAX (__LONG_MAX__)
15543#define AIO_LISTIO_MAX __AIO_LISTIO_MAX
15544#define AIO_MAX __AIO_MAX
15545#define AIO_PRIO_DELTA_MAX __AIO_PRIO_DELTA_MAX
15546#undef ARG_MAX
15547#define ARG_MAX __ARG_MAX
15548#undef ATEXIT_MAX
15549#define ATEXIT_MAX __ATEXIT_MAX
15550#undef CHILD_MAX
15551#define CHILD_MAX __CHILD_MAX
15552#undef DELAYTIMER_MAX
15553#define DELAYTIMER_MAX __DELAYTIMER_MAX
15554#undef HOST_NAME_MAX
15555#define HOST_NAME_MAX __HOST_NAME_MAX
15556#undef IOV_MAX
15557#define IOV_MAX __IOV_MAX
15558#undef LOGIN_NAME_MAX
15559#define LOGIN_NAME_MAX __LOGIN_NAME_MAX
15560#undef MQ_OPEN_MAX
15561#define MQ_OPEN_MAX __MQ_OPEN_MAX
15562#undef MQ_PRIO_MAX
15563#define MQ_PRIO_MAX __MQ_PRIO_MAX
15564#undef OPEN_MAX
15565#define OPEN_MAX __OPEN_MAX
15566#undef PAGESIZE
15567#define PAGESIZE __PAGESIZE
15568#undef PAGE_SIZE
15569#define PAGE_SIZE PAGESIZE
15570#undef PTHREAD_DESTRUCTOR_ITERATIONS
15571#define PTHREAD_DESTRUCTOR_ITERATIONS __PTHREAD_DESTRUCTOR_ITERATIONS
15572#undef PTHREAD_KEYS_MAX
15573#define PTHREAD_KEYS_MAX __PTHREAD_KEYS_MAX
15574#undef PTHREAD_STACK_MIN
15575#define PTHREAD_STACK_MIN __PTHREAD_STACK_MIN
15576#undef PTHREAD_THREADS_MAX
15577#undef RTSIG_MAX
15578#define RTSIG_MAX __RTSIG_MAX
15579#undef SEM_NSEMS_MAX
15580#undef SEM_VALUE_MAX
15581#define SEM_VALUE_MAX __SEM_VALUE_MAX
15582#undef SIGQUEUE_MAX
15583#define SIGQUEUE_MAX __SIGQUEUE_MAX
15584#undef SS_REPL_MAX
15585#undef STREAM_MAX
15586#define STREAM_MAX __STREAM_MAX
15587#undef SYMLOOP_MAX
15588#define SYMLOOP_MAX __SYMLOOP_MAX
15589#undef TIMER_MAX
15590#define TIMER_MAX __TIMER_MAX
15591#undef TRACE_EVENT_NAME_MAX
15592#undef TRACE_NAME_MAX
15593#undef TRACE_SYS_MAX
15594#undef TRACE_USER_EVENT_MAX
15595#undef TTY_NAME_MAX
15596#define TTY_NAME_MAX __TTY_NAME_MAX
15597#undef TZNAME_MAX
15598#undef FILESIZEBITS
15599#define FILESIZEBITS __FILESIZEBITS
15600#undef LINK_MAX
15601#define LINK_MAX __LINK_MAX
15602#undef MAX_CANON
15603#define MAX_CANON __MAX_CANON
15604#undef MAX_INPUT
15605#define MAX_INPUT __MAX_INPUT
15606#undef NAME_MAX
15607#define NAME_MAX __NAME_MAX
15608#undef PATH_MAX
15609#define PATH_MAX __PATH_MAX
15610#undef PIPE_BUF
15611#define PIPE_BUF __PIPE_BUF
15612#undef POSIX_ALLOC_SIZE_MIN
15613#undef POSIX_REC_INCR_XFER_SIZE
15614#undef POSIX_REC_MAX_XFER_SIZE
15615#undef POSIX_REC_MIN_XFER_SIZE
15616#undef POSIX_REC_XFER_ALIGN
15617#undef SYMLINK_MAX
15618#define SYMLINK_MAX (PATH_MAX - 1)
15619#undef BC_BASE_MAX
15620#define BC_BASE_MAX 99
15621#undef BC_DIM_MAX
15622#define BC_DIM_MAX 2048
15623#undef BC_SCALE_MAX
15624#define BC_SCALE_MAX 99
15625#undef BC_STRING_MAX
15626#define BC_STRING_MAX 1000
15627#undef CHARCLASS_NAME_MAX
15628#undef COLL_WEIGHTS_MAX
15629#undef EXPR_NEST_MAX
15630#define EXPR_NEST_MAX 32
15631#undef LINE_MAX
15632#define LINE_MAX 2048
15633#undef NGROUPS_MAX
15634#define NGROUPS_MAX 1024
15635#undef RE_DUP_MAX
15636#define RE_DUP_MAX 255
15637#define _POSIX_CLOCKRES_MIN 20000000
15638#define _POSIX_AIO_LISTIO_MAX 2
15639#define _POSIX_AIO_MAX 1
15640#define _POSIX_ARG_MAX 4096
15641#define _POSIX_CHILD_MAX 25
15642#define _POSIX_DELAYTIMER_MAX 32
15643#define _POSIX_HOST_NAME_MAX 255
15644#define _POSIX_LINK_MAX 8
15645#define _POSIX_LOGIN_NAME_MAX 9
15646#define _POSIX_MAX_CANON 255
15647#define _POSIX_MAX_INPUT 255
15648#define _POSIX_MQ_OPEN_MAX 8
15649#define _POSIX_MQ_PRIO_MAX 32
15650#define _POSIX_NAME_MAX 14
15651#define _POSIX_NGROUPS_MAX 8
15652#define _POSIX_OPEN_MAX 20
15653#define _POSIX_PATH_MAX 256
15654#define _POSIX_PIPE_BUF 512
15655#define _POSIX_RE_DUP_MAX 255
15656#define _POSIX_RTSIG_MAX 8
15657#define _POSIX_SEM_NSEMS_MAX 256
15658#define _POSIX_SEM_VALUE_MAX 32767
15659#define _POSIX_SIGQUEUE_MAX 32
15660#define _POSIX_SSIZE_MAX 32767
15661#define _POSIX_STREAM_MAX 8
15662#define _POSIX_SS_REPL_MAX 4
15663#define _POSIX_SYMLINK_MAX 255
15664#define _POSIX_SYMLOOP_MAX 8
15665#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
15666#define _POSIX_THREAD_KEYS_MAX 128
15667#define _POSIX_THREAD_THREADS_MAX 64
15668#define _POSIX_TIMER_MAX 32
15669#define _POSIX_TRACE_EVENT_NAME_MAX 30
15670#define _POSIX_TRACE_NAME_MAX 8
15671#define _POSIX_TRACE_SYS_MAX 8
15672#define _POSIX_TRACE_USER_EVENT_MAX 32
15673#define _POSIX_TTY_NAME_MAX 9
15674#define _POSIX_TZNAME_MAX 6
15675#define _POSIX2_BC_BASE_MAX 99
15676#define _POSIX2_BC_DIM_MAX 2048
15677#define _POSIX2_BC_SCALE_MAX 99
15678#define _POSIX2_BC_STRING_MAX 1000
15679#define _POSIX2_COLL_WEIGHTS_MAX 2
15680#define _POSIX2_EXPR_NEST_MAX 32
15681#define _POSIX2_LINE_MAX 2048
15682#define _POSIX2_RE_DUP_MAX 255
15683#define _XOPEN_IOV_MAX 16
15684#define _XOPEN_NAME_MAX 255
15685#define _XOPEN_PATH_MAX 1024
15686#define NL_ARGMAX 9
15687#define NL_LANGMAX 14
15688#define NL_MSGMAX 32767
15689#define NL_SETMAX 255
15690#define NL_TEXTMAX _POSIX2_LINE_MAX
15691#undef NZERO
15692#define NZERO 20
15693#undef _GCC_NEXT_LIMITS_H
15694#define RUBY_FIXNUM_MAX (LONG_MAX>>1)
15695#define RUBY_FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
15696#define FIXNUM_MAX RUBY_FIXNUM_MAX
15697#define FIXNUM_MIN RUBY_FIXNUM_MIN
15698#define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)
15699#define INT2FIX(i) RB_INT2FIX(i)
15700#define RB_LONG2FIX(i) RB_INT2FIX(i)
15701#define LONG2FIX(i) RB_INT2FIX(i)
15702#define rb_fix_new(v) RB_INT2FIX(v)
15703#define rb_int_new(v) rb_int2inum(v)
15704#define rb_uint_new(v) rb_uint2inum(v)
15705#define LL2NUM(v) rb_ll2inum(v)
15706#define ULL2NUM(v) rb_ull2inum(v)
15707#define SIZET2NUM(v) ULONG2NUM(v)
15708#define SSIZET2NUM(v) LONG2NUM(v)
15709#define rb_long2int(n) rb_long2int_inline(n)
15710#define RB_FIX2LONG(x) ((long)RSHIFT((SIGNED_VALUE)(x),1))
15711#define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
15712#define RB_FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&RUBY_FIXNUM_FLAG)
15713#define RB_POSFIXABLE(f) ((f) < RUBY_FIXNUM_MAX+1)
15714#define RB_NEGFIXABLE(f) ((f) >= RUBY_FIXNUM_MIN)
15715#define RB_FIXABLE(f) (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f))
15716#define FIX2LONG(x) RB_FIX2LONG(x)
15717#define FIX2ULONG(x) RB_FIX2ULONG(x)
15718#define FIXNUM_P(f) RB_FIXNUM_P(f)
15719#define POSFIXABLE(f) RB_POSFIXABLE(f)
15720#define NEGFIXABLE(f) RB_NEGFIXABLE(f)
15721#define FIXABLE(f) RB_FIXABLE(f)
15722#define RB_IMMEDIATE_P(x) ((VALUE)(x) & RUBY_IMMEDIATE_MASK)
15723#define IMMEDIATE_P(x) RB_IMMEDIATE_P(x)
15724#define RB_STATIC_SYM_P(x) (((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)
15725#define RB_DYNAMIC_SYM_P(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) == (RUBY_T_SYMBOL))
15726#define RB_SYMBOL_P(x) (RB_STATIC_SYM_P(x)||RB_DYNAMIC_SYM_P(x))
15727#define RB_ID2SYM(x) (rb_id2sym(x))
15728#define RB_SYM2ID(x) (rb_sym2id(x))
15729#define STATIC_SYM_P(x) RB_STATIC_SYM_P(x)
15730#define DYNAMIC_SYM_P(x) RB_DYNAMIC_SYM_P(x)
15731#define SYMBOL_P(x) RB_SYMBOL_P(x)
15732#define ID2SYM(x) RB_ID2SYM(x)
15733#define SYM2ID(x) RB_SYM2ID(x)
15734#define USE_FLONUM 1
15735#define RB_FLONUM_P(x) ((((int)(SIGNED_VALUE)(x))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)
15736#define FLONUM_P(x) RB_FLONUM_P(x)
15737#define USE_SYMBOL_AS_METHOD_NAME 1
15738#define RUBY_Qfalse ((VALUE)RUBY_Qfalse)
15739#define RUBY_Qtrue ((VALUE)RUBY_Qtrue)
15740#define RUBY_Qnil ((VALUE)RUBY_Qnil)
15741#define RUBY_Qundef ((VALUE)RUBY_Qundef)
15742#define Qfalse RUBY_Qfalse
15743#define Qtrue RUBY_Qtrue
15744#define Qnil RUBY_Qnil
15745#define Qundef RUBY_Qundef
15746#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
15747#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
15748#define FLONUM_MASK RUBY_FLONUM_MASK
15749#define FLONUM_FLAG RUBY_FLONUM_FLAG
15750#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
15751#define RB_TEST(v) !(((VALUE)(v) & (VALUE)~RUBY_Qnil) == 0)
15752#define RB_NIL_P(v) !((VALUE)(v) != RUBY_Qnil)
15753#define RTEST(v) RB_TEST(v)
15754#define NIL_P(v) RB_NIL_P(v)
15755#define CLASS_OF(v) rb_class_of((VALUE)(v))
15756#define T_NONE RUBY_T_NONE
15757#define T_NIL RUBY_T_NIL
15758#define T_OBJECT RUBY_T_OBJECT
15759#define T_CLASS RUBY_T_CLASS
15760#define T_ICLASS RUBY_T_ICLASS
15761#define T_MODULE RUBY_T_MODULE
15762#define T_FLOAT RUBY_T_FLOAT
15763#define T_STRING RUBY_T_STRING
15764#define T_REGEXP RUBY_T_REGEXP
15765#define T_ARRAY RUBY_T_ARRAY
15766#define T_HASH RUBY_T_HASH
15767#define T_STRUCT RUBY_T_STRUCT
15768#define T_BIGNUM RUBY_T_BIGNUM
15769#define T_FILE RUBY_T_FILE
15770#define T_FIXNUM RUBY_T_FIXNUM
15771#define T_TRUE RUBY_T_TRUE
15772#define T_FALSE RUBY_T_FALSE
15773#define T_DATA RUBY_T_DATA
15774#define T_MATCH RUBY_T_MATCH
15775#define T_SYMBOL RUBY_T_SYMBOL
15776#define T_RATIONAL RUBY_T_RATIONAL
15777#define T_COMPLEX RUBY_T_COMPLEX
15778#define T_IMEMO RUBY_T_IMEMO
15779#define T_UNDEF RUBY_T_UNDEF
15780#define T_NODE RUBY_T_NODE
15781#define T_ZOMBIE RUBY_T_ZOMBIE
15782#define T_MOVED RUBY_T_MOVED
15783#define T_MASK RUBY_T_MASK
15784#define RB_BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK)
15785#define BUILTIN_TYPE(x) RB_BUILTIN_TYPE(x)
15786#define TYPE(x) rb_type((VALUE)(x))
15787#define RB_FLOAT_TYPE_P(obj) ( RB_FLONUM_P(obj) || (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT))
15788#define RB_TYPE_P(obj,type) ( ((type) == RUBY_T_FIXNUM) ? RB_FIXNUM_P(obj) : ((type) == RUBY_T_TRUE) ? ((obj) == RUBY_Qtrue) : ((type) == RUBY_T_FALSE) ? ((obj) == RUBY_Qfalse) : ((type) == RUBY_T_NIL) ? ((obj) == RUBY_Qnil) : ((type) == RUBY_T_UNDEF) ? ((obj) == RUBY_Qundef) : ((type) == RUBY_T_SYMBOL) ? RB_SYMBOL_P(obj) : ((type) == RUBY_T_FLOAT) ? RB_FLOAT_TYPE_P(obj) : (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == (type)))
15789#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
15790#define RB_UNUSED_VAR(x) x __attribute__ ((unused))
15791#define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
15792#define StringValue(v) rb_string_value(&(v))
15793#define StringValuePtr(v) rb_string_value_ptr(&(v))
15794#define StringValueCStr(v) rb_string_value_cstr(&(v))
15795#define SafeStringValue(v) StringValue(v)
15796#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
15797#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v);} while (0)
15798#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
15799#define FilePathStringValue(v) ((v) = rb_get_path(v))
15800#define RUBY_SAFE_LEVEL_MAX 1
15801#define ruby_safe_level_2_warning() ruby_safe_level_2_error()
15802#define RUBY_SAFE_LEVEL_INVALID_P(level) __extension__( __builtin_choose_expr( __builtin_constant_p(level), ((level) < 0 || RUBY_SAFE_LEVEL_MAX < (level)), 0))
15803#define RUBY_SAFE_LEVEL_CHECK(level,type) __extension__(__builtin_choose_expr(RUBY_SAFE_LEVEL_INVALID_P(level), ruby_safe_level_2_ ##type(), (level)))
15804#define rb_secure(level) rb_secure(RUBY_SAFE_LEVEL_CHECK(level, warning))
15805#define rb_set_safe_level(level) rb_set_safe_level(RUBY_SAFE_LEVEL_CHECK(level, error))
15806#define RB_NUM2LONG(x) rb_num2long_inline(x)
15807#define NUM2LONG(x) RB_NUM2LONG(x)
15808#define RB_NUM2ULONG(x) rb_num2ulong_inline(x)
15809#define NUM2ULONG(x) RB_NUM2ULONG(x)
15810#define RB_FIX2INT(x) ((int)rb_fix2int((VALUE)(x)))
15811#define RB_NUM2INT(x) rb_num2int_inline(x)
15812#define RB_NUM2UINT(x) ((unsigned int)rb_num2uint(x))
15813#define RB_FIX2UINT(x) ((unsigned int)rb_fix2uint(x))
15814#define NUM2INT(x) RB_NUM2INT(x)
15815#define NUM2UINT(x) RB_NUM2UINT(x)
15816#define FIX2INT(x) RB_FIX2INT(x)
15817#define FIX2UINT(x) RB_FIX2UINT(x)
15818#define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
15819#define FIX2SHORT(x) RB_FIX2SHORT(x)
15820#define RB_NUM2SHORT(x) rb_num2short_inline(x)
15821#define RB_NUM2USHORT(x) rb_num2ushort(x)
15822#define NUM2SHORT(x) RB_NUM2SHORT(x)
15823#define NUM2USHORT(x) RB_NUM2USHORT(x)
15824#define RB_NUM2LL(x) rb_num2ll_inline(x)
15825#define RB_NUM2ULL(x) rb_num2ull(x)
15826#define NUM2LL(x) RB_NUM2LL(x)
15827#define NUM2ULL(x) RB_NUM2ULL(x)
15828#define NUM2SIZET(x) NUM2ULONG(x)
15829#define NUM2SSIZET(x) NUM2LONG(x)
15830#define NUM2DBL(x) rb_num2dbl((VALUE)(x))
15831#define RB_NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
15832#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
15833#define NEWOBJ(obj,type) RB_NEWOBJ(obj,type)
15834#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
15835#define OBJSETUP(obj,c,t) rb_obj_setup(obj, c, t)
15836#define CLONESETUP(clone,obj) rb_clone_setup(clone,obj)
15837#define DUPSETUP(dup,obj) rb_dup_setup(dup,obj)
15838#define USE_RGENGC 1
15839#define USE_RINCGC 1
15840#define RGENGC_WB_PROTECTED_ARRAY 1
15841#define RGENGC_WB_PROTECTED_HASH 1
15842#define RGENGC_WB_PROTECTED_STRUCT 1
15843#define RGENGC_WB_PROTECTED_STRING 1
15844#define RGENGC_WB_PROTECTED_OBJECT 1
15845#define RGENGC_WB_PROTECTED_REGEXP 1
15846#define RGENGC_WB_PROTECTED_CLASS 1
15847#define RGENGC_WB_PROTECTED_FLOAT 1
15848#define RGENGC_WB_PROTECTED_COMPLEX 1
15849#define RGENGC_WB_PROTECTED_RATIONAL 1
15850#define RGENGC_WB_PROTECTED_BIGNUM 1
15851#define RGENGC_WB_PROTECTED_NODE_CREF 1
15852#define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
15853#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) __extension__( __builtin_choose_expr( RGENGC_WB_PROTECTED_ ##type, OBJ_WB_UNPROTECT((VALUE)(obj)), ((VALUE)(obj))))
15854#define RBASIC_CLASS(obj) (RBASIC(obj)->klass)
15855#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
15856#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
15857#define ROBJECT_EMBED ROBJECT_EMBED
15858#define ROBJECT_NUMIV(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ROBJECT(o)->as.heap.numiv)
15859#define ROBJECT_IVPTR(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT(o)->as.ary : ROBJECT(o)->as.heap.ivptr)
15860#define ROBJECT_IV_INDEX_TBL(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? RCLASS_IV_INDEX_TBL(rb_obj_class(o)) : ROBJECT(o)->as.heap.iv_index_tbl)
15861#define RCLASS_SUPER(c) rb_class_get_superclass(c)
15862#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m)
15863#define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
15864#define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
15865#define RMODULE_SUPER(m) RCLASS_SUPER(m)
15866#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
15867#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
15868#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
15869#define RFLOAT_VALUE(v) rb_float_value(v)
15870#define DBL2NUM(dbl) rb_float_new(dbl)
15871#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
15872#define ELTS_SHARED RUBY_ELTS_SHARED
15873#define RSTRING_NOEMBED RSTRING_NOEMBED
15874#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
15875#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
15876#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
15877#define RSTRING_FSTR RSTRING_FSTR
15878#define RSTRING_EMBED_LEN(str) (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))
15879#define RSTRING_LEN(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING_EMBED_LEN(str) : RSTRING(str)->as.heap.len)
15880#define RSTRING_PTR(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING(str)->as.ary : RSTRING(str)->as.heap.ptr)
15881#define RSTRING_END(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? (RSTRING(str)->as.ary + RSTRING_EMBED_LEN(str)) : (RSTRING(str)->as.heap.ptr + RSTRING(str)->as.heap.len))
15882#define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str))
15883#define RSTRING_GETMEM(str,ptrvar,lenvar) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? ((ptrvar) = RSTRING(str)->as.ary, (lenvar) = RSTRING_EMBED_LEN(str)) : ((ptrvar) = RSTRING(str)->as.heap.ptr, (lenvar) = RSTRING(str)->as.heap.len))
15884#define USE_TRANSIENT_HEAP 1
15885#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
15886#define RARRAY_EMBED_FLAG (VALUE)RARRAY_EMBED_FLAG
15887#define RARRAY_EMBED_LEN_MASK (VALUE)RARRAY_EMBED_LEN_MASK
15888#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
15889#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
15890#define RARRAY_EMBED_LEN(a) (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT))
15891#define RARRAY_LEN(a) rb_array_len(a)
15892#define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary))
15893#define RARRAY_CONST_PTR(a) rb_array_const_ptr(a)
15894#define RARRAY_CONST_PTR_TRANSIENT(a) rb_array_const_ptr_transient(a)
15895#define RARRAY_TRANSIENT_P(ary) FL_TEST_RAW((ary), RARRAY_TRANSIENT_FLAG)
15896#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
15897#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
15898#define RARRAY_PTR_USE_TRANSIENT(ary,ptr_name,expr) do { const VALUE _ary = (ary); VALUE *ptr_name = (VALUE *)RARRAY_PTR_USE_START_TRANSIENT(_ary); expr; RARRAY_PTR_USE_END_TRANSIENT(_ary); } while (0)
15899#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
15900#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
15901#define RARRAY_PTR_USE(ary,ptr_name,expr) do { const VALUE _ary = (ary); VALUE *ptr_name = (VALUE *)RARRAY_PTR_USE_START(_ary); expr; RARRAY_PTR_USE_END(_ary); } while (0)
15902#define RARRAY_AREF(a,i) (RARRAY_CONST_PTR_TRANSIENT(a)[i])
15903#define RARRAY_ASET(a,i,v) do { const VALUE _ary = (a); const VALUE _v = (v); VALUE *ptr = (VALUE *)RARRAY_PTR_USE_START_TRANSIENT(_ary); RB_OBJ_WRITE(_ary, &ptr[i], _v); RARRAY_PTR_USE_END_TRANSIENT(_ary); } while (0)
15904#define RARRAY_PTR(a) ((VALUE *)RARRAY_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(ARRAY, a)))
15905#define RREGEXP_PTR(r) (RREGEXP(r)->ptr)
15906#define RREGEXP_SRC(r) (RREGEXP(r)->src)
15907#define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src)
15908#define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
15909#define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src)
15910#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
15911#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
15912#define RHASH_IFNONE(h) rb_hash_ifnone(h)
15913#define RHASH_SIZE(h) rb_hash_size_num(h)
15914#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
15915#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
15916#define HAVE_TYPE_RB_DATA_TYPE_T 1
15917#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
15918#define HAVE_RB_DATA_TYPE_T_PARENT 1
15919#define DATA_PTR(dta) (RDATA(dta)->data)
15920#define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1)
15921#define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type)
15922#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
15923#define RUBY_UNTYPED_DATA_WARNING 1
15924#define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t))
15925#define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1)
15926#define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0)
15927#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
15928#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
15929#define RUBY_TYPED_FREE_IMMEDIATELY 1
15930#define RUBY_TYPED_WB_PROTECTED RUBY_FL_WB_PROTECTED
15931#define RUBY_TYPED_PROMOTED1 RUBY_FL_PROMOTED1
15932#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free))
15933#define Data_Make_Struct0(result,klass,type,size,mark,free,sval) VALUE result = rb_data_object_zalloc((klass), (size), (RUBY_DATA_FUNC)(mark), (RUBY_DATA_FUNC)(free)); (void)((sval) = (type *)DATA_PTR(result));
15934#define Data_Make_Struct(klass,type,mark,free,sval) ({ Data_Make_Struct0(data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj; })
15935#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
15936#define TypedData_Make_Struct0(result,klass,type,size,data_type,sval) VALUE result = rb_data_typed_object_zalloc(klass, size, data_type); (void)((sval) = (type *)DATA_PTR(result));
15937#define TypedData_Make_Struct(klass,type,data_type,sval) ({ TypedData_Make_Struct0(data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj; })
15938#define Data_Get_Struct(obj,type,sval) ((sval) = (type*)rb_data_object_get(obj))
15939#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = (type*)rb_check_typeddata((obj), (data_type)))
15940#define RSTRUCT_LEN(st) NUM2LONG(rb_struct_size(st))
15941#define RSTRUCT_PTR(st) rb_struct_ptr(st)
15942#define RSTRUCT_SET(st,idx,v) rb_struct_aset(st, INT2NUM(idx), (v))
15943#define RSTRUCT_GET(st,idx) rb_struct_aref(st, INT2NUM(idx))
15944#define RBIGNUM_SIGN(b) (rb_big_sign(b))
15945#define RBIGNUM_POSITIVE_P(b) (RBIGNUM_SIGN(b)!=0)
15946#define RBIGNUM_NEGATIVE_P(b) (RBIGNUM_SIGN(b)==0)
15947#define R_CAST(st) (struct st*)
15948#define RMOVED(obj) (R_CAST(RMoved)(obj))
15949#define RBASIC(obj) (R_CAST(RBasic)(obj))
15950#define ROBJECT(obj) (R_CAST(RObject)(obj))
15951#define RCLASS(obj) (R_CAST(RClass)(obj))
15952#define RMODULE(obj) RCLASS(obj)
15953#define RSTRING(obj) (R_CAST(RString)(obj))
15954#define RREGEXP(obj) (R_CAST(RRegexp)(obj))
15955#define RARRAY(obj) (R_CAST(RArray)(obj))
15956#define RDATA(obj) (R_CAST(RData)(obj))
15957#define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj))
15958#define RFILE(obj) (R_CAST(RFile)(obj))
15959#define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON)
15960#define FL_WB_PROTECTED ((VALUE)RUBY_FL_WB_PROTECTED)
15961#define FL_PROMOTED0 ((VALUE)RUBY_FL_PROMOTED0)
15962#define FL_PROMOTED1 ((VALUE)RUBY_FL_PROMOTED1)
15963#define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE)
15964#define FL_TAINT ((VALUE)RUBY_FL_TAINT)
15965#define FL_UNTRUSTED ((VALUE)RUBY_FL_UNTRUSTED)
15966#define FL_SEEN_OBJ_ID ((VALUE)RUBY_FL_SEEN_OBJ_ID)
15967#define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR)
15968#define FL_FREEZE ((VALUE)RUBY_FL_FREEZE)
15969#define FL_USHIFT ((VALUE)RUBY_FL_USHIFT)
15970#define FL_USER0 ((VALUE)RUBY_FL_USER0)
15971#define FL_USER1 ((VALUE)RUBY_FL_USER1)
15972#define FL_USER2 ((VALUE)RUBY_FL_USER2)
15973#define FL_USER3 ((VALUE)RUBY_FL_USER3)
15974#define FL_USER4 ((VALUE)RUBY_FL_USER4)
15975#define FL_USER5 ((VALUE)RUBY_FL_USER5)
15976#define FL_USER6 ((VALUE)RUBY_FL_USER6)
15977#define FL_USER7 ((VALUE)RUBY_FL_USER7)
15978#define FL_USER8 ((VALUE)RUBY_FL_USER8)
15979#define FL_USER9 ((VALUE)RUBY_FL_USER9)
15980#define FL_USER10 ((VALUE)RUBY_FL_USER10)
15981#define FL_USER11 ((VALUE)RUBY_FL_USER11)
15982#define FL_USER12 ((VALUE)RUBY_FL_USER12)
15983#define FL_USER13 ((VALUE)RUBY_FL_USER13)
15984#define FL_USER14 ((VALUE)RUBY_FL_USER14)
15985#define FL_USER15 ((VALUE)RUBY_FL_USER15)
15986#define FL_USER16 ((VALUE)RUBY_FL_USER16)
15987#define FL_USER17 ((VALUE)RUBY_FL_USER17)
15988#define FL_USER18 ((VALUE)RUBY_FL_USER18)
15989#define FL_USER19 ((VALUE)(unsigned int)RUBY_FL_USER19)
15990#define RB_SPECIAL_CONST_P(x) (RB_IMMEDIATE_P(x) || !RB_TEST(x))
15991#define SPECIAL_CONST_P(x) RB_SPECIAL_CONST_P(x)
15992#define RB_FL_ABLE(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) != RUBY_T_NODE)
15993#define RB_FL_TEST_RAW(x,f) (RBASIC(x)->flags&(f))
15994#define RB_FL_TEST(x,f) (RB_FL_ABLE(x)?RB_FL_TEST_RAW((x),(f)):0)
15995#define RB_FL_ANY_RAW(x,f) RB_FL_TEST_RAW((x),(f))
15996#define RB_FL_ANY(x,f) RB_FL_TEST((x),(f))
15997#define RB_FL_ALL_RAW(x,f) (RB_FL_TEST_RAW((x),(f)) == (f))
15998#define RB_FL_ALL(x,f) (RB_FL_TEST((x),(f)) == (f))
15999#define RB_FL_SET_RAW(x,f) (void)(RBASIC(x)->flags |= (f))
16000#define RB_FL_SET(x,f) (RB_FL_ABLE(x) ? RB_FL_SET_RAW(x, f) : (void)0)
16001#define RB_FL_UNSET_RAW(x,f) (void)(RBASIC(x)->flags &= ~(VALUE)(f))
16002#define RB_FL_UNSET(x,f) (RB_FL_ABLE(x) ? RB_FL_UNSET_RAW(x, f) : (void)0)
16003#define RB_FL_REVERSE_RAW(x,f) (void)(RBASIC(x)->flags ^= (f))
16004#define RB_FL_REVERSE(x,f) (RB_FL_ABLE(x) ? RB_FL_REVERSE_RAW(x, f) : (void)0)
16005#define RB_OBJ_TAINTABLE(x) (RB_FL_ABLE(x) && RB_BUILTIN_TYPE(x) != RUBY_T_BIGNUM && RB_BUILTIN_TYPE(x) != RUBY_T_FLOAT)
16006#define RB_OBJ_TAINTED_RAW(x) RB_FL_TEST_RAW(x, RUBY_FL_TAINT)
16007#define RB_OBJ_TAINTED(x) (!!RB_FL_TEST((x), RUBY_FL_TAINT))
16008#define RB_OBJ_TAINT_RAW(x) RB_FL_SET_RAW(x, RUBY_FL_TAINT)
16009#define RB_OBJ_TAINT(x) (RB_OBJ_TAINTABLE(x) ? RB_OBJ_TAINT_RAW(x) : (void)0)
16010#define RB_OBJ_UNTRUSTED(x) RB_OBJ_TAINTED(x)
16011#define RB_OBJ_UNTRUST(x) RB_OBJ_TAINT(x)
16012#define RB_OBJ_INFECT_RAW(x,s) RB_FL_SET_RAW(x, RB_OBJ_TAINTED_RAW(s))
16013#define RB_OBJ_INFECT(x,s) ( (RB_OBJ_TAINTABLE(x) && RB_FL_ABLE(s)) ? RB_OBJ_INFECT_RAW(x, s) : (void)0)
16014#define RB_OBJ_FROZEN_RAW(x) (RBASIC(x)->flags&RUBY_FL_FREEZE)
16015#define RB_OBJ_FROZEN(x) (!RB_FL_ABLE(x) || RB_OBJ_FROZEN_RAW(x))
16016#define RB_OBJ_FREEZE_RAW(x) (void)(RBASIC(x)->flags |= RUBY_FL_FREEZE)
16017#define RB_OBJ_FREEZE(x) rb_obj_freeze_inline((VALUE)x)
16018#define FL_ABLE(x) RB_FL_ABLE(x)
16019#define FL_TEST_RAW(x,f) RB_FL_TEST_RAW(x,f)
16020#define FL_TEST(x,f) RB_FL_TEST(x,f)
16021#define FL_ANY_RAW(x,f) RB_FL_ANY_RAW(x,f)
16022#define FL_ANY(x,f) RB_FL_ANY(x,f)
16023#define FL_ALL_RAW(x,f) RB_FL_ALL_RAW(x,f)
16024#define FL_ALL(x,f) RB_FL_ALL(x,f)
16025#define FL_SET_RAW(x,f) RB_FL_SET_RAW(x,f)
16026#define FL_SET(x,f) RB_FL_SET(x,f)
16027#define FL_UNSET_RAW(x,f) RB_FL_UNSET_RAW(x,f)
16028#define FL_UNSET(x,f) RB_FL_UNSET(x,f)
16029#define FL_REVERSE_RAW(x,f) RB_FL_REVERSE_RAW(x,f)
16030#define FL_REVERSE(x,f) RB_FL_REVERSE(x,f)
16031#define OBJ_TAINTABLE(x) RB_OBJ_TAINTABLE(x)
16032#define OBJ_TAINTED_RAW(x) RB_OBJ_TAINTED_RAW(x)
16033#define OBJ_TAINTED(x) RB_OBJ_TAINTED(x)
16034#define OBJ_TAINT_RAW(x) RB_OBJ_TAINT_RAW(x)
16035#define OBJ_TAINT(x) RB_OBJ_TAINT(x)
16036#define OBJ_UNTRUSTED(x) RB_OBJ_UNTRUSTED(x)
16037#define OBJ_UNTRUST(x) RB_OBJ_UNTRUST(x)
16038#define OBJ_INFECT_RAW(x,s) RB_OBJ_INFECT_RAW(x,s)
16039#define OBJ_INFECT(x,s) RB_OBJ_INFECT(x,s)
16040#define OBJ_FROZEN_RAW(x) RB_OBJ_FROZEN_RAW(x)
16041#define OBJ_FROZEN(x) RB_OBJ_FROZEN(x)
16042#define OBJ_FREEZE_RAW(x) RB_OBJ_FREEZE_RAW(x)
16043#define OBJ_FREEZE(x) RB_OBJ_FREEZE(x)
16044#define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
16045#define rb_data_object_wrap_warning(klass,ptr,mark,free) __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)))
16046#define rb_data_object_wrap_0 rb_data_object_wrap
16047#define rb_data_object_wrap_1 rb_data_object_wrap_warning
16048#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_, RUBY_UNTYPED_DATA_WARNING)
16049#define rb_data_object_get_0 rb_data_object_get
16050#define rb_data_object_get_1 rb_data_object_get_warning
16051#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_, RUBY_UNTYPED_DATA_WARNING)
16052#define rb_data_object_make_0 rb_data_object_make
16053#define rb_data_object_make_1 rb_data_object_make_warning
16054#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_, RUBY_UNTYPED_DATA_WARNING)
16055#define RB_OBJ_PROMOTED_RAW(x) RB_FL_ALL_RAW(x, RUBY_FL_PROMOTED)
16056#define RB_OBJ_PROMOTED(x) (RB_SPECIAL_CONST_P(x) ? 0 : RB_OBJ_PROMOTED_RAW(x))
16057#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
16058#define OBJ_PROMOTED_RAW(x) RB_OBJ_PROMOTED_RAW(x)
16059#define OBJ_PROMOTED(x) RB_OBJ_PROMOTED(x)
16060#define OBJ_WB_UNPROTECT(x) RB_OBJ_WB_UNPROTECT(x)
16061#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
16062#define RB_OBJ_WRITTEN(a,oldv,b) rb_obj_written((VALUE)(a), (VALUE)(oldv), (VALUE)(b), __FILE__, __LINE__)
16063#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
16064#define RUBY_INTEGER_UNIFICATION 1
16065#define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
16066#define RB_INT2NUM(v) RB_INT2FIX((int)(v))
16067#define RB_UINT2NUM(v) RB_LONG2FIX((unsigned int)(v))
16068#define INT2NUM(x) RB_INT2NUM(x)
16069#define UINT2NUM(x) RB_UINT2NUM(x)
16070#define RB_LONG2NUM(x) rb_long2num_inline(x)
16071#define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
16072#define RB_NUM2CHR(x) rb_num2char_inline(x)
16073#define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
16074#define LONG2NUM(x) RB_LONG2NUM(x)
16075#define ULONG2NUM(x) RB_ULONG2NUM(x)
16076#define USHORT2NUM(x) RB_INT2FIX(x)
16077#define NUM2CHR(x) RB_NUM2CHR(x)
16078#define CHR2FIX(x) RB_CHR2FIX(x)
16079#define RB_ST2FIX(h) RB_LONG2FIX((long)(h))
16080#define ST2FIX(h) RB_ST2FIX(h)
16081#define RB_ALLOC_N(type,n) ((type*)ruby_xmalloc2((size_t)(n),sizeof(type)))
16082#define RB_ALLOC(type) ((type*)ruby_xmalloc(sizeof(type)))
16083#define RB_ZALLOC_N(type,n) ((type*)ruby_xcalloc((size_t)(n),sizeof(type)))
16084#define RB_ZALLOC(type) (RB_ZALLOC_N(type,1))
16085#define RB_REALLOC_N(var,type,n) ((var)=(type*)ruby_xrealloc2((char*)(var),(size_t)(n),sizeof(type)))
16086#define ALLOC_N(type,n) RB_ALLOC_N(type,n)
16087#define ALLOC(type) RB_ALLOC(type)
16088#define ZALLOC_N(type,n) RB_ZALLOC_N(type,n)
16089#define ZALLOC(type) RB_ZALLOC(type)
16090#define REALLOC_N(var,type,n) RB_REALLOC_N(var,type,n)
16091#define ALLOCA_N(type,n) (type*)__builtin_alloca_with_align((sizeof(type)*(n)), RUBY_ALIGNOF(type) * CHAR_BIT)
16092#define DSIZE_T uint128_t
16093#define RUBY_ALLOCV_LIMIT 1024
16094#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
16095#define RB_ALLOCV_N(type,v,n) ((type*)(((size_t)(n) < RUBY_ALLOCV_LIMIT / sizeof(type)) ? ((v) = 0, alloca((size_t)(n) * sizeof(type))) : rb_alloc_tmp_buffer2(&(v), (long)(n), sizeof(type))))
16096#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
16097#define ALLOCV(v,n) RB_ALLOCV(v, n)
16098#define ALLOCV_N(type,v,n) RB_ALLOCV_N(type, v, n)
16099#define ALLOCV_END(v) RB_ALLOCV_END(v)
16100#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(size_t)(n))
16101#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n))
16102#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n))
16103#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n))
16104#define RUBY_CONST_ID_CACHE_NB(result,str) static ID rb_intern_id_cache; if (!rb_intern_id_cache) rb_intern_id_cache = rb_intern2((str), (long)strlen(str)); result rb_intern_id_cache;
16105#define RUBY_CONST_ID_CACHE(result,str) { RUBY_CONST_ID_CACHE_NB(result, str) }
16106#define RUBY_CONST_ID(var,str) do RUBY_CONST_ID_CACHE((var) =, (str)) while (0)
16107#define CONST_ID_CACHE(result,str) RUBY_CONST_ID_CACHE(result, str)
16108#define CONST_ID(var,str) RUBY_CONST_ID(var, str)
16109#define rb_intern(str) (__builtin_constant_p(str) ? __extension__ ({RUBY_CONST_ID_CACHE_NB((ID), (str))}) : rb_intern(str))
16110#define rb_intern_const(str) (__builtin_constant_p(str) ? __extension__ (rb_intern2((str), (long)strlen(str))) : (rb_intern)(str))
16111#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
16112#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
16113#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))
16114#define rb_funcall2 rb_funcallv
16115#define rb_funcall3 rb_funcallv_public
16116#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
16117#define RB_SCAN_ARGS_KEYWORDS 1
16118#define RB_SCAN_ARGS_EMPTY_KEYWORDS 2
16119#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
16120#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
16121#define ruby_verbose (*rb_ruby_verbose_ptr())
16122#define ruby_debug (*rb_ruby_debug_ptr())
16123#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
16124#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
16125#define RB_BLOCK_CALL_FUNC_STRICT 1
16126#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
16127#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
16128#define RB_NO_KEYWORDS 0
16129#define RB_PASS_KEYWORDS 1
16130#define RB_PASS_EMPTY_KEYWORDS 2
16131#define RB_PASS_CALLED_KEYWORDS 3
16132#define rb_type_p(obj,type) __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : rb_type(obj) == (type))
16133#define rb_special_const_p(obj) __extension__ ({ VALUE special_const_obj = (obj); (int)(RB_SPECIAL_CONST_P(special_const_obj) ? RUBY_Qtrue : RUBY_Qfalse); })
16134#define RUBY_INTERN_H 1
16135#define RUBY_ST_H 1
16136#pragma GCC visibility push(default)
16137#define ST_DATA_T_DEFINED
16138#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
16139#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
16140#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
16141#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
16142#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
16143#define st_init_table rb_st_init_table
16144#define st_init_table_with_size rb_st_init_table_with_size
16145#define st_init_numtable rb_st_init_numtable
16146#define st_init_numtable_with_size rb_st_init_numtable_with_size
16147#define st_init_strtable rb_st_init_strtable
16148#define st_init_strtable_with_size rb_st_init_strtable_with_size
16149#define st_init_strcasetable rb_st_init_strcasetable
16150#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
16151#define st_delete rb_st_delete
16152#define st_delete_safe rb_st_delete_safe
16153#define st_shift rb_st_shift
16154#define st_insert rb_st_insert
16155#define st_insert2 rb_st_insert2
16156#define st_lookup rb_st_lookup
16157#define st_get_key rb_st_get_key
16158#define st_update rb_st_update
16159#define st_foreach_with_replace rb_st_foreach_with_replace
16160#define st_foreach rb_st_foreach
16161#define st_foreach_check rb_st_foreach_check
16162#define st_keys rb_st_keys
16163#define st_keys_check rb_st_keys_check
16164#define st_values rb_st_values
16165#define st_values_check rb_st_values_check
16166#define st_add_direct rb_st_add_direct
16167#define st_free_table rb_st_free_table
16168#define st_cleanup_safe rb_st_cleanup_safe
16169#define st_clear rb_st_clear
16170#define st_copy rb_st_copy
16171#define st_numcmp rb_st_numcmp
16172#define st_numhash rb_st_numhash
16173#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
16174#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
16175#define st_strcasecmp rb_st_locale_insensitive_strcasecmp
16176#define st_strncasecmp rb_st_locale_insensitive_strncasecmp
16177#define st_memsize rb_st_memsize
16178#define st_hash rb_st_hash
16179#define st_hash_uint32 rb_st_hash_uint32
16180#define st_hash_uint rb_st_hash_uint
16181#define st_hash_end rb_st_hash_end
16182#define st_hash_start(h) ((st_index_t)(h))
16183#pragma GCC visibility pop
16184#define MJIT_STATIC static
16185#pragma GCC visibility push(default)
16186#define UNLIMITED_ARGUMENTS (-1)
16187#define rb_ary_new2 rb_ary_new_capa
16188#define rb_ary_new3 rb_ary_new_from_args
16189#define rb_ary_new4 rb_ary_new_from_values
16190#define rb_big2int(x) rb_big2long(x)
16191#define rb_big2uint(x) rb_big2ulong(x)
16192#define INTEGER_PACK_MSWORD_FIRST 0x01
16193#define INTEGER_PACK_LSWORD_FIRST 0x02
16194#define INTEGER_PACK_MSBYTE_FIRST 0x10
16195#define INTEGER_PACK_LSBYTE_FIRST 0x20
16196#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
16197#define INTEGER_PACK_2COMP 0x80
16198#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
16199#define INTEGER_PACK_FORCE_BIGNUM 0x100
16200#define INTEGER_PACK_NEGATIVE 0x200
16201#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
16202#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
16203#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
16204#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
16205#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
16206#define rb_rational_new2(x,y) rb_rational_new((x), (y))
16207#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
16208#define rb_Rational2(x,y) rb_Rational((x), (y))
16209#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
16210#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
16211#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
16212#define rb_complex_new2(x,y) rb_complex_new((x), (y))
16213#define rb_complex_add rb_complex_plus
16214#define rb_complex_sub rb_complex_minus
16215#define rb_complex_nagate rb_complex_uminus
16216#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
16217#define rb_Complex2(x,y) rb_Complex((x), (y))
16218#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
16219#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))
16220#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)
16221#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)
16222#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
16223#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
16224#define rb_exc_new2 rb_exc_new_cstr
16225#define rb_exc_new3 rb_exc_new_str
16226#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)
16227#define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
16228#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
16229#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
16230#define rb_check_arity rb_check_arity
16231#define rb_fd_ptr(f) ((f)->fdset)
16232#define rb_fd_max(f) ((f)->maxfd)
16233#define HAVE_RB_DEFINE_ALLOC_FUNC 1
16234#define st_foreach_safe rb_st_foreach_safe
16235#define rb_defout rb_stdout
16236#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
16237#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
16238#define rb_memcmp memcmp
16239#define HAVE_RB_REG_NEW_STR 1
16240#define rb_argv rb_get_argv()
16241#define posix_signal ruby_posix_signal
16242#define rb_str_dup_frozen rb_str_new_frozen
16243#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
16244#define rb_hash_uint(h,i) st_hash_uint((h), (i))
16245#define rb_hash_end(h) st_hash_end(h)
16246#define rb_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_str_new_static((str), (len)) : rb_str_new((str), (len)) )
16247#define rb_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_str_new_static((str), (long)strlen(str)) : rb_str_new_cstr(str) )
16248#define rb_usascii_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_usascii_str_new_static((str), (len)) : rb_usascii_str_new((str), (len)) )
16249#define rb_utf8_str_new(str,len) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str) && __builtin_constant_p(len)) ? rb_utf8_str_new_static((str), (len)) : rb_utf8_str_new((str), (len)) )
16250#define rb_tainted_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_tainted_str_new((str), (long)strlen(str)) : rb_tainted_str_new_cstr(str) )
16251#define rb_usascii_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_usascii_str_new_static((str), (long)strlen(str)) : rb_usascii_str_new_cstr(str) )
16252#define rb_utf8_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_utf8_str_new_static((str), (long)strlen(str)) : rb_utf8_str_new_cstr(str) )
16253#define rb_external_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_external_str_new((str), (long)strlen(str)) : rb_external_str_new_cstr(str) )
16254#define rb_locale_str_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_locale_str_new((str), (long)strlen(str)) : rb_locale_str_new_cstr(str) )
16255#define rb_str_buf_new_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_str_buf_cat(rb_str_buf_new((long)strlen(str)), (str), (long)strlen(str)) : rb_str_buf_new_cstr(str) )
16256#define rb_str_cat_cstr(str,ptr) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(ptr)) ? rb_str_cat((str), (ptr), (long)strlen(ptr)) : rb_str_cat_cstr((str), (ptr)) )
16257#define rb_exc_new_cstr(klass,ptr) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(ptr)) ? rb_exc_new((klass), (ptr), (long)strlen(ptr)) : rb_exc_new_cstr((klass), (ptr)) )
16258#define rb_str_new2 rb_str_new_cstr
16259#define rb_str_new3 rb_str_new_shared
16260#define rb_str_new4 rb_str_new_frozen
16261#define rb_str_new5 rb_str_new_with_class
16262#define rb_tainted_str_new2 rb_tainted_str_new_cstr
16263#define rb_str_buf_new2 rb_str_buf_new_cstr
16264#define rb_usascii_str_new2 rb_usascii_str_new_cstr
16265#define rb_str_buf_cat rb_str_cat
16266#define rb_str_buf_cat2 rb_str_cat_cstr
16267#define rb_str_cat2 rb_str_cat_cstr
16268#define rb_strlen_lit(str) (sizeof(str "") - 1)
16269#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
16270#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
16271#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
16272#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
16273#define rb_str_new_literal(str) rb_str_new_lit(str)
16274#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
16275#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
16276#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
16277#define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
16278#define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
16279#pragma GCC visibility pop
16280#define rb_f_notimplement_p(f) __builtin_types_compatible_p(__typeof__(f),__typeof__(rb_f_notimplement))
16281#define FIX_CONST_VALUE_PTR(x) (x)
16282#define RUBY_VM 1
16283#define HAVE_NATIVETHREAD
16284#define RUBY_EVENT_NONE 0x0000
16285#define RUBY_EVENT_LINE 0x0001
16286#define RUBY_EVENT_CLASS 0x0002
16287#define RUBY_EVENT_END 0x0004
16288#define RUBY_EVENT_CALL 0x0008
16289#define RUBY_EVENT_RETURN 0x0010
16290#define RUBY_EVENT_C_CALL 0x0020
16291#define RUBY_EVENT_C_RETURN 0x0040
16292#define RUBY_EVENT_RAISE 0x0080
16293#define RUBY_EVENT_ALL 0x00ff
16294#define RUBY_EVENT_B_CALL 0x0100
16295#define RUBY_EVENT_B_RETURN 0x0200
16296#define RUBY_EVENT_THREAD_BEGIN 0x0400
16297#define RUBY_EVENT_THREAD_END 0x0800
16298#define RUBY_EVENT_FIBER_SWITCH 0x1000
16299#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
16300#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
16301#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
16302#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
16303#define RUBY_EVENT_SWITCH 0x040000
16304#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
16305#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
16306#define RUBY_INTERNAL_EVENT_GC_START 0x400000
16307#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
16308#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
16309#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
16310#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
16311#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
16312#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
16313#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
16314#define ISASCII(c) rb_isascii(c)
16315#define ISPRINT(c) rb_isprint(c)
16316#define ISGRAPH(c) rb_isgraph(c)
16317#define ISSPACE(c) rb_isspace(c)
16318#define ISUPPER(c) rb_isupper(c)
16319#define ISLOWER(c) rb_islower(c)
16320#define ISALNUM(c) rb_isalnum(c)
16321#define ISALPHA(c) rb_isalpha(c)
16322#define ISDIGIT(c) rb_isdigit(c)
16323#define ISXDIGIT(c) rb_isxdigit(c)
16324#define ISBLANK(c) rb_isblank(c)
16325#define ISCNTRL(c) rb_iscntrl(c)
16326#define ISPUNCT(c) rb_ispunct(c)
16327#define TOUPPER(c) rb_toupper(c)
16328#define TOLOWER(c) rb_tolower(c)
16329#define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
16330#define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
16331#define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
16332#define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
16333#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_ARGS__))
16334#define rb_scan_args_isdigit(c) ((unsigned char)((c)-'0')<10)
16335#define rb_scan_args_count_end(fmt,ofs,vari) (fmt[ofs] ? -1 : (vari))
16336#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))
16337#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))
16338#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')))
16339#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))
16340#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'))
16341#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'))
16342#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
16343#define rb_scan_args_verify(fmt,varc) (sizeof(char[1-2*(rb_scan_args_count(fmt)<0)])!=1 ? rb_scan_args_bad_format(fmt) : sizeof(char[1-2*(rb_scan_args_count(fmt)!=(varc))])!=1 ? rb_scan_args_length_mismatch(fmt, varc) : (void)0)
16344#define rb_scan_args0(argc,argv,fmt,varc,vars) rb_scan_args_set(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)
16345#define rb_yield_values(argc,...) __extension__({ const int rb_yield_values_argc = (argc); const VALUE rb_yield_values_args[] = {__VA_ARGS__}; const int rb_yield_values_nargs = (int)(sizeof(rb_yield_values_args) / sizeof(VALUE)); rb_yield_values2( rb_varargs_argc_check(rb_yield_values_argc, rb_yield_values_nargs), rb_yield_values_nargs ? rb_yield_values_args : NULL); })
16346#define rb_funcall(recv,mid,argc,...) __extension__({ const int rb_funcall_argc = (argc); const VALUE rb_funcall_args[] = {__VA_ARGS__}; const int rb_funcall_nargs = (int)(sizeof(rb_funcall_args) / sizeof(VALUE)); rb_funcallv(recv, mid, rb_varargs_argc_check(rb_funcall_argc, rb_funcall_nargs), rb_funcall_nargs ? rb_funcall_args : NULL); })
16347#define RUBY_SUBST_H 1
16348#undef snprintf
16349#undef vsnprintf
16350#define snprintf ruby_snprintf
16351#define vsnprintf ruby_vsnprintf
16352#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
16353#pragma GCC visibility pop
16354#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
16355#define _STDBOOL_H
16356#define bool _Bool
16357#define true 1
16358#define false 0
16359#define __bool_true_false_are_defined 1
16360#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
16361#define LIKELY(x) RB_LIKELY(x)
16362#define UNLIKELY(x) RB_UNLIKELY(x)
16363#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE("address", NOINLINE(x))
16364#undef NO_SANITIZE
16365#define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
16366#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
16367#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
16368#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
16369#define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
16370#define STATIC_ASSERT(name,expr) _Static_assert(expr, #name ": " #expr)
16371#define SIGNED_INTEGER_TYPE_P(int_type) (0 > ((int_type)0)-1)
16372#define SIGNED_INTEGER_MAX(sint_type) (sint_type) ((((sint_type)1) << (sizeof(sint_type) * CHAR_BIT - 2)) | ((((sint_type)1) << (sizeof(sint_type) * CHAR_BIT - 2)) - 1))
16373#define SIGNED_INTEGER_MIN(sint_type) (-SIGNED_INTEGER_MAX(sint_type)-1)
16374#define UNSIGNED_INTEGER_MAX(uint_type) (~(uint_type)0)
16375#define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
16376#define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
16377#define TIMET_MAX_PLUS_ONE (2*(double)(TIMET_MAX/2+1))
16378#define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
16379#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)))
16380#define MUL_OVERFLOW_FIXNUM_P(a,b) ({ struct { long fixnum : SIZEOF_LONG * CHAR_BIT - 1; } c; __builtin_mul_overflow_p((a), (b), c.fixnum); })
16381#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
16382#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
16383#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
16384#define swap16(x) __builtin_bswap16(x)
16385#define swap32(x) __builtin_bswap32(x)
16386#define swap64(x) __builtin_bswap64(x)
16387#define DLONG int128_t
16388#define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
16389#define bit_length(x) (unsigned int) (sizeof(x) <= SIZEOF_INT ? SIZEOF_INT * CHAR_BIT - nlz_int((unsigned int)(x)) : sizeof(x) <= SIZEOF_LONG ? SIZEOF_LONG * CHAR_BIT - nlz_long((unsigned long)(x)) : sizeof(x) <= SIZEOF_LONG_LONG ? SIZEOF_LONG_LONG * CHAR_BIT - nlz_long_long((unsigned LONG_LONG)(x)) : SIZEOF_INT128_T * CHAR_BIT - nlz_int128((uint128_t)(x)))
16390#define BDIGIT unsigned int
16391#define SIZEOF_BDIGIT SIZEOF_INT
16392#define BDIGIT_DBL unsigned LONG_LONG
16393#define BDIGIT_DBL_SIGNED LONG_LONG
16394#define PRI_BDIGIT_PREFIX ""
16395#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
16396#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
16397#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
16398#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
16399#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
16400#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
16401#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
16402#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
16403#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
16404#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
16405#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
16406#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
16407#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
16408#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
16409#define BIGNUM_EMBED_LEN_NUMBITS 3
16410#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
16411#define BIGNUM_SIGN_BIT ((VALUE)FL_USER1)
16412#define BIGNUM_SIGN(b) ((RBASIC(b)->flags & BIGNUM_SIGN_BIT) != 0)
16413#define BIGNUM_SET_SIGN(b,sign) ((sign) ? (RBASIC(b)->flags |= BIGNUM_SIGN_BIT) : (RBASIC(b)->flags &= ~BIGNUM_SIGN_BIT))
16414#define BIGNUM_POSITIVE_P(b) BIGNUM_SIGN(b)
16415#define BIGNUM_NEGATIVE_P(b) (!BIGNUM_SIGN(b))
16416#define BIGNUM_NEGATE(b) (RBASIC(b)->flags ^= BIGNUM_SIGN_BIT)
16417#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
16418#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
16419#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
16420#define BIGNUM_LEN(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? (size_t)((RBASIC(b)->flags >> BIGNUM_EMBED_LEN_SHIFT) & (BIGNUM_EMBED_LEN_MASK >> BIGNUM_EMBED_LEN_SHIFT)) : RBIGNUM(b)->as.heap.len)
16421#define BIGNUM_DIGITS(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? RBIGNUM(b)->as.ary : RBIGNUM(b)->as.heap.digits)
16422#define BIGNUM_LENINT(b) rb_long2int(BIGNUM_LEN(b))
16423#define RBIGNUM(obj) (R_CAST(RBignum)(obj))
16424#define RRATIONAL(obj) (R_CAST(RRational)(obj))
16425#define RRATIONAL_SET_NUM(rat,n) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->num,(n))
16426#define RRATIONAL_SET_DEN(rat,d) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->den,(d))
16427#define RFLOAT(obj) (R_CAST(RFloat)(obj))
16428#define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
16429#define RCOMPLEX_SET_REAL(cmp,r) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->real,(r))
16430#define RCOMPLEX_SET_IMAG(cmp,i) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->imag,(i))
16431#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
16432#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
16433#define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
16434#define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
16435#define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
16436#define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
16437#define RHASH(obj) (R_CAST(RHash)(obj))
16438#define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
16439#define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
16440#define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
16441#define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
16442#define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
16443#define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
16444#define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
16445#define RHASH_TRANSIENT_P(hash) FL_TEST_RAW((hash), RHASH_TRANSIENT_FLAG)
16446#define RHASH_SET_TRANSIENT_FLAG(h) FL_SET_RAW(h, RHASH_TRANSIENT_FLAG)
16447#define RHASH_UNSET_TRANSIENT_FLAG(h) FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG)
16448#undef RHASH_IFNONE
16449#undef RHASH_SIZE
16450#define RHASH_IFNONE(h) (RHASH(h)->ifnone)
16451#define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
16452#define RSTRUCT_EMBED_LEN_MAX RSTRUCT_EMBED_LEN_MAX
16453#define RSTRUCT_EMBED_LEN_MASK RSTRUCT_EMBED_LEN_MASK
16454#define RSTRUCT_EMBED_LEN_SHIFT RSTRUCT_EMBED_LEN_SHIFT
16455#define RSTRUCT_TRANSIENT_P(st) FL_TEST_RAW((obj), RSTRUCT_TRANSIENT_FLAG)
16456#define RSTRUCT_TRANSIENT_SET(st) FL_SET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
16457#define RSTRUCT_TRANSIENT_UNSET(st) FL_UNSET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
16458#undef RSTRUCT_LEN
16459#undef RSTRUCT_PTR
16460#undef RSTRUCT_SET
16461#undef RSTRUCT_GET
16462#define RSTRUCT_EMBED_LEN(st) (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT))
16463#define RSTRUCT_LEN(st) rb_struct_len(st)
16464#define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st))
16465#define RSTRUCT_CONST_PTR(st) rb_struct_const_ptr(st)
16466#define RSTRUCT_PTR(st) ((VALUE *)RSTRUCT_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(STRUCT, st)))
16467#define RSTRUCT_SET(st,idx,v) RB_OBJ_WRITE(st, &RSTRUCT_CONST_PTR(st)[idx], (v))
16468#define RSTRUCT_GET(st,idx) (RSTRUCT_CONST_PTR(st)[idx])
16469#define RSTRUCT(obj) (R_CAST(RStruct)(obj))
16470#define SERIALT2NUM ULL2NUM
16471#define PRI_SERIALT_PREFIX PRI_LL_PREFIX
16472#define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
16473#undef RClass
16474#define RCLASS_EXT(c) (RCLASS(c)->ptr)
16475#define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
16476#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
16477#define RCLASS_M_TBL(c) (RCLASS_EXT(c)->m_tbl)
16478#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
16479#define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
16480#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
16481#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
16482#define RCLASS_SERIAL(c) (RCLASS(c)->class_serial)
16483#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
16484#define RCLASS_CLONED FL_USER6
16485#define RICLASS_IS_ORIGIN FL_USER5
16486#define RCLASS_REFINED_BY_ANY FL_USER7
16487#undef RCLASS_SUPER
16488#define IMEMO_DEBUG 0
16489#define IMEMO_MASK 0x0f
16490#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
16491#define IMEMO_FL_USER0 FL_USER4
16492#define IMEMO_FL_USER1 FL_USER5
16493#define IMEMO_FL_USER2 FL_USER6
16494#define IMEMO_FL_USER3 FL_USER7
16495#define IMEMO_FL_USER4 FL_USER8
16496#define THROW_DATA_CONSUMED IMEMO_FL_USER0
16497#define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
16498#define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
16499#define rb_imemo_tmpbuf_auto_free_pointer() rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0)
16500#define RB_IMEMO_TMPBUF_PTR(v) ((void *)(((const struct rb_imemo_tmpbuf_struct *)(v))->ptr))
16501#define MEMO_V1_SET(m,v) RB_OBJ_WRITE((m), &(m)->v1, (v))
16502#define MEMO_V2_SET(m,v) RB_OBJ_WRITE((m), &(m)->v2, (v))
16503#define MEMO_CAST(m) ((struct MEMO *)m)
16504#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
16505#define roomof(x,y) (((x) + (y) - 1) / (y))
16506#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
16507#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
16508#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
16509#define NEW_PARTIAL_MEMO_FOR(type,value,member) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), rb_ary_set_len((value), offsetof(type, member) / sizeof(VALUE)), MEMO_FOR(type, value))
16510#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
16511#define rb_cFixnum rb_cInteger
16512#define rb_cBignum rb_cInteger
16513#define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
16514#define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
16515#define CMP_OPTIMIZABLE(data,type) (((data).opt_inited & CMP_OPTIMIZABLE_BIT(type)) ? ((data).opt_methods & CMP_OPTIMIZABLE_BIT(type)) : (((data).opt_inited |= CMP_OPTIMIZABLE_BIT(type)), rb_method_basic_definition_p(TOKEN_PASTE(rb_c,type), id_cmp) && ((data).opt_methods |= CMP_OPTIMIZABLE_BIT(type))))
16516#define OPTIMIZED_CMP(a,b,data) ((FIXNUM_P(a) && FIXNUM_P(b) && CMP_OPTIMIZABLE(data, Fixnum)) ? (((long)a > (long)b) ? 1 : ((long)a < (long)b) ? -1 : 0) : (STRING_P(a) && STRING_P(b) && CMP_OPTIMIZABLE(data, String)) ? rb_str_cmp(a, b) : (RB_FLOAT_TYPE_P(a) && RB_FLOAT_TYPE_P(b) && CMP_OPTIMIZABLE(data, Float)) ? rb_float_cmp(a, b) : rb_cmpint(rb_funcallv(a, id_cmp, 1, &b), a, b))
16517#define ARRAY_DEBUG (0+RUBY_DEBUG)
16518#define RARRAY_PTR_IN_USE_FLAG FL_USER14
16519#define ARY_PTR_USING_P(ary) FL_TEST_RAW((ary), RARRAY_PTR_IN_USE_FLAG)
16520#define RARY_TRANSIENT_SET(ary) FL_SET_RAW((ary), RARRAY_TRANSIENT_FLAG);
16521#define RARY_TRANSIENT_UNSET(ary) FL_UNSET_RAW((ary), RARRAY_TRANSIENT_FLAG);
16522#define rb_ary_new_from_args(n,...) __extension__ ({ const VALUE args_to_new_ary[] = {__VA_ARGS__}; if (__builtin_constant_p(n)) { STATIC_ASSERT(rb_ary_new_from_args, numberof(args_to_new_ary) == (n)); } rb_ary_new_from_values(numberof(args_to_new_ary), args_to_new_ary); })
16523#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, __func__)
16524#define rp_m(msg,obj) do { fprintf(stderr, "%s", (msg)); rb_obj_info_dump((VALUE)obj); } while (0)
16525#define bp() ruby_debug_breakpoint()
16526#define rb_raise_cstr(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_cstr(mesg)))
16527#define rb_raise_static(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_static(mesg, rb_strlen_lit(mesg))))
16528#define rb_name_err_raise_str(mesg,recv,name) rb_exc_raise(rb_name_err_new(mesg, recv, name))
16529#define rb_name_err_raise(mesg,recv,name) rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
16530#define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
16531#define id_signo ruby_static_id_signo
16532#define id_status ruby_static_id_status
16533#pragma GCC visibility push(default)
16534#pragma GCC visibility pop
16535#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
16536#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
16537#define ruby_sized_xrealloc(ptr,new_size,old_size) ruby_xrealloc(ptr, new_size)
16538#define ruby_sized_xrealloc2(ptr,new_count,element_size,old_count) ruby_xrealloc2(ptr, new_count, element_size)
16539#define ruby_sized_xfree(ptr,size) ruby_xfree(ptr)
16540#define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n)
16541#undef NEWOBJF_OF
16542#undef RB_NEWOBJ_OF
16543#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)(((flags) & FL_WB_PROTECTED) ? rb_wb_protected_newobj_of(klass, (flags) & ~FL_WB_PROTECTED) : rb_wb_unprotected_newobj_of(klass, flags))
16544#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
16545#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
16546#pragma GCC visibility push(default)
16547#pragma GCC visibility pop
16548#define rb_io_fptr_finalize rb_io_fptr_finalize_internal
16549#define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
16550#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
16551#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
16552#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
16553#define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
16554#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
16555#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
16556#define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
16557#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
16558#define RUBY_BIT_ROTL(v,n) (((v) << (n)) | ((v) >> ((sizeof(v) * 8) - n)))
16559#define RUBY_BIT_ROTR(v,n) (((v) >> (n)) | ((v) << ((sizeof(v) * 8) - n)))
16560#define rb_float_value(v) rb_float_value_inline(v)
16561#define rb_float_new(d) rb_float_new_inline(d)
16562#define RBASIC_CLEAR_CLASS(obj) memset(&(((struct RBasicRaw *)((VALUE)(obj)))->klass), 0, sizeof(VALUE))
16563#define RBASIC_SET_CLASS_RAW(obj,cls) memcpy(&((struct RBasicRaw *)((VALUE)(obj)))->klass, &(cls), sizeof(VALUE))
16564#define RBASIC_SET_CLASS(obj,cls) do { VALUE _obj_ = (obj); RB_OBJ_WRITE(_obj_, &((struct RBasicRaw *)(_obj_))->klass, cls); } while (0)
16565#define USE_SYMBOL_GC 1
16566#pragma GCC visibility push(default)
16567#pragma GCC visibility pop
16568#define RB_MAX_GROUPS (65536)
16569#define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
16570#define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
16571#define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
16572#define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
16573#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
16574#define rb_fstring_literal(str) rb_fstring_lit(str)
16575#define rb_fstring_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_fstring_new((str), (long)strlen(str)) : rb_fstring_cstr(str) )
16576#define QUOTE(str) rb_str_quote_unprintable(str)
16577#define QUOTE_ID(id) rb_id_quote_unprintable(id)
16578#define STR_NOEMBED FL_USER1
16579#define STR_SHARED FL_USER2
16580#define STR_EMBED_P(str) (!FL_TEST_RAW((str), STR_NOEMBED))
16581#define STR_SHARED_P(s) FL_ALL_RAW((s), STR_NOEMBED|ELTS_SHARED)
16582#define is_ascii_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT)
16583#define is_broken_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN)
16584#define rb_sym_intern_ascii_cstr(ptr) __extension__ ( { (__builtin_constant_p(ptr)) ? rb_sym_intern_ascii((ptr), (long)strlen(ptr)) : rb_sym_intern_ascii_cstr(ptr); })
16585#define COVERAGE_INDEX_LINES 0
16586#define COVERAGE_INDEX_BRANCHES 1
16587#define COVERAGE_TARGET_LINES 1
16588#define COVERAGE_TARGET_BRANCHES 2
16589#define COVERAGE_TARGET_METHODS 4
16590#define COVERAGE_TARGET_ONESHOT_LINES 8
16591#define ROBJECT_TRANSIENT_FLAG FL_USER13
16592#define ROBJ_TRANSIENT_P(obj) FL_TEST_RAW((obj), ROBJECT_TRANSIENT_FLAG)
16593#define ROBJ_TRANSIENT_SET(obj) FL_SET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
16594#define ROBJ_TRANSIENT_UNSET(obj) FL_UNSET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
16595#define CACHELINE 64
16596#define rb_funcallv(recv,mid,argc,argv) __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, recv, mid, argc, argv); })
16597#define rb_method_basic_definition_p(klass,mid) __extension__({ static struct rb_call_data rb_mbdp; (klass == Qfalse) ? true : rb_method_basic_definition_p_with_cc(&rb_mbdp, klass, mid); })
16598#pragma GCC visibility push(default)
16599#undef Check_Type
16600#define Check_Type(v,t) (!RB_TYPE_P((VALUE)(v), (t)) || ((t) == RUBY_T_DATA && RTYPEDDATA_P(v)) ? rb_unexpected_type((VALUE)(v), (t)) : (void)0)
16601#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
16602#define RB_OBJ_GC_FLAGS_MAX 6
16603#pragma GCC visibility pop
16604#define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
16605#define RUBY_DTRACE_HOOK(name,arg) do { if (UNLIKELY(RUBY_DTRACE_ ##name ##_ENABLED())) { int dtrace_line; const char *dtrace_file = rb_source_location_cstr(&dtrace_line); if (!dtrace_file) dtrace_file = ""; RUBY_DTRACE_ ##name(arg, dtrace_file, dtrace_line); } } while (0)
16606#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
16607#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
16608#define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : RB_BUILTIN_TYPE(arg_obj); })
16609#define FLEX_ARY_LEN
16610#define BITFIELD(type,name,size) type name : size
16611#define COMPILER_WARNING_PUSH _Pragma("GCC diagnostic push")
16612#define COMPILER_WARNING_POP _Pragma("GCC diagnostic pop")
16613#define COMPILER_WARNING_SPECIFIER(kind,msg) GCC diagnostic kind #msg
16614#define COMPILER_WARNING_ERROR(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(error, flag))
16615#define COMPILER_WARNING_IGNORED(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(ignored, flag))
16616#define COMPILER_WARNING_PRAGMA(str) COMPILER_WARNING_PRAGMA_(str)
16617#define COMPILER_WARNING_PRAGMA_(str) _Pragma(#str)
16618#define UNALIGNED_MEMBER_ACCESS(expr) __extension__({ COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Waddress-of-packed-member); typeof(expr) unaligned_member_access_result = (expr); COMPILER_WARNING_POP; unaligned_member_access_result; })
16619#define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
16620#undef RB_OBJ_WRITE
16621#define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
16622#define RUBY_VM_H 1
16623#pragma GCC visibility push(default)
16624#pragma GCC visibility pop
16625#define vm_exec rb_vm_exec
16626#define RUBY_GC_H 1
16627#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
16628#define RUBY_MARK_FREE_DEBUG 0
16629#define RUBY_MARK_ENTER(msg)
16630#define RUBY_MARK_LEAVE(msg)
16631#define RUBY_FREE_ENTER(msg)
16632#define RUBY_FREE_LEAVE(msg)
16633#define RUBY_GC_INFO if(0)printf
16634#define RUBY_MARK_NO_PIN_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
16635#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
16636#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
16637#define STACK_UPPER(x,a,b) (b)
16638#define STACK_GROW_DIR_DETECTION
16639#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
16640#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
16641#pragma GCC visibility push(default)
16642#pragma GCC visibility pop
16643#define RUBY_VM_CORE_H
16644#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
16645#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
16646#define VMDEBUG 0
16647#undef assert
16648#define assert RUBY_ASSERT
16649#define VM_ASSERT(expr) ((void)0)
16650#define VM_UNREACHABLE(func) UNREACHABLE
16651#define RUBY_VM_THREAD_MODEL 2
16652#define VM_INSN_INFO_TABLE_IMPL 2
16653#define RUBY_NODE_H 1
16654#define RNODE(obj) (R_CAST(RNode)(obj))
16655#define NODE_FL_NEWLINE (((VALUE)1)<<7)
16656#define NODE_TYPESHIFT 8
16657#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
16658#define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
16659#define nd_set_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
16660#define NODE_LSHIFT (NODE_TYPESHIFT+7)
16661#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
16662#define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
16663#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
16664#define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
16665#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
16666#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
16667#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
16668#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
16669#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
16670#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
16671#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
16672#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
16673#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
16674#define nd_last_loc(n) ((n)->nd_loc.end_pos)
16675#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
16676#define nd_node_id(n) ((n)->node_id)
16677#define nd_set_node_id(n,id) ((n)->node_id = (id))
16678#define nd_head u1.node
16679#define nd_alen u2.argc
16680#define nd_next u3.node
16681#define nd_cond u1.node
16682#define nd_body u2.node
16683#define nd_else u3.node
16684#define nd_resq u2.node
16685#define nd_ensr u3.node
16686#define nd_1st u1.node
16687#define nd_2nd u2.node
16688#define nd_stts u1.node
16689#define nd_entry u3.entry
16690#define nd_vid u1.id
16691#define nd_cflag u2.id
16692#define nd_cval u3.value
16693#define nd_oid u1.id
16694#define nd_tbl u1.tbl
16695#define nd_var u1.node
16696#define nd_iter u3.node
16697#define nd_value u2.node
16698#define nd_aid u3.id
16699#define nd_lit u1.value
16700#define nd_rest u1.id
16701#define nd_opt u1.node
16702#define nd_pid u1.id
16703#define nd_plen u2.argc
16704#define nd_recv u1.node
16705#define nd_mid u2.id
16706#define nd_args u3.node
16707#define nd_ainfo u3.args
16708#define nd_defn u3.node
16709#define nd_cpath u1.node
16710#define nd_super u3.node
16711#define nd_beg u1.node
16712#define nd_end u2.node
16713#define nd_state u3.state
16714#define nd_rval u2.value
16715#define nd_nth u2.argc
16716#define nd_tag u1.id
16717#define nd_alias u1.id
16718#define nd_orig u2.id
16719#define nd_undef u2.node
16720#define nd_brace u2.argc
16721#define nd_pconst u1.node
16722#define nd_pkwargs u2.node
16723#define nd_pkwrestarg u3.node
16724#define nd_apinfo u3.apinfo
16725#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
16726#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
16727#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
16728#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
16729#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
16730#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
16731#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
16732#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
16733#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
16734#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
16735#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
16736#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
16737#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
16738#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
16739#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
16740#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
16741#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
16742#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
16743#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
16744#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
16745#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
16746#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
16747#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
16748#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
16749#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
16750#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
16751#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
16752#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
16753#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
16754#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
16755#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
16756#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
16757#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
16758#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v),loc)
16759#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
16760#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
16761#define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
16762#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
16763#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
16764#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
16765#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
16766#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)
16767#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
16768#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
16769#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
16770#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
16771#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v),loc)
16772#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
16773#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
16774#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
16775#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
16776#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
16777#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
16778#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
16779#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
16780#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
16781#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
16782#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
16783#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
16784#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
16785#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
16786#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
16787#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
16788#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
16789#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
16790#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
16791#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
16792#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
16793#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
16794#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
16795#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
16796#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
16797#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
16798#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
16799#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
16800#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
16801#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
16802#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
16803#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
16804#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
16805#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
16806#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
16807#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
16808#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
16809#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
16810#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
16811#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
16812#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
16813#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
16814#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
16815#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
16816#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
16817#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
16818#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
16819#define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
16820#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
16821#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
16822#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
16823#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
16824#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
16825#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
16826#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
16827#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
16828#pragma GCC visibility push(default)
16829#pragma GCC visibility pop
16830#define RUBY_VM_OPTS_H
16831#define OPT_TAILCALL_OPTIMIZATION 0
16832#define OPT_PEEPHOLE_OPTIMIZATION 1
16833#define OPT_SPECIALISED_INSTRUCTION 1
16834#define OPT_INLINE_CONST_CACHE 1
16835#define OPT_FROZEN_STRING_LITERAL 0
16836#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
16837#define OPT_THREADED_CODE 0
16838#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
16839#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
16840#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
16841#define OPT_CHECKED_RUN 1
16842#define OPT_INLINE_METHOD_CACHE 1
16843#define OPT_GLOBAL_METHOD_CACHE 1
16844#define OPT_BLOCKINLINING 0
16845#define OPT_IC_FOR_IVAR 1
16846#define OPT_OPERANDS_UNIFICATION 1
16847#define OPT_INSTRUCTIONS_UNIFICATION 0
16848#define OPT_UNIFY_ALL_COMBINATION 0
16849#define OPT_STACK_CACHING 0
16850#define OPT_SUPPORT_JOKE 0
16851#define VM_COLLECT_USAGE_DETAILS 0
16852#define RUBY_ID_H
16853#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
16854#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
16855#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
16856#define ID_LOCAL RUBY_ID_LOCAL
16857#define ID_INSTANCE RUBY_ID_INSTANCE
16858#define ID_GLOBAL RUBY_ID_GLOBAL
16859#define ID_ATTRSET RUBY_ID_ATTRSET
16860#define ID_CONST RUBY_ID_CONST
16861#define ID_CLASS RUBY_ID_CLASS
16862#define ID_JUNK RUBY_ID_JUNK
16863#define ID_INTERNAL RUBY_ID_INTERNAL
16864#define symIFUNC ID2SYM(idIFUNC)
16865#define symCFUNC ID2SYM(idCFUNC)
16866#define RUBY_TOKEN_DOT2 128
16867#define RUBY_TOKEN_DOT3 129
16868#define RUBY_TOKEN_BDOT2 130
16869#define RUBY_TOKEN_BDOT3 131
16870#define RUBY_TOKEN_UPLUS 132
16871#define RUBY_TOKEN_UMINUS 133
16872#define RUBY_TOKEN_POW 134
16873#define RUBY_TOKEN_CMP 135
16874#define RUBY_TOKEN_LSHFT 136
16875#define RUBY_TOKEN_RSHFT 137
16876#define RUBY_TOKEN_LEQ 138
16877#define RUBY_TOKEN_GEQ 139
16878#define RUBY_TOKEN_EQ 140
16879#define RUBY_TOKEN_EQQ 141
16880#define RUBY_TOKEN_NEQ 142
16881#define RUBY_TOKEN_MATCH 143
16882#define RUBY_TOKEN_NMATCH 144
16883#define RUBY_TOKEN_AREF 145
16884#define RUBY_TOKEN_ASET 146
16885#define RUBY_TOKEN_COLON2 147
16886#define RUBY_TOKEN_ANDOP 148
16887#define RUBY_TOKEN_OROP 149
16888#define RUBY_TOKEN_ANDDOT 150
16889#define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
16890#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
16891#define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
16892#define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
16893#define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
16894#define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
16895#define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
16896#define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
16897#define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
16898#define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
16899#define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
16900#define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
16901#define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
16902#define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
16903#define RUBY_METHOD_H 1
16904#define END_OF_ENUMERATION(key)
16905#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
16906#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
16907#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
16908#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
16909#define VM_METHOD_TYPE_MINIMUM_BITS 4
16910#define rb_iseq_t rb_iseq_t
16911#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
16912#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
16913#pragma GCC visibility push(default)
16914#pragma GCC visibility pop
16915#define RUBY_ATOMIC_H
16916#define ATOMIC_SET(var,val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
16917#define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
16918#define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
16919#define ATOMIC_OR(var,val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
16920#define ATOMIC_EXCHANGE(var,val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
16921#define ATOMIC_CAS(var,oldval,newval) ({ __typeof__(var) oldvaldup = (oldval); __atomic_compare_exchange_n(&(var), &oldvaldup, (newval), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); oldvaldup; })
16922#define ATOMIC_SIZE_ADD(var,val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
16923#define ATOMIC_SIZE_SUB(var,val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
16924#define RUBY_ATOMIC_GENERIC_MACRO 1
16925#define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
16926#define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
16927#define ATOMIC_SIZE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
16928#define ATOMIC_SIZE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
16929#define ATOMIC_PTR_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
16930#define ATOMIC_PTR_CAS(var,oldval,newval) ATOMIC_CAS(var, oldval, newval)
16931#define ATOMIC_VALUE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
16932#define ATOMIC_VALUE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
16933#define CCAN_LIST_H
16934#undef assert
16935#define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, __ASSERT_FUNC, #__e))
16936#define __ASSERT_FUNC __func__
16937#define static_assert _Static_assert
16938#define CCAN_STR_H
16939#define stringify(expr) stringify_1(expr)
16940#define stringify_1(expr) #expr
16941#define CCAN_CONTAINER_OF_H
16942#define CCAN_CHECK_TYPE_H
16943#define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
16944#define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
16945#define container_of(member_ptr,containing_type,member) ((containing_type *) ((char *)(member_ptr) - container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
16946#define container_of_or_null(member_ptr,containing_type,member) ((containing_type *) container_of_or_null_(member_ptr, container_off(containing_type, member)) + check_types_match(*(member_ptr), ((containing_type *)0)->member))
16947#define container_off(containing_type,member) offsetof(containing_type, member)
16948#define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
16949#define container_off_var(var,member) container_off(typeof(*var), member)
16950#define LIST_LOC __FILE__ ":" stringify(__LINE__)
16951#define list_debug(h,loc) ((void)loc, h)
16952#define list_debug_node(n,loc) ((void)loc, n)
16953#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
16954#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
16955#define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
16956#define list_add(h,n) list_add_(h, n, LIST_LOC)
16957#define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
16958#define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
16959#define list_empty(h) list_empty_(h, LIST_LOC)
16960#define list_empty_nodebug(h) list_empty(h)
16961#define list_del(n) list_del_(n, LIST_LOC)
16962#define list_del_init(n) list_del_init_(n, LIST_LOC)
16963#define list_swap(o,n) list_swap_(o, n, LIST_LOC)
16964#define list_entry(n,type,member) container_of(n, type, member)
16965#define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
16966#define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
16967#define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
16968#define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
16969#define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
16970#define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
16971#define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
16972#define list_next(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.next, list_off_var_((i), member)))
16973#define list_prev(h,i,member) ((list_typeof(i))list_entry_or_null(list_debug(h, __FILE__ ":" stringify(__LINE__)), (i)->member.prev, list_off_var_((i), member)))
16974#define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
16975#define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
16976#define list_for_each_off_dir_(h,i,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)); list_node_from_off_((void *)i, (off)) != &(h)->n; i = list_node_to_off_(list_node_from_off_((void *)i, (off))->dir, (off)))
16977#define list_for_each_safe_off_dir_(h,i,nxt,off,dir) for (i = list_node_to_off_(list_debug(h, LIST_LOC)->n.dir, (off)), nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)); list_node_from_off_(i, (off)) != &(h)->n; i = nxt, nxt = list_node_to_off_(list_node_from_off_(i, (off))->dir, (off)))
16978#define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
16979#define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
16980#define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
16981#define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
16982#define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
16983#define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
16984#define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
16985#define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
16986#define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
16987#define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
16988#define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
16989#define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
16990#define list_typeof(var) typeof(var)
16991#define RUBY_THREAD_NATIVE_H 1
16992#define _SCHED_H_
16993#define _SYS_SCHED_H_
16994#define SCHED_OTHER 3
16995#define SCHED_FIFO 1
16996#define SCHED_RR 2
16997#define _PTHREAD_H
16998#define PTHREAD_CANCEL_ASYNCHRONOUS 1
16999#define PTHREAD_CANCEL_ENABLE 0
17000#define PTHREAD_CANCEL_DEFERRED 0
17001#define PTHREAD_CANCEL_DISABLE 1
17002#define PTHREAD_CANCELED ((void *)-1)
17003#define PTHREAD_COND_INITIALIZER (pthread_cond_t)21
17004#define PTHREAD_CREATE_DETACHED 1
17005#define PTHREAD_CREATE_JOINABLE 0
17006#define PTHREAD_EXPLICIT_SCHED 1
17007#define PTHREAD_INHERIT_SCHED 0
17008#define PTHREAD_MUTEX_RECURSIVE 0
17009#define PTHREAD_MUTEX_ERRORCHECK 1
17010#define PTHREAD_MUTEX_NORMAL 2
17011#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
17012#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP (pthread_mutex_t)18
17013#define PTHREAD_NORMAL_MUTEX_INITIALIZER_NP (pthread_mutex_t)19
17014#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP (pthread_mutex_t)20
17015#define PTHREAD_MUTEX_INITIALIZER PTHREAD_NORMAL_MUTEX_INITIALIZER_NP
17016#define PTHREAD_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, 0 }
17017#define PTHREAD_PROCESS_SHARED 1
17018#define PTHREAD_PROCESS_PRIVATE 0
17019#define PTHREAD_RWLOCK_INITIALIZER (pthread_rwlock_t)22
17020#define PTHREAD_SCOPE_PROCESS 0
17021#define PTHREAD_SCOPE_SYSTEM 1
17022#define PTHREAD_BARRIER_SERIAL_THREAD (-1)
17023#define pthread_cleanup_push(_fn,_arg) { __pthread_cleanup_handler __cleanup_handler = { _fn, _arg, NULL }; _pthread_cleanup_push( &__cleanup_handler );
17024#define pthread_cleanup_pop(_execute) _pthread_cleanup_pop( _execute ); }
17025#pragma GCC visibility push(default)
17026#pragma GCC visibility pop
17027#define RUBY_THREAD_PTHREAD_H
17028#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
17029#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
17030#undef except
17031#undef try
17032#undef leave
17033#undef finally
17034#define _SETJMP_H_
17035#define _JBTYPE long
17036#define _JBLEN 32
17037#define _SAVEMASK _JBLEN
17038#define _SIGMASK (_JBLEN+1)
17039#define _CYGWIN_WORKING_SIGSETJMP
17040#define __SIGMASK_FUNC pthread_sigmask
17041#define sigsetjmp(env,savemask) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((*_sjbuf)[_SAVEMASK] = savemask, __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)), setjmp (*_sjbuf)); })
17042#define siglongjmp(env,val) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((((*_sjbuf)[_SAVEMASK]) ? __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0) : 0), longjmp (*_sjbuf, val)); })
17043#define RUBY_NSIG NSIG
17044#define RUBY_SIGCHLD (SIGCLD)
17045#define SIGCHLD_LOSSY (0)
17046#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
17047#define va_init_list(a,b) va_start((a),(b))
17048#define USE_SIGALTSTACK
17049#define RB_ALTSTACK_INIT(var) var = rb_register_sigaltstack()
17050#define RB_ALTSTACK_FREE(var) xfree(var)
17051#define RB_ALTSTACK(var) var
17052#define TAG_NONE RUBY_TAG_NONE
17053#define TAG_RETURN RUBY_TAG_RETURN
17054#define TAG_BREAK RUBY_TAG_BREAK
17055#define TAG_NEXT RUBY_TAG_NEXT
17056#define TAG_RETRY RUBY_TAG_RETRY
17057#define TAG_REDO RUBY_TAG_REDO
17058#define TAG_RAISE RUBY_TAG_RAISE
17059#define TAG_THROW RUBY_TAG_THROW
17060#define TAG_FATAL RUBY_TAG_FATAL
17061#define TAG_MASK RUBY_TAG_MASK
17062#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
17063#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
17064#define PATHOBJ_PATH 0
17065#define PATHOBJ_REALPATH 1
17066#define USE_LAZY_LOAD 0
17067#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
17068#define RUBY_VM_SIZE_ALIGN 4096
17069#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
17070#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
17071#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
17072#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
17073#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
17074#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
17075#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
17076#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
17077#define INTEGER_REDEFINED_OP_FLAG (1 << 0)
17078#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
17079#define STRING_REDEFINED_OP_FLAG (1 << 2)
17080#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
17081#define HASH_REDEFINED_OP_FLAG (1 << 4)
17082#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
17083#define TIME_REDEFINED_OP_FLAG (1 << 7)
17084#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
17085#define NIL_REDEFINED_OP_FLAG (1 << 9)
17086#define TRUE_REDEFINED_OP_FLAG (1 << 10)
17087#define FALSE_REDEFINED_OP_FLAG (1 << 11)
17088#define PROC_REDEFINED_OP_FLAG (1 << 12)
17089#define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
17090#define VM_DEBUG_BP_CHECK 0
17091#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
17092#define VM_CORE_H_EC_DEFINED 1
17093#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
17094#define VM_DEFINECLASS_FLAG_SCOPED 0x08
17095#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
17096#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
17097#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
17098#pragma GCC visibility push(default)
17099#pragma GCC visibility pop
17100#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
17101#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
17102#define VM_CHECKMATCH_TYPE_MASK 0x03
17103#define VM_CHECKMATCH_ARRAY 0x04
17104#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
17105#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
17106#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
17107#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
17108#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
17109#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
17110#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
17111#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
17112#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
17113#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
17114#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
17115#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
17116#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
17117#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
17118#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
17119#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
17120#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
17121#define VM_ENV_DATA_SIZE ( 3)
17122#define VM_ENV_DATA_INDEX_ME_CREF (-2)
17123#define VM_ENV_DATA_INDEX_SPECVAL (-1)
17124#define VM_ENV_DATA_INDEX_FLAGS ( 0)
17125#define VM_ENV_DATA_INDEX_ENV ( 1)
17126#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
17127#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
17128#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
17129#define VM_BLOCK_HANDLER_NONE 0
17130#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
17131#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
17132#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
17133#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
17134#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
17135#pragma GCC visibility push(default)
17136#pragma GCC visibility pop
17137#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)))
17138#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
17139#define RUBY_CONST_ASSERT(expr) (1/!!(expr))
17140#define VM_STACK_OVERFLOWED_P(cfp,sp,margin) (!RUBY_CONST_ASSERT(sizeof(*(sp)) == sizeof(VALUE)) || !RUBY_CONST_ASSERT(sizeof(*(cfp)) == sizeof(rb_control_frame_t)) || ((rb_control_frame_t *)((sp) + (margin)) + 1) >= (cfp))
17141#define WHEN_VM_STACK_OVERFLOWED(cfp,sp,margin) if (LIKELY(!VM_STACK_OVERFLOWED_P(cfp, sp, margin))) {(void)0;} else
17142#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, sp, margin) vm_stackoverflow()
17143#define CHECK_VM_STACK_OVERFLOW(cfp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, (cfp)->sp, margin) vm_stackoverflow()
17144#pragma GCC visibility push(default)
17145#pragma GCC visibility pop
17146#define GET_VM() rb_current_vm()
17147#define GET_THREAD() rb_current_thread()
17148#define GET_EC() rb_current_execution_context()
17149#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
17150#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
17151#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
17152#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
17153#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
17154#define RUBY_VM_INTERRUPTED_ANY(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask)
17155#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
17156#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)
17157#define EXEC_EVENT_HOOK(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_vm_global_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 0)
17158#define EXEC_EVENT_HOOK_AND_POP_FRAME(ec_,flag_,self_,id_,called_id_,klass_,data_) EXEC_EVENT_HOOK_ORIG(ec_, rb_vm_global_hooks(ec_), flag_, self_, id_, called_id_, klass_, data_, 1)
17159#pragma GCC visibility push(default)
17160#define RUBY_EVENT_COVERAGE_LINE 0x010000
17161#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
17162#pragma GCC visibility pop
17163#define RUBY_DEBUG_H
17164#pragma GCC visibility push(default)
17165#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
17166#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
17167#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
17168#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
17169#pragma GCC visibility pop
17170#define RUBY_ISEQ_H 1
17171#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
17172#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
17173#define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
17174#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
17175#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
17176#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
17177#define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
17178#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
17179#define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
17180#define ISEQ_TRACE_EVENTS (RUBY_EVENT_LINE | RUBY_EVENT_CLASS | RUBY_EVENT_END | RUBY_EVENT_CALL | RUBY_EVENT_RETURN| RUBY_EVENT_B_CALL| RUBY_EVENT_B_RETURN| RUBY_EVENT_COVERAGE_LINE| RUBY_EVENT_COVERAGE_BRANCH)
17181#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
17182#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
17183#define ISEQ_TRANSLATED IMEMO_FL_USER3
17184#define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
17185#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW((iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
17186#pragma GCC visibility push(default)
17187#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
17188#pragma GCC visibility pop
17189#define RUBY_EVAL_INTERN_H
17190#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
17191#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
17192#define ruby_setjmp(env) RUBY_SETJMP(env)
17193#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
17194#define __ERRNO_H__
17195#define __error_t_defined 1
17196#define _SYS_ERRNO_H_
17197#define errno (*__errno())
17198#define __errno_r(ptr) ((ptr)->_errno)
17199#define EPERM 1
17200#define ENOENT 2
17201#define ESRCH 3
17202#define EINTR 4
17203#define EIO 5
17204#define ENXIO 6
17205#define E2BIG 7
17206#define ENOEXEC 8
17207#define EBADF 9
17208#define ECHILD 10
17209#define EAGAIN 11
17210#define ENOMEM 12
17211#define EACCES 13
17212#define EFAULT 14
17213#define ENOTBLK 15
17214#define EBUSY 16
17215#define EEXIST 17
17216#define EXDEV 18
17217#define ENODEV 19
17218#define ENOTDIR 20
17219#define EISDIR 21
17220#define EINVAL 22
17221#define ENFILE 23
17222#define EMFILE 24
17223#define ENOTTY 25
17224#define ETXTBSY 26
17225#define EFBIG 27
17226#define ENOSPC 28
17227#define ESPIPE 29
17228#define EROFS 30
17229#define EMLINK 31
17230#define EPIPE 32
17231#define EDOM 33
17232#define ERANGE 34
17233#define ENOMSG 35
17234#define EIDRM 36
17235#define ECHRNG 37
17236#define EL2NSYNC 38
17237#define EL3HLT 39
17238#define EL3RST 40
17239#define ELNRNG 41
17240#define EUNATCH 42
17241#define ENOCSI 43
17242#define EL2HLT 44
17243#define EDEADLK 45
17244#define ENOLCK 46
17245#define EBADE 50
17246#define EBADR 51
17247#define EXFULL 52
17248#define ENOANO 53
17249#define EBADRQC 54
17250#define EBADSLT 55
17251#define EDEADLOCK 56
17252#define EBFONT 57
17253#define ENOSTR 60
17254#define ENODATA 61
17255#define ETIME 62
17256#define ENOSR 63
17257#define ENONET 64
17258#define ENOPKG 65
17259#define EREMOTE 66
17260#define ENOLINK 67
17261#define EADV 68
17262#define ESRMNT 69
17263#define ECOMM 70
17264#define EPROTO 71
17265#define EMULTIHOP 74
17266#define ELBIN 75
17267#define EDOTDOT 76
17268#define EBADMSG 77
17269#define EFTYPE 79
17270#define ENOTUNIQ 80
17271#define EBADFD 81
17272#define EREMCHG 82
17273#define ELIBACC 83
17274#define ELIBBAD 84
17275#define ELIBSCN 85
17276#define ELIBMAX 86
17277#define ELIBEXEC 87
17278#define ENOSYS 88
17279#define ENMFILE 89
17280#define ENOTEMPTY 90
17281#define ENAMETOOLONG 91
17282#define ELOOP 92
17283#define EOPNOTSUPP 95
17284#define EPFNOSUPPORT 96
17285#define ECONNRESET 104
17286#define ENOBUFS 105
17287#define EAFNOSUPPORT 106
17288#define EPROTOTYPE 107
17289#define ENOTSOCK 108
17290#define ENOPROTOOPT 109
17291#define ESHUTDOWN 110
17292#define ECONNREFUSED 111
17293#define EADDRINUSE 112
17294#define ECONNABORTED 113
17295#define ENETUNREACH 114
17296#define ENETDOWN 115
17297#define ETIMEDOUT 116
17298#define EHOSTDOWN 117
17299#define EHOSTUNREACH 118
17300#define EINPROGRESS 119
17301#define EALREADY 120
17302#define EDESTADDRREQ 121
17303#define EMSGSIZE 122
17304#define EPROTONOSUPPORT 123
17305#define ESOCKTNOSUPPORT 124
17306#define EADDRNOTAVAIL 125
17307#define ENETRESET 126
17308#define EISCONN 127
17309#define ENOTCONN 128
17310#define ETOOMANYREFS 129
17311#define EPROCLIM 130
17312#define EUSERS 131
17313#define EDQUOT 132
17314#define ESTALE 133
17315#define ENOTSUP 134
17316#define ENOMEDIUM 135
17317#define ENOSHARE 136
17318#define ECASECLASH 137
17319#define EILSEQ 138
17320#define EOVERFLOW 139
17321#define ECANCELED 140
17322#define ENOTRECOVERABLE 141
17323#define EOWNERDEAD 142
17324#define ESTRPIPE 143
17325#define EWOULDBLOCK EAGAIN
17326#define __ELASTERROR 2000
17327#define _SYS_PARAM_H
17328#define __need_NULL
17329#undef __need_ptrdiff_t
17330#undef __need_size_t
17331#undef __need_wchar_t
17332#undef NULL
17333#define NULL ((void *)0)
17334#undef __need_NULL
17335#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
17336#define NOFILE 8192
17337#define NGROUPS NGROUPS_MAX
17338#define HZ 1000
17339#define MAXHOSTNAMELEN 128
17340#define MAXPATHLEN PATH_MAX
17341#define MAXSYMLINKS SYMLOOP_MAX
17342#define DEV_BSIZE 1024
17343#define NBBY 8
17344#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
17345#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
17346#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
17347#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
17348#define howmany(x,y) (((x)+((y)-1))/(y))
17349#define rounddown(x,y) (((x)/(y))*(y))
17350#define roundup(x,y) ((((x)+((y)-1))/(y))*(y))
17351#define roundup2(x,y) (((x)+((y)-1))&(~((y)-1)))
17352#define powerof2(x) ((((x)-1)&(x))==0)
17353#define MIN(a,b) (((a)<(b))?(a):(b))
17354#define MAX(a,b) (((a)>(b))?(a):(b))
17355#define SAVE_ROOT_JMPBUF_BEFORE_STMT
17356#define SAVE_ROOT_JMPBUF_AFTER_STMT
17357#define SAVE_ROOT_JMPBUF(th,stmt) do if (ruby_setjmp((th)->root_jmpbuf) == 0) { SAVE_ROOT_JMPBUF_BEFORE_STMT stmt; SAVE_ROOT_JMPBUF_AFTER_STMT } else { rb_fiber_start(); } while (0)
17358#define EC_PUSH_TAG(ec) do { rb_execution_context_t * const _ec = (ec); struct rb_vm_tag _tag; _tag.state = TAG_NONE; _tag.tag = Qundef; _tag.prev = _ec->tag;
17359#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
17360#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
17361#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
17362#define VAR_FROM_MEMORY(var) (var)
17363#define VAR_INITIALIZED(var) ((void)&(var))
17364#define VAR_NOCLOBBERED(var) var
17365#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
17366#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
17367#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
17368#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
17369#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
17370#pragma GCC diagnostic push
17371#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17372#pragma GCC diagnostic pop
17373#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
17374#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
17375#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
17376#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
17377#define CharNext(p) rb_char_next(p)
17378#define BUILTIN_H_INCLUDED
17379#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i }
17380#define _PROBES_H
17381#define DTRACE_PROBES_DISABLED 1
17382#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
17383#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
17384#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
17385#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
17386#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
17387#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
17388#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
17389#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
17390#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
17391#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
17392#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
17393#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
17394#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
17395#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
17396#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
17397#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
17398#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
17399#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
17400#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
17401#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
17402#define RUBY_DTRACE_RAISE_ENABLED() 0
17403#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
17404#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
17405#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
17406#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
17407#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
17408#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
17409#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
17410#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
17411#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
17412#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
17413#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
17414#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
17415#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
17416#define RUBY_DTRACE_PARSE_END_ENABLED() 0
17417#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
17418#define RUBY_DTRACE_INSN_ENABLED() 0
17419#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
17420#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
17421#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
17422#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
17423#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
17424#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
17425#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
17426#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
17427#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
17428#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
17429#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
17430#define RUBY_DTRACE_METHOD_CACHE_CLEAR_ENABLED() 0
17431#define RUBY_DTRACE_METHOD_CACHE_CLEAR(class,filename,lineno) do {} while (0)
17432#define RUBY_PROBES_HELPER_H
17433#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)
17434#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
17435#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
17436#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
17437#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
17438#pragma GCC diagnostic push
17439#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17440#pragma GCC diagnostic pop
17441#define RUBY_MJIT_H 1
17442#define USE_DEBUG_COUNTER 0
17443#define RUBY_DEBUG_COUNTER_H 1
17444#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
17445#undef RB_DEBUG_COUNTER
17446#define RB_DEBUG_COUNTER_INC(type) ((void)0)
17447#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (cond)
17448#define RB_DEBUG_COUNTER_INC_IF(type,cond) (cond)
17449#pragma GCC visibility push(default)
17450#pragma GCC visibility pop
17451#pragma GCC visibility push(default)
17452#pragma GCC visibility pop
17453#define JIT_ISEQ_SIZE_THRESHOLD 1000
17454#define RUBY_INSNHELPER_H
17455#pragma GCC visibility push(default)
17456#pragma GCC visibility pop
17457#define COLLECT_USAGE_INSN(insn)
17458#define COLLECT_USAGE_OPERAND(insn,n,op)
17459#define COLLECT_USAGE_REGISTER(reg,s)
17460#define PUSH(x) (SET_SV(x), INC_SP(1))
17461#define TOPN(n) (*(GET_SP()-(n)-1))
17462#define POPN(n) (DEC_SP(n))
17463#define POP() (DEC_SP(1))
17464#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
17465#define VM_REG_CFP (reg_cfp)
17466#define VM_REG_PC (VM_REG_CFP->pc)
17467#define VM_REG_SP (VM_REG_CFP->sp)
17468#define VM_REG_EP (VM_REG_CFP->ep)
17469#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
17470#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
17471#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
17472#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
17473#define GET_CURRENT_INSN() (*GET_PC())
17474#define GET_OPERAND(n) (GET_PC()[(n)])
17475#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
17476#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
17477#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
17478#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
17479#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
17480#define GET_LEP() (VM_EP_LEP(GET_EP()))
17481#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
17482#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
17483#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
17484#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
17485#define SET_SV(x) (*GET_SP() = (x))
17486#define GET_ISEQ() (GET_CFP()->iseq)
17487#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
17488#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
17489#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
17490#define SETUP_CANARY()
17491#define CHECK_CANARY()
17492#define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
17493#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
17494#define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
17495#define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
17496#define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
17497#define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
17498#define IS_ARGS_SPLAT(ci) ((ci)->flag & VM_CALL_ARGS_SPLAT)
17499#define IS_ARGS_KEYWORD(ci) ((ci)->flag & VM_CALL_KWARG)
17500#define IS_ARGS_KW_SPLAT(ci) ((ci)->flag & VM_CALL_KW_SPLAT)
17501#define IS_ARGS_KW_OR_KW_SPLAT(ci) ((ci)->flag & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
17502#define RUBY_VM_EXEC_H
17503#define debugs
17504#define DEBUG_ENTER_INSN(insn)
17505#define DEBUG_END_INSN()
17506#define throwdebug if(0)printf
17507#define LABEL(x) INSN_LABEL_ ##x
17508#define ELABEL(x) INSN_ELABEL_ ##x
17509#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
17510#define INSN_ENTRY_SIG(insn) if (0) fprintf(stderr, "exec: %s@(%"PRIdPTRDIFF", %"PRIdPTRDIFF")@%s:%u\n", #insn, (reg_pc - reg_cfp->iseq->body->iseq_encoded), (reg_cfp->pc - reg_cfp->iseq->body->iseq_encoded), RSTRING_PTR(rb_iseq_path(reg_cfp->iseq)), rb_iseq_line_no(reg_cfp->iseq, reg_pc - reg_cfp->iseq->body->iseq_encoded));
17511#define INSN_DISPATCH_SIG(insn)
17512#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
17513#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
17514#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
17515#define INSN_DISPATCH() TC_DISPATCH(__START__) {
17516#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
17517#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
17518#define START_OF_ORIGINAL_INSN(x) start_of_ ##x:
17519#define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
17520#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
17521#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
17522#define SCREG(r) (reg_ ##r)
17523#define VM_DEBUG_STACKOVERFLOW 0
17524#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
17525#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
17526#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
17527#define BIN(n) YARVINSN_ ##n
17528#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
17529#define CONSTANT_H
17530#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
17531#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
17532#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
17533#define vm_check_canary(ec,sp)
17534#define vm_check_frame(a,b,c,d)
17535#pragma GCC diagnostic push
17536#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17537#pragma GCC diagnostic pop
17538#pragma GCC diagnostic push
17539#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17540#pragma GCC diagnostic pop
17541#pragma GCC diagnostic push
17542#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17543#pragma GCC diagnostic pop
17544#pragma GCC diagnostic push
17545#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17546#pragma GCC diagnostic pop
17547#pragma GCC diagnostic push
17548#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17549#pragma GCC diagnostic pop
17550#pragma GCC diagnostic push
17551#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17552#pragma GCC diagnostic pop
17553#pragma GCC diagnostic push
17554#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17555#pragma GCC diagnostic pop
17556#define BUILTIN_CLASS_P(x,k) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == k)
17557#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
17558#undef BUILTIN_CLASS_P
17559#undef EQ_UNREDEFINED_P
17560#define CHECK_CMP_NAN(a,b)
17561#pragma GCC diagnostic push
17562#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17563#pragma GCC diagnostic pop
17564#define KW_HASH_HAS_NO_KEYS 0
17565#define KW_HASH_HAS_SYMBOL_KEY 1
17566#define KW_HASH_HAS_OTHER_KEY 2
17567#define KW_HASH_HAS_BOTH_KEYS 3
17568#pragma GCC diagnostic push
17569#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17570#pragma GCC diagnostic pop
17571#define KW_SPECIFIED_BITS_MAX (32-1)
17572#pragma GCC diagnostic push
17573#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17574#pragma GCC diagnostic pop
17575#define USE_OPT_HIST 0
17576#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)))
17577#pragma GCC diagnostic push
17578#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17579#pragma GCC diagnostic pop
17580#pragma GCC diagnostic push
17581#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17582#pragma GCC diagnostic pop
17583#define id_cmp idCmp
17584#undef id_cmp
17585#pragma GCC diagnostic push
17586#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
17587#pragma GCC diagnostic pop
17588#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, (val)); } } while (0)
17589#define id_mesg idMesg
#define bad(x)
Definition: _sdbm.c:123
VALUE rb_int2big(intptr_t n)
Definition: bignum.c:3180
VALUE rb_uint2big(uintptr_t n)
Definition: bignum.c:3158
int rb_big_sign(VALUE x)
Definition: bignum.c:6772
void rb_cmperr(VALUE x, VALUE y)
Definition: compar.c:25
VALUE rb_complex_polar(VALUE x, VALUE y)
Definition: complex.c:1539
void rb_fiber_start(void)
Definition: cont.c:1804
#define sym(x)
Definition: date_core.c:3717
#define mod(x, y)
Definition: date_strftime.c:28
#define range(low, item, hi)
Definition: date_strftime.c:21
enum @73::@75::@76 mask
struct RIMemo * ptr
Definition: debug.c:65
union @73::@75 imemo
#define d1
struct rb_encoding_entry * list
Definition: encoding.c:56
int rb_data_is_encoding(VALUE obj)
Definition: encoding.c:89
int count
Definition: encoding.c:57
char str[HTML_ESCAPE_MAX_LEN+1]
Definition: escape.c:18
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
Definition: eval.c:288
VALUE rb_f_raise(int argc, VALUE *argv)
Definition: eval.c:727
void rb_print_undef(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:383
void rb_print_inaccessible(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:411
void rb_print_undef_str(VALUE klass, VALUE name)
Definition: eval_error.c:398
#define __builtin_expect(x, expected_value)
Definition: ffi_common.h:123
void rb_memerror(void)
Definition: gc.c:9611
VALUE rb_newobj(void)
Definition: gc.c:2303
int rb_during_gc(void)
Definition: gc.c:8703
#define rb_data_object_alloc
Definition: gc.c:14
void * rb_aligned_malloc(size_t alignment, size_t size)
Definition: gc.c:9643
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type)
Definition: gc.c:2412
void ruby_malloc_size_overflow(size_t count, size_t elsize)
Definition: gc.c:10107
VALUE rb_newobj_of(VALUE klass, VALUE flags)
Definition: gc.c:2309
#define rb_data_typed_object_alloc
Definition: gc.c:15
VALUE rb_class_protected_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1305
void rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE, VALUE), VALUE)
Definition: class.c:116
void rb_include_module(VALUE, VALUE)
Definition: class.c:882
void rb_extend_object(VALUE, VALUE)
Extend the object with the module.
Definition: eval.c:1701
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
Definition: class.c:662
VALUE rb_class_new(VALUE)
Creates a new class.
Definition: class.c:244
VALUE rb_singleton_class_clone(VALUE)
Definition: class.c:373
VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1413
void rb_class_subclass_add(VALUE super, VALUE klass)
Definition: class.c:39
VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1379
void rb_prepend_module(VALUE, VALUE)
Definition: class.c:1017
VALUE rb_singleton_class(VALUE)
Returns the singleton class of obj.
Definition: class.c:1743
void rb_class_detach_subclasses(VALUE)
Definition: class.c:136
void Init_class_hierarchy(void)
Definition: class.c:562
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
Definition: class.c:711
VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
Definition: class.c:380
VALUE rb_include_class_new(VALUE, VALUE)
Definition: class.c:838
VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1398
VALUE rb_obj_singleton_methods(int, const VALUE *, VALUE)
Definition: class.c:1467
VALUE rb_module_new(void)
Definition: class.c:771
int rb_singleton_class_internal_p(VALUE sklass)
Definition: class.c:468
VALUE rb_class_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1290
VALUE rb_class_inherited(VALUE, VALUE)
Calls Class::inherited.
Definition: class.c:636
void rb_check_inheritable(VALUE)
Ensures a class can be derived from super.
Definition: class.c:222
VALUE rb_class_public_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1343
VALUE rb_class_boot(VALUE)
A utility function that wraps class_alloc.
Definition: class.c:204
VALUE rb_define_module(const char *)
Definition: class.c:785
void rb_class_modify_check(VALUE)
Asserts that klass is not a frozen class.
Definition: eval.c:438
void rb_class_detach_module_subclasses(VALUE)
Definition: class.c:148
VALUE rb_special_singleton_class(VALUE)
Definition: class.c:1639
VALUE rb_define_module_id_under(VALUE, ID)
Definition: class.c:816
void rb_singleton_class_attached(VALUE, VALUE)
Attach a object to a singleton class.
Definition: class.c:444
void rb_freeze_singleton_class(VALUE x)
Definition: class.c:1692
VALUE rb_mod_included_modules(VALUE)
Definition: class.c:1049
VALUE rb_define_class_id_under(VALUE, ID, VALUE)
Defines a class under the namespace of outer.
Definition: class.c:734
VALUE rb_mod_ancestors(VALUE)
Definition: class.c:1117
VALUE rb_mod_include_p(VALUE, VALUE)
Definition: class.c:1085
VALUE rb_class_private_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1328
void rb_class_remove_from_module_subclasses(VALUE)
Definition: class.c:97
VALUE rb_mod_init_copy(VALUE, VALUE)
Definition: class.c:316
VALUE rb_define_module_under(VALUE, const char *)
Definition: class.c:810
VALUE rb_singleton_class_get(VALUE obj)
Returns the singleton class of obj, or nil if obj is not a singleton object.
Definition: class.c:1712
VALUE rb_make_metaclass(VALUE, VALUE)
Definition: class.c:593
VALUE rb_define_module_id(ID)
Definition: class.c:779
VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1428
VALUE rb_define_class_id(ID, VALUE)
Defines a new class.
Definition: class.c:615
void rb_class_remove_from_super_subclasses(VALUE)
Definition: class.c:79
ID rb_frame_callee(void)
The name of the current method.
Definition: eval.c:1200
ID rb_frame_this_func(void)
The original name of the current method.
Definition: eval.c:1183
VALUE rb_extract_keywords(VALUE *orighash)
Definition: class.c:1886
int rb_class_has_methods(VALUE c)
Definition: class.c:2219
void rb_need_block(void)
Declares that the current method needs a block.
Definition: eval.c:932
VALUE rb_keyword_error_new(const char *error, VALUE keys)
Definition: class.c:1837
void rb_define_attr(VALUE, const char *, int, int)
Defines (a) public accessor method(s) for an attribute.
Definition: class.c:1831
void rb_undef_method(VALUE, const char *)
Definition: class.c:1593
int rb_scan_args_kw(int, int, const VALUE *, const char *,...)
Definition: class.c:2198
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
Definition: class.c:1818
void rb_undef_methods_from(VALUE klass, VALUE super)
Definition: class.c:1607
int rb_block_given_p(void)
Determines if the current method is given a block.
Definition: eval.c:898
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *)
Definition: class.c:1904
VALUE rb_cArray
Definition: array.c:27
VALUE rb_cTrueClass
TrueClass class.
Definition: ruby.h:2051
VALUE rb_cThread
Definition: ruby.h:2049
VALUE rb_cNilClass
NilClass class.
Definition: ruby.h:2038
VALUE rb_cRange
Definition: ruby.h:2042
struct RBasic basic
Definition: ruby.h:1135
size_t(* dsize)(const void *)
Definition: ruby.h:1153
void * data
Definition: ruby.h:1172
VALUE rb_cRational
Definition: ruby.h:2043
VALUE rb_cEnumerator
Definition: enumerator.c:109
void(* dfree)(void *)
Definition: ruby.h:1152
VALUE rb_cUnboundMethod
Definition: ruby.h:2052
VALUE rb_mKernel
Kernel module.
Definition: ruby.h:2000
struct RBasic basic
Definition: ruby.h:923
struct RBasic basic
Definition: ruby.h:1049
VALUE rb_eStopIteration
Definition: enumerator.c:124
@ ROBJECT_ENUM_END
Definition: ruby.h:919
VALUE * ivptr
Definition: ruby.h:927
VALUE rb_cClass
Class class.
Definition: ruby.h:2018
VALUE rb_cData
Data class.
Definition: ruby.h:2020
void(* dmark)(void *)
Definition: ruby.h:1151
const rb_data_type_t * parent
Definition: ruby.h:1158
VALUE rb_eZeroDivError
Definition: ruby.h:2073
VALUE rb_eLocalJumpError
Definition: eval.c:34
VALUE rb_cFile
Definition: file.c:159
VALUE rb_cStruct
Definition: ruby.h:2047
const VALUE shared_root
Definition: ruby.h:1060
VALUE rb_cBasicObject
BasicObject class.
Definition: ruby.h:2011
VALUE rb_cObject
Object class.
Definition: ruby.h:2012
struct RBasic basic
Definition: ruby.h:989
VALUE rb_cHash
Definition: hash.c:92
long capa
Definition: ruby.h:995
VALUE rb_cInteger
Definition: ruby.h:2033
VALUE rb_eEOFError
Definition: ruby.h:2061
VALUE rb_cTime
Definition: ruby.h:2050
void * data
Definition: ruby.h:1143
struct rb_io_t * fptr
Definition: ruby.h:1136
VALUE rb_cNumeric
Definition: ruby.h:2039
const VALUE ary[RARRAY_EMBED_LEN_MAX]
Definition: ruby.h:1064
VALUE rb_eRegexpError
Definition: ruby.h:2080
struct RBasic basic
Definition: ruby.h:1140
VALUE rb_eIOError
Definition: ruby.h:2066
struct RBasic basic
Definition: ruby.h:1113
void * reserved[1]
Definition: ruby.h:1155
union RObject::@155 as
VALUE rb_cString
Definition: ruby.h:2046
VALUE typed_flag
Definition: ruby.h:1171
VALUE rb_cFalseClass
FalseClass class.
Definition: ruby.h:2024
const VALUE src
Definition: ruby.h:1115
VALUE rb_mGC
Definition: gc.c:1000
long len
Definition: ruby.h:992
union RString::@157::@158::@159 aux
VALUE rb_cRandom
Definition: ruby.h:2041
@ RARRAY_ENUM_END
Definition: ruby.h:1041
char ary[RSTRING_EMBED_LEN_MAX+1]
Definition: ruby.h:999
VALUE rb_cRegexp
Definition: ruby.h:2044
long capa
Definition: ruby.h:1054
const rb_data_type_t * type
Definition: ruby.h:1170
struct RBasic basic
Definition: ruby.h:1169
VALUE rb_cSymbol
Definition: ruby.h:2048
VALUE rb_eFloatDomainError
Definition: ruby.h:2077
const char * wrap_struct_name
Definition: ruby.h:1149
struct RObject::@155::@156 heap
long len
Definition: ruby.h:1052
VALUE rb_eThreadError
Definition: eval.c:924
union RArray::@160 as
struct RArray::@160::@161 heap
#define RUBY_FL_USER19
Definition: ruby.h:878
VALUE shared
Definition: ruby.h:996
VALUE rb_mProcess
Definition: ruby.h:2007
char * ptr
Definition: ruby.h:993
VALUE rb_cProc
Definition: ruby.h:2040
VALUE rb_cMatch
Definition: ruby.h:2034
VALUE rb_mWaitWritable
Definition: ruby.h:2009
VALUE rb_cComplex
Definition: complex.c:33
VALUE rb_mWaitReadable
Definition: ruby.h:2008
VALUE rb_mEnumerable
Definition: enum.c:20
unsigned long usecnt
Definition: ruby.h:1116
VALUE rb_eSysStackError
Definition: eval.c:35
uint32_t numiv
Definition: ruby.h:926
VALUE rb_cStat
Definition: file.c:161
void(* dfree)(void *)
Definition: ruby.h:1142
VALUE rb_cBinding
Definition: ruby.h:2017
@ RSTRING_ENUM_END
Definition: ruby.h:985
VALUE rb_cModule
Module class.
Definition: ruby.h:2036
void * iv_index_tbl
Definition: ruby.h:928
union RString::@157 as
VALUE rb_mComparable
Definition: compar.c:16
VALUE rb_cFloat
Definition: ruby.h:2030
VALUE rb_mMath
Definition: ruby.h:2006
VALUE rb_mFileTest
Definition: file.c:160
union RArray::@160::@161::@162 aux
VALUE rb_cMethod
Definition: ruby.h:2035
const VALUE * ptr
Definition: ruby.h:1062
void(* dcompact)(void *)
Definition: ruby.h:1154
VALUE rb_cEncoding
Definition: encoding.c:46
VALUE rb_cCont
Definition: ruby.h:2019
struct RString::@157::@158 heap
@ RUBY_FL_PROMOTED1
Definition: ruby.h:844
@ RUBY_FL_SINGLETON
Definition: ruby.h:883
@ RUBY_FL_TAINT
Definition: ruby.h:847
@ RUBY_FL_USHIFT
Definition: ruby.h:853
@ RUBY_FL_WB_PROTECTED
Definition: ruby.h:842
@ RUBY_FL_PROMOTED0
Definition: ruby.h:843
@ RUBY_FL_EXIVAR
Definition: ruby.h:850
@ RUBY_FL_UNTRUSTED
Definition: ruby.h:848
@ RUBY_FL_PROMOTED
Definition: ruby.h:845
@ RUBY_FL_FREEZE
Definition: ruby.h:851
@ RUBY_FL_DUPPED
Definition: ruby.h:882
@ RUBY_FL_SEEN_OBJ_ID
Definition: ruby.h:849
@ RUBY_FL_FINALIZE
Definition: ruby.h:846
VALUE rb_cIO
Definition: ruby.h:2032
VALUE ary[ROBJECT_EMBED_LEN_MAX]
Definition: ruby.h:930
@ RMODULE_ENUM_END
Definition: ruby.h:959
struct re_pattern_buffer * ptr
Definition: ruby.h:1114
VALUE rb_stdin
Definition: ruby.h:2092
VALUE rb_eMathDomainError
Definition: ruby.h:2090
void(* dmark)(void *)
Definition: ruby.h:1141
VALUE rb_cDir
Definition: dir.c:439
void rb_notimplement(void)
Definition: error.c:2714
int rb_bug_reporter_add(void(*func)(FILE *, void *), void *data)
Definition: error.c:457
void rb_syserr_fail(int e, const char *mesg)
Definition: error.c:2783
VALUE rb_get_backtrace(VALUE info)
Definition: error.c:1231
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:2671
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
Definition: error.c:166
int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent)
Definition: error.c:864
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
Definition: error.c:2843
VALUE rb_rescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE,...)
An equivalent of rescue clause.
Definition: eval.c:962
VALUE rb_eNotImpError
Definition: error.c:934
void rb_mod_sys_fail(VALUE mod, const char *mesg)
Definition: error.c:2835
VALUE rb_eScriptError
Definition: error.c:939
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
Definition: eval.c:668
int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:874
VALUE rb_eKeyError
Definition: error.c:927
void rb_bug(const char *fmt,...)
Definition: error.c:636
VALUE rb_cNameErrorMesg
Definition: error.c:936
VALUE rb_eSystemExit
Definition: error.c:917
void rb_name_error(ID id, const char *fmt,...)
Definition: error.c:1515
VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv)
Definition: error.c:1675
VALUE rb_syserr_new(int, const char *)
Definition: error.c:2769
void rb_check_copyable(VALUE obj, VALUE orig)
Definition: error.c:3049
VALUE rb_eStandardError
Definition: error.c:921
VALUE rb_mErrno
Definition: error.c:944
VALUE rb_syserr_new_str(int n, VALUE arg)
Definition: error.c:2777
void rb_error_frozen(const char *what)
Definition: error.c:2976
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
Definition: eval.c:1896
void rb_syserr_fail_str(int e, VALUE mesg)
Definition: error.c:2789
const char * rb_builtin_type_name(int t)
Definition: error.c:763
void rb_interrupt(void)
Raises an Interrupt exception.
Definition: eval.c:697
VALUE rb_eFrozenError
Definition: error.c:923
void rb_sys_fail_str(VALUE mesg)
Definition: error.c:2801
VALUE rb_eNoMemError
Definition: error.c:935
VALUE rb_eRangeError
Definition: error.c:928
void rb_error_untrusted(VALUE)
Definition: error.c:3036
VALUE rb_eLoadError
Definition: error.c:941
VALUE rb_eTypeError
Definition: error.c:924
VALUE rb_eNoMatchingPatternError
Definition: error.c:937
void rb_name_error_str(VALUE str, const char *fmt,...)
Definition: error.c:1530
void rb_fatal(const char *fmt,...)
Definition: error.c:2722
void rb_frozen_error_raise(VALUE frozen_obj, const char *fmt,...)
Definition: error.c:2982
VALUE rb_eEncCompatError
Definition: error.c:931
void rb_vraise(VALUE exc, const char *fmt, va_list ap)
Definition: error.c:2665
VALUE rb_protect(VALUE(*)(VALUE), VALUE, int *)
Protects a function call from potential global escapes from the function.
Definition: eval.c:1072
void rb_load_fail(VALUE path, const char *err)
Definition: error.c:2967
void rb_unexpected_type(VALUE x, int t)
Definition: error.c:854
VALUE rb_eFatal
Definition: error.c:920
void rb_invalid_str(const char *str, const char *type)
Definition: error.c:1867
VALUE rb_eInterrupt
Definition: error.c:918
VALUE rb_eNameError
Definition: error.c:929
const char * rb_builtin_class_name(VALUE x)
Definition: error.c:799
VALUE rb_make_exception(int, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
Definition: eval.c:851
MJIT_FUNC_EXPORTED void rb_assert_failure(const char *file, int line, const char *name, const char *expr)
Definition: error.c:718
VALUE rb_eNoMethodError
Definition: error.c:932
void rb_exc_fatal(VALUE mesg)
Raises a fatal error in the current thread.
Definition: eval.c:684
void rb_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:669
VALUE rb_eRuntimeError
Definition: error.c:922
VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method)
Definition: error.c:1594
void * rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:891
void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *ctx, const char *fmt,...)
Definition: error.c:651
void rb_warn(const char *fmt,...)
Definition: error.c:315
rb_warning_category_t rb_warning_category_from_name(VALUE category)
Definition: error.c:142
VALUE rb_exc_new(VALUE, const char *, long)
Definition: error.c:961
void rb_error_frozen_object(VALUE frozen_obj)
Definition: error.c:3008
VALUE rb_exc_new_str(VALUE, VALUE)
Definition: error.c:974
VALUE rb_eArgError
Definition: error.c:925
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
Definition: error.c:2851
void rb_loaderror(const char *fmt,...)
Definition: error.c:2690
VALUE rb_eException
Definition: error.c:916
VALUE rb_eIndexError
Definition: error.c:926
VALUE rb_rescue(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE)
An equivalent of rescue clause.
Definition: eval.c:1047
VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt)
Definition: error.c:1312
void rb_loaderror_with_path(VALUE path, const char *fmt,...)
Definition: error.c:2702
VALUE rb_eEAGAIN
Definition: error.c:54
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
Definition: eval.c:1115
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args)
Definition: error.c:712
VALUE rb_eEINPROGRESS
Definition: error.c:56
VALUE rb_errinfo(void)
The current exception in the current thread.
Definition: eval.c:1882
void rb_async_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:690
void rb_check_trusted(VALUE)
Definition: error.c:3043
VALUE rb_eSyntaxError
Definition: error.c:940
VALUE rb_eEncodingError
Definition: error.c:930
void rb_jump_tag(int tag)
Continues the exception caught by rb_protect() and rb_eval_string_protect().
Definition: eval.c:884
VALUE rb_eSecurityError
Definition: error.c:933
void rb_sys_fail(const char *mesg)
Definition: error.c:2795
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
Definition: error.c:2859
VALUE rb_eEWOULDBLOCK
Definition: error.c:55
void rb_check_type(VALUE, int)
Definition: error.c:839
VALUE rb_eSystemCallError
Definition: error.c:943
VALUE rb_eSignal
Definition: error.c:919
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name)
Definition: error.c:1909
VALUE rb_class_superclass(VALUE)
Returns the superclass of klass.
Definition: object.c:1976
VALUE rb_obj_taint(VALUE)
call-seq: obj.taint -> obj
Definition: object.c:999
VALUE rb_false(VALUE obj)
Definition: object.c:1391
VALUE rb_obj_trust(VALUE)
call-seq: obj.trust -> obj
Definition: object.c:1057
VALUE rb_class_get_superclass(VALUE)
Returns the superclass of klass The return value might be an iclass of a module, unlike rb_class_supe...
Definition: object.c:2001
VALUE rb_convert_type(VALUE, int, const char *, const char *)
Converts an object into another type.
Definition: object.c:2900
VALUE rb_Float(VALUE)
Equivalent to Kernel#Float in Ruby.
Definition: object.c:3493
VALUE rb_check_to_int(VALUE)
Tries to convert val into Integer.
Definition: object.c:3036
VALUE rb_obj_reveal(VALUE obj, VALUE klass)
Make a hidden object visible again.
Definition: object.c:95
VALUE rb_check_convert_type(VALUE, int, const char *, const char *)
Tries to convert an object into another type.
Definition: object.c:2941
VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound)
Definition: object.c:3791
void rb_obj_call_init(VALUE, int, const VALUE *)
Calls #initialize method of obj with the given arguments.
Definition: eval.c:1681
VALUE rb_any_to_s(VALUE)
Default implementation of #to_s.
Definition: object.c:527
VALUE rb_obj_alloc(VALUE)
Allocates an instance of klass.
Definition: object.c:1895
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
Definition: object.c:1955
VALUE rb_class_new_instance_kw(int, const VALUE *, VALUE, int)
Definition: object.c:1931
void rb_obj_copy_ivar(VALUE dest, VALUE obj)
Definition: object.c:247
int rb_opts_exception_p(VALUE opts, int default_value)
Definition: object.c:3125
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
Definition: object.c:78
double rb_num_to_dbl(VALUE val)
Definition: object.c:3576
int rb_bool_expected(VALUE, const char *)
Definition: object.c:3112
VALUE rb_check_to_float(VALUE)
Tries to convert an object into Float.
Definition: object.c:3559
VALUE rb_Hash(VALUE)
Equivalent to Kernel#Hash in Ruby.
Definition: object.c:3727
void rb_obj_infect(VALUE victim, VALUE carrier)
Does nothing.
Definition: object.c:1068
VALUE rb_obj_frozen_p(VALUE obj)
Determines if the object is frozen.
Definition: object.c:1099
VALUE rb_obj_init_copy(VALUE, VALUE)
Default implementation of #initialize_copy.
Definition: object.c:500
int rb_eql(VALUE, VALUE)
Determines if obj1 and obj2 are equal in terms of Object::eql?.
Definition: object.c:147
double rb_str_to_dbl(VALUE, int)
Parses a string representation of a floating point number.
Definition: object.c:3371
VALUE rb_Integer(VALUE)
Equivalent to Kernel#Integer in Ruby.
Definition: object.c:3106
VALUE rb_Array(VALUE)
Equivalent to Kernel#Array in Ruby.
Definition: object.c:3684
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
Definition: object.c:217
VALUE rb_obj_dup(VALUE)
Equivalent to Object#dup in Ruby.
Definition: object.c:420
VALUE rb_inspect(VALUE)
Convenient wrapper of Object::inspect.
Definition: object.c:551
VALUE rb_obj_untrust(VALUE)
call-seq: obj.untrust -> obj
Definition: object.c:1042
VALUE rb_class_inherited_p(VALUE mod, VALUE arg)
Determines if mod inherits arg.
Definition: object.c:1574
VALUE rb_obj_is_instance_of(VALUE, VALUE)
Determines if obj is an instance of c.
Definition: object.c:675
VALUE rb_convert_type_with_id(VALUE, int, const char *, ID)
Definition: object.c:2914
VALUE rb_class_real(VALUE cl)
Looks up the nearest ancestor of cl, skipping singleton classes or module inclusions.
Definition: object.c:202
VALUE rb_to_float(VALUE)
Converts a Numeric object into Float.
Definition: object.c:3542
double rb_num2dbl(VALUE)
Converts a Numeric object to double.
Definition: object.c:3616
VALUE rb_equal(VALUE, VALUE)
Same as Object#===, case equality.
Definition: object.c:124
VALUE rb_obj_clone(VALUE)
Almost same as Object::clone.
Definition: object.c:410
VALUE rb_obj_is_kind_of(VALUE, VALUE)
Determines if obj is a kind of c.
Definition: object.c:692
double rb_cstr_to_dbl(const char *, int)
Parses a string representation of a floating point number.
Definition: object.c:3319
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
Definition: object.c:1080
VALUE rb_check_to_integer(VALUE, const char *)
Tries to convert val into Integer.
Definition: object.c:2999
VALUE rb_immutable_obj_clone(int, VALUE *, VALUE)
Definition: object.c:346
VALUE rb_class_search_ancestor(VALUE klass, VALUE super)
Definition: object.c:713
VALUE rb_obj_untrusted(VALUE obj)
call-seq: obj.untrusted? -> false
Definition: object.c:1028
VALUE rb_String(VALUE)
Equivalent to Kernel#String in Ruby.
Definition: object.c:3652
VALUE rb_obj_untaint(VALUE)
call-seq: obj.untaint -> obj
Definition: object.c:1014
VALUE rb_obj_tainted(VALUE obj)
call-seq: obj.tainted? -> false
Definition: object.c:985
VALUE rb_check_convert_type_with_id(VALUE, int, const char *, ID)
Definition: object.c:2957
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2)
Definition: object.c:187
VALUE rb_to_int(VALUE)
Converts val into Integer.
Definition: object.c:3021
VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type)
Fills common (RBasic) fields in obj.
Definition: object.c:112
size_t rb_hash_size_num(VALUE hash)
Definition: hash.c:2945
fd_set rb_fdset_t
Definition: intern.h:403
void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite writable, int n, const char *mesg)
Definition: io.c:12944
void rb_readwrite_sys_fail(enum rb_io_wait_readwrite writable, const char *mesg)
Definition: io.c:12938
VALUE type(ANYARGS)
ANYARGS-ed function type.
Definition: cxxanyargs.hpp:39
The main namespace.
Definition: cxxanyargs.hpp:17
unsigned int input
Definition: nkf.c:4325
const char * name
Definition: nkf.c:208
const char * alias
Definition: nkf.c:1159
unsigned int last
Definition: nkf.c:4324
unsigned char buf[MIME_BUF_SIZE]
Definition: nkf.c:4322
void rb_num_zerodiv(void)
Definition: numeric.c:194
long rb_num2int(VALUE val)
Definition: numeric.c:3002
VALUE rb_dbl_cmp(double a, double b)
Definition: numeric.c:1431
long rb_fix2int(VALUE val)
Definition: numeric.c:3008
#define debug(lvl, x...)
Definition: ffi.c:52
my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2)
Definition: problem1.c:16
VALUE rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
void rb_method_name_error(VALUE klass, VALUE str)
Definition: proc.c:1778
VALUE rb_f_abort(int argc, const VALUE *argv)
Definition: process.c:4312
VALUE rb_f_exit(int argc, const VALUE *argv)
Definition: process.c:4238
VALUE rb_f_exec(int argc, const VALUE *argv)
Definition: process.c:2910
void rb_exit(int status)
Definition: process.c:4225
float expf(float)
int rb_int_negative_p(VALUE num)
Definition: numeric.c:307
double round(double)
Definition: numeric.c:80
void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src)
Definition: vm.c:885
void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause)
Definition: eval.c:639
VALUE rb_class_name(VALUE)
Definition: variable.c:274
void rb_load(VALUE, int)
Definition: load.c:693
pid_t vfork(void)
void srand48(long)
ssize_t __ssp_real_readlinkat(int __dirfd1, const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) __asm__("" "readlinkat")
double nextafter(double, double)
Definition: nextafter.c:9
int char char * _vasnprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
struct rb_code_location_struct rb_code_location_t
double _strtod_r(struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR)
VALUE rb_big_even_p(VALUE)
Definition: bignum.c:6840
void rb_thread_wait_for(struct timeval)
Definition: thread.c:1346
int _setjmp(jmp_buf)
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int)
VALUE rb_call_super_kw(int, const VALUE *, int)
Definition: vm_eval.c:298
#define RARRAY_EMBED_FLAG
useconds_t ualarm(useconds_t __useconds, useconds_t __interval)
int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
Definition: bignum.c:3547
int pipe2(int __fildes[2], int flags)
VALUE rb_ary_new_from_values(long n, const VALUE *elts)
Definition: array.c:762
__uint32_t uint32_t
VALUE rb_cArithSeq
Definition: enumerator.c:180
int rb_ec_set_raised(rb_execution_context_t *ec)
Definition: thread.c:2343
int rb_thread_check_trap_pending(void)
Definition: thread.c:1371
int rb_reg_backref_number(VALUE match, VALUE backref)
Definition: re.c:1181
const rb_method_entry_t * rb_method_entry_clone(const rb_method_entry_t *me)
Definition: vm_method.c:406
void rb_iseq_remove_coverage_all(void)
Definition: iseq.c:1110
@ THREAD_STOPPED_FOREVER
unsigned long rb_genrand_ulong_limited(unsigned long i)
Definition: random.c:811
VALUE rb_str_unlocktmp(VALUE)
Definition: string.c:2675
float nearbyintf(float)
__uint32_t in_addr_t
int ruby_run_node(void *n)
Runs the given compiled source and exits this process.
Definition: eval.c:327
VALUE rb_eval_string(const char *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1715
double atan2(double, double)
const rb_data_type_t ruby_threadptr_data_type
Definition: vm.c:2645
int fgetpos(FILE *__restrict__, fpos_t *__restrict__)
float fmodf(float, float)
VALUE rb_parser_encoding(VALUE)
Definition: ripper.c:20099
double rint(double)
long int lrintl(long double)
void * memchr(const void *, int, size_t)
VALUE(* builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
float atan2f(float, float)
VALUE rb_hash_lookup(VALUE, VALUE)
Definition: hash.c:2063
void rb_fiber_reset_root_local_storage(struct rb_thread_struct *)
Definition: cont.c:2135
struct rb_execarg * rb_execarg_get(VALUE execarg_obj)
Definition: process.c:2636
__off_t off_t
float fabsf(float)
VALUE rb_check_funcall_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:499
void rb_ast_dispose(rb_ast_t *)
Definition: node.c:1387
@ RB_DEBUG_COUNTER_ccf_opt_send
@ RB_DEBUG_COUNTER_mjit_frame_VM2VM
@ RB_DEBUG_COUNTER_mc_miss_reuse_call
@ RB_DEBUG_COUNTER_ivar_set_base
@ RB_DEBUG_COUNTER_gc_major_force
@ RB_DEBUG_COUNTER_gc_minor_capi
@ RB_DEBUG_COUNTER_frame_push_rescue
@ RB_DEBUG_COUNTER_obj_data_empty
@ RB_DEBUG_COUNTER_obj_file_ptr
@ RB_DEBUG_COUNTER_mc_miss_by_refine
@ RB_DEBUG_COUNTER_mjit_length_compact_units
@ RB_DEBUG_COUNTER_ccf_general
@ RB_DEBUG_COUNTER_obj_class_ptr
@ RB_DEBUG_COUNTER_obj_ary_extracapa
@ RB_DEBUG_COUNTER_heap_xfree
@ RB_DEBUG_COUNTER_obj_promote
@ RB_DEBUG_COUNTER_obj_hash_force_convert
@ RB_DEBUG_COUNTER_obj_float
@ RB_DEBUG_COUNTER_ccf_method_missing
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_serial
@ RB_DEBUG_COUNTER_obj_hash_5_8
@ RB_DEBUG_COUNTER_obj_match_ge4
@ RB_DEBUG_COUNTER_mjit_frame_JT2VM
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject
@ RB_DEBUG_COUNTER_obj_ary_shared_create
@ RB_DEBUG_COUNTER_frame_push
@ RB_DEBUG_COUNTER_lvar_set
@ RB_DEBUG_COUNTER_mc_miss_by_nome
@ RB_DEBUG_COUNTER_mc_inline_hit
@ RB_DEBUG_COUNTER_obj_struct_transient
@ RB_DEBUG_COUNTER_ivar_get_ic_miss
@ RB_DEBUG_COUNTER_heap_xrealloc
@ RB_DEBUG_COUNTER_obj_ary_shared_root_occupied
@ RB_DEBUG_COUNTER_frame_push_cfunc
@ RB_DEBUG_COUNTER_artable_hint_notfound
@ RB_DEBUG_COUNTER_ccf_opt_call
@ RB_DEBUG_COUNTER_ivar_get_base
@ RB_DEBUG_COUNTER_obj_str_ptr
@ RB_DEBUG_COUNTER_mc_global_miss
@ RB_DEBUG_COUNTER_frame_R2C
@ RB_DEBUG_COUNTER_obj_imemo_svar
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_unset
@ RB_DEBUG_COUNTER_ccf_iseq_setup_0start
@ RB_DEBUG_COUNTER_obj_ary_ptr
@ RB_DEBUG_COUNTER_gc_major_oldmalloc
@ RB_DEBUG_COUNTER_obj_hash_ar
@ RB_DEBUG_COUNTER_mc_miss_by_distinct
@ RB_DEBUG_COUNTER_artable_hint_hit
@ RB_DEBUG_COUNTER_gc_major_nofree
@ RB_DEBUG_COUNTER_obj_imemo_memo
@ RB_DEBUG_COUNTER_obj_hash_4
@ RB_DEBUG_COUNTER_obj_str_fstr
@ RB_DEBUG_COUNTER_gc_isptr_align
@ RB_DEBUG_COUNTER_lvar_set_dynamic
@ RB_DEBUG_COUNTER_frame_push_dummy
@ RB_DEBUG_COUNTER_gc_isptr_trial
@ RB_DEBUG_COUNTER_obj_obj_embed
@ RB_DEBUG_COUNTER_obj_free
@ RB_DEBUG_COUNTER_obj_wb_unprotect
@ RB_DEBUG_COUNTER_mjit_compile_failures
@ RB_DEBUG_COUNTER_frame_C2C
@ RB_DEBUG_COUNTER_ccf_bmethod
@ RB_DEBUG_COUNTER_obj_hash_st
@ RB_DEBUG_COUNTER_obj_regexp_ptr
@ RB_DEBUG_COUNTER_mjit_cancel_send_inline
@ RB_DEBUG_COUNTER_obj_imemo_ment
@ RB_DEBUG_COUNTER_obj_newobj_wb_unprotected
@ RB_DEBUG_COUNTER_mc_inline_miss
@ RB_DEBUG_COUNTER_mjit_cancel_ivar_inline
@ RB_DEBUG_COUNTER_obj_imemo_ifunc
@ RB_DEBUG_COUNTER_lvar_get_dynamic
@ RB_DEBUG_COUNTER_mjit_cancel_invalidate_all
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_unset
@ RB_DEBUG_COUNTER_obj_rational
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange
@ RB_DEBUG_COUNTER_frame_push_eval
@ RB_DEBUG_COUNTER_lvar_set_slowpath
@ RB_DEBUG_COUNTER_mjit_exec_not_added
@ RB_DEBUG_COUNTER_obj_bignum_ptr
@ RB_DEBUG_COUNTER_gc_minor_stress
@ RB_DEBUG_COUNTER_gc_major_oldgen
@ RB_DEBUG_COUNTER_ccf_cfunc
@ RB_DEBUG_COUNTER_frame_push_method
@ RB_DEBUG_COUNTER_mjit_exec_not_added_add_iseq
@ RB_DEBUG_COUNTER_gc_minor_method
@ RB_DEBUG_COUNTER_mjit_exec
@ RB_DEBUG_COUNTER_mjit_cancel
@ RB_DEBUG_COUNTER_obj_data_zombie
@ RB_DEBUG_COUNTER_obj_hash_empty
@ RB_DEBUG_COUNTER_gc_major_shady
@ RB_DEBUG_COUNTER_obj_hash_2
@ RB_DEBUG_COUNTER_frame_R2R
@ RB_DEBUG_COUNTER_ccf_zsuper
@ RB_DEBUG_COUNTER_obj_imemo_tmpbuf
@ RB_DEBUG_COUNTER_obj_imemo_env
@ RB_DEBUG_COUNTER_ccf_super_method
@ RB_DEBUG_COUNTER_ccf_iseq_setup
@ RB_DEBUG_COUNTER_obj_hash_null
@ RB_DEBUG_COUNTER_frame_push_top
@ RB_DEBUG_COUNTER_mjit_exec_not_ready
@ RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start
@ RB_DEBUG_COUNTER_gc_minor_newobj
@ RB_DEBUG_COUNTER_obj_obj_transient
@ RB_DEBUG_COUNTER_ccf_iseq_fix
@ RB_DEBUG_COUNTER_obj_module_ptr
@ RB_DEBUG_COUNTER_obj_str_embed
@ RB_DEBUG_COUNTER_obj_imemo_iseq
@ RB_DEBUG_COUNTER_mc_search_super
@ RB_DEBUG_COUNTER_mjit_length_active_units
@ RB_DEBUG_COUNTER_artable_hint_miss
@ RB_DEBUG_COUNTER_ivar_set_ic_miss
@ RB_DEBUG_COUNTER_mc_cme_complement
@ RB_DEBUG_COUNTER_mc_global_hit
@ RB_DEBUG_COUNTER_obj_imemo_cref
@ RB_DEBUG_COUNTER_lvar_get
@ RB_DEBUG_COUNTER_obj_obj_ptr
@ RB_DEBUG_COUNTER_mjit_length_stale_units
@ RB_DEBUG_COUNTER_ivar_get_ic_hit
@ RB_DEBUG_COUNTER_mjit_exec_not_compiled
@ RB_DEBUG_COUNTER_obj_complex
@ RB_DEBUG_COUNTER_mjit_frame_JT2JT
@ RB_DEBUG_COUNTER_mjit_length_unit_queue
@ RB_DEBUG_COUNTER_obj_symbol
@ RB_DEBUG_COUNTER_obj_ary_embed
@ RB_DEBUG_COUNTER_obj_struct_embed
@ RB_DEBUG_COUNTER_MAX
@ RB_DEBUG_COUNTER_obj_match_ge8
@ RB_DEBUG_COUNTER_theap_alloc_fail
@ RB_DEBUG_COUNTER_mjit_cancel_opt_insn
@ RB_DEBUG_COUNTER_obj_hash_transient
@ RB_DEBUG_COUNTER_obj_iclass_ptr
@ RB_DEBUG_COUNTER_obj_imemo_throw_data
@ RB_DEBUG_COUNTER_obj_struct_ptr
@ RB_DEBUG_COUNTER_gc_isptr_maybe
@ RB_DEBUG_COUNTER_gc_minor_malloc
@ RB_DEBUG_COUNTER_obj_data_imm_free
@ RB_DEBUG_COUNTER_obj_str_shared
@ RB_DEBUG_COUNTER_obj_ary_transient
@ RB_DEBUG_COUNTER_mjit_frame_VM2JT
@ RB_DEBUG_COUNTER_theap_evacuate
@ RB_DEBUG_COUNTER_obj_imemo_ast
@ RB_DEBUG_COUNTER_obj_imemo_parser_strterm
@ RB_DEBUG_COUNTER_frame_push_ifunc
@ RB_DEBUG_COUNTER_ccf_iseq_kw1
@ RB_DEBUG_COUNTER_obj_data_xfree
@ RB_DEBUG_COUNTER_ccf_iseq_opt
@ RB_DEBUG_COUNTER_frame_push_class
@ RB_DEBUG_COUNTER_mjit_exec_call_func
@ RB_DEBUG_COUNTER_obj_str_nofree
@ RB_DEBUG_COUNTER_frame_C2R
@ RB_DEBUG_COUNTER_mc_global_state_miss
@ RB_DEBUG_COUNTER_ccf_opt_block_call
@ RB_DEBUG_COUNTER_ccf_attrset
@ RB_DEBUG_COUNTER_obj_hash_3
@ RB_DEBUG_COUNTER_obj_match_under4
@ RB_DEBUG_COUNTER_obj_newobj_slowpath
@ RB_DEBUG_COUNTER_obj_ary_shared
@ RB_DEBUG_COUNTER_obj_newobj
@ RB_DEBUG_COUNTER_obj_bignum_embed
@ RB_DEBUG_COUNTER_mc_class_serial_miss
@ RB_DEBUG_COUNTER_theap_alloc
@ RB_DEBUG_COUNTER_heap_xmalloc
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_serial
@ RB_DEBUG_COUNTER_obj_match_ptr
@ RB_DEBUG_COUNTER_obj_hash_1
@ RB_DEBUG_COUNTER_frame_push_block
@ RB_DEBUG_COUNTER_ccf_iseq_kw2
@ RB_DEBUG_COUNTER_mc_cme_complement_hit
@ RB_DEBUG_COUNTER_ccf_ivar
@ RB_DEBUG_COUNTER_ivar_set_ic_hit
@ RB_DEBUG_COUNTER_mc_miss_spurious
@ RB_DEBUG_COUNTER_mc_miss_by_visi
@ RB_DEBUG_COUNTER_gc_isptr_range
@ RB_DEBUG_COUNTER_gc_count
@ RB_DEBUG_COUNTER_obj_hash_g8
VALUE rb_file_s_expand_path(int, const VALUE *)
Definition: file.c:4092
#define SI_KERNEL
ssize_t readlink(const char *__restrict__ __path, char *__restrict__ __buf, size_t __buflen)
int pthread_condattr_setclock(pthread_condattr_t *, clockid_t)
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *)
void rb_ec_clear_vm_stack(rb_execution_context_t *ec)
Definition: vm.c:2701
#define clearerr(p)
float cosf(float)
VALUE rb_math_log(int argc, const VALUE *argv)
Definition: math.c:459
int _fiprintf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__printf__
VALUE rb_dir_getwd(void)
Definition: dir.c:1141
double gamma(double)
VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2097
void rb_hash_foreach(VALUE, int(*)(VALUE, VALUE, VALUE), VALUE)
double rb_random_real(VALUE rnd)
Definition: random.c:874
void rb_undef(VALUE, ID)
Definition: vm_method.c:1217
long int __intmax_t
int pthread_getname_np(pthread_t, char *, size_t) __attribute__((__nonnull__(2)))
int fsync(int __fd)
long int int_fast64_t
VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE)
Definition: gc.c:2287
VALUE rb_f_trace_var(int, const VALUE *)
Definition: variable.c:528
int execvpe(const char *__file, char *const __argv[], char *const __envp[])
int rb_objspace_internal_object_p(VALUE obj)
Definition: gc.c:3110
void __cygwin_lock_unlock(_LOCK_T *)
VALUE rb_str_to_str(VALUE)
Definition: string.c:1382
void Init_newline(void)
int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__))
#define SIGEV_SIGNAL
pid_t getpgrp(void)
__int8_t int8_t
VALUE rb_iseq_path(const rb_iseq_t *iseq)
Definition: iseq.c:1027
VALUE * ruby_initial_gc_stress_ptr
Definition: gc.c:905
long double nanl(const char *)
long int __intptr_t
#define rb_data_object_get
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line)
Definition: ripper.c:13755
void __stack_chk_fail(void) __attribute__((__noreturn__))
int pthread_atfork(void(*)(void), void(*)(void), void(*)(void))
void * _reallocf_r(struct _reent *, void *, size_t)
VALUE rb_get_coverages(void)
Definition: thread.c:5476
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5085
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
Definition: node.c:1095
#define rb_funcallv(recv, mid, argc, argv)
VALUE rb_hash_default_value(VALUE hash, VALUE key)
Definition: hash.c:1990
int memcmp(const void *, const void *, size_t)
Definition: memcmp.c:7
void rb_file_const(const char *, VALUE)
Definition: file.c:6144
VALUE rb_str_freeze(VALUE)
Definition: string.c:2616
void rb_print_backtrace(void)
Definition: vm_dump.c:750
void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
Definition: vm.c:2685
void rb_provide(const char *)
Definition: load.c:607
@ id_core_set_method_alias
@ id_debug_created_info
@ id_core_hash_merge_kwd
@ tSingleton_method_added
@ idSingleton_method_added
@ id_core_define_singleton_method
@ id_core_set_variable_alias
@ idRespond_to_missing
@ idSingleton_method_removed
@ id_core_hash_merge_ptr
@ idSingleton_method_undefined
@ tSingleton_method_undefined
@ tTOKEN_ATTRSET_BEGIN
@ id_core_undef_method
@ tTOKEN_INSTANCE_BEGIN
@ id_core_define_method
@ tSingleton_method_removed
int pthread_rwlock_clockrdlock(pthread_rwlock_t *, clockid_t, const struct timespec *)
#define RSTRUCT_EMBED_LEN_SHIFT
unsigned long strtoul(const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
unsigned int rb_random_int32(VALUE rnd)
Definition: random.c:839
int sigpending(sigset_t *)
float erff(float)
const char *void void rb_compile_warning(const char *, int, const char *,...) __attribute__((format(printf
VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *)
Definition: vm_eval.c:237
float dremf(float, float)
int int int int int int int int char char int int fiprintf(FILE *, const char *,...) __attribute__((__format__(__printf__
int getopt(int, char *const *, const char *)
int int _fpurge_r(struct _reent *, FILE *)
int rb_thread_interrupted(VALUE thval)
Definition: thread.c:1378
VALUE rb_str_resize(VALUE, long)
Definition: string.c:2709
VALUE rb_argv0
Definition: intern.h:734
VALUE rb_f_send(int argc, VALUE *argv, VALUE recv)
Definition: vm_eval.c:1188
void rb_backref_set_string(VALUE string, long pos, long len)
Definition: re.c:1348
unsigned long lindex_t
ssize_t getdelim(char **, size_t *, int, FILE *)
long double exp2l(long double)
char * strsignal(int __signo)
int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2)
pid_t getsid(pid_t)
rb_nativethread_id_t rb_nativethread_self()
VALUE rb_hash(VALUE)
Definition: hash.c:129
void div_t div(int __numer, int __denom)
long double asinhl(long double)
long long int llrintf(float)
float atanhf(float)
@ RB_WARN_CATEGORY_DEPRECATED
@ RB_WARN_CATEGORY_ALL_BITS
@ RB_WARN_CATEGORY_EXPERIMENTAL
@ RB_WARN_CATEGORY_NONE
VALUE rb_random_int(VALUE rnd, VALUE max)
struct rb_global_entry * rb_global_entry(ID)
Definition: variable.c:326
void rb_iseq_init_trace(rb_iseq_t *iseq)
Definition: iseq.c:623
int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2)
Definition: vm_method.c:1493
int mkfifoat(int, const char *, mode_t)
void(* ruby_sighandler_t)(int)
void __cygwin_lock_lock(_LOCK_T *)
VALUE rb_last_status_get(void)
Definition: process.c:546
VALUE rb_str_locktmp_ensure(VALUE str, VALUE(*func)(VALUE), VALUE arg)
Definition: string.c:2685
VALUE rb_complex_uminus(VALUE z)
Definition: complex.c:758
VALUE rb_complex_div(VALUE x, VALUE y)
Definition: complex.c:948
void * reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2
double hypot(double, double)
Definition: hypot.c:6
VALUE rb_get_argv(void)
Definition: io.c:12904
int __signbitf(float)
long unsigned int uint_fast32_t
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
Definition: hash.c:1453
VALUE rb_rational_cmp(VALUE self, VALUE other)
Definition: rational.c:1097
int char char int int int int _fclose_r(struct _reent *, FILE *)
__suseconds_t suseconds_t
rb_iseq_t * rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func *ifunc, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t *)
Definition: iseq.c:828
const rb_callable_method_entry_t * rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:948
VALUE rb_thread_wakeup_alive(VALUE)
Definition: thread.c:2548
VALUE rb_class_path_cached(VALUE)
Definition: variable.c:162
struct rb_method_cfunc_struct rb_method_cfunc_t
int sethostname(const char *, size_t)
VALUE rb_hash_values(VALUE hash)
Definition: hash.c:3456
#define rb_str_buf_cat2
void rb_objspace_each_objects(int(*callback)(void *start, void *end, size_t stride, void *data), void *data)
int wctomb(char *, wchar_t)
VALUE rb_str_scrub(VALUE, VALUE)
Definition: string.c:10248
void rb_objspace_reachable_objects_from_root(void(func)(const char *category, VALUE, void *), void *data)
Definition: gc.c:9509
long double tanl(long double)
VALUE rb_struct_alloc_noinit(VALUE)
Definition: struct.c:349
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
Definition: vm_trace.c:157
VALUE rb_big_pow(VALUE, VALUE)
Definition: bignum.c:6244
VALUE rb_parser_dump_tree(const NODE *node, int comment)
Definition: node.c:1076
size_t rb_big_size(VALUE)
Definition: bignum.c:6778
void rb_debug_counter_show_results(const char *msg)
#define _(args)
VALUE rb_reg_check_preprocess(VALUE)
Definition: re.c:2707
char * rb_str_fill_terminator(VALUE str, const int termlen)
Definition: string.c:2306
void * _LOCK_T
int clock_gettime(clockid_t clock_id, struct timespec *tp)
Definition: win32.c:4642
void void * reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
ldiv_t ldiv(long __numer, long __denom)
int cookie_close_function_t(void *__cookie)
VALUE rb_hash_resurrect(VALUE hash)
Definition: hash.c:1575
long random(void)
unsigned long __timer_t
int putchar(int)
__extension__ typedef long long _off64_t
char * strlwr(char *)
size_t wcstombs(char *__restrict__, const wchar_t *__restrict__, size_t)
int char char int int int int int int int int int int int int int int int int int int fpurge(FILE *)
void rb_define_virtual_variable(const char *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Definition: variable.c:511
int pthread_attr_getguardsize(const pthread_attr_t *, size_t *)
int setgid(gid_t __gid)
int sched_getscheduler(pid_t __pid)
int _fputs_unlocked_r(struct _reent *, const char *__restrict__, FILE *__restrict__)
int execlpe(const char *__file, const char *,...)
rb_serial_t ruby_vm_class_serial
Definition: vm.c:381
int rb_cloexec_pipe(int fildes[2])
Definition: io.c:378
__sigset_t sigset_t
double fabs(double)
struct __pthread_mutexattr_t * pthread_mutexattr_t
struct rb_ast_struct rb_ast_t
void _rewind_r(struct _reent *, FILE *)
char * l64a(long __input)
VALUE rb_backtrace_to_str_ary(VALUE obj)
Definition: vm_backtrace.c:620
VALUE rb_rs
Definition: intern.h:585
size_t _wcstombs_r(struct _reent *, char *__restrict__, const wchar_t *__restrict__, size_t, _mbstate_t *)
VALUE rb_io_getbyte(VALUE)
Definition: io.c:4219
VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath)
Definition: iseq.c:450
VALUE rb_rational_uminus(VALUE self)
Definition: rational.c:624
int getc_unlocked(FILE *)
void mjit_finish(_Bool close_handle_p)
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *, int *)
struct __pthread_cond_t * pthread_cond_t
int _fputc_r(struct _reent *, int, FILE *)
double tanh(double)
Definition: math.c:284
uintmax_t strtoumax_l(const char *__restrict__, char **_restrict, int, locale_t)
void rb_parser_free(struct parser_params *, void *)
Definition: ripper.c:20220
#define sprintf(str,...)
char * getusershell(void)
unsigned long __clock_t
void rb_vm_gvl_destroy(rb_vm_t *vm)
Definition: thread.c:421
const rb_method_entry_t * rb_method_entry(VALUE klass, ID id)
Definition: vm_method.c:854
VALUE rb_iseq_eval_main(const rb_iseq_t *iseq)
Definition: vm.c:2173
VALUE rb_mRubyVMFrozenCore
Definition: vm.c:367
void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq)
Definition: iseq.c:595
VALUE rb_thread_local_aref(VALUE, ID)
Definition: thread.c:3215
void rb_remove_method_id(VALUE, ID)
Definition: vm_method.c:1043
int kill(pid_t, int)
Definition: win32.c:4819
void rb_io_fptr_finalize_internal(void *ptr)
Definition: io.c:4734
int rb_proc_exec(const char *)
Definition: process.c:1693
int int renameat(int, const char *, int, const char *)
long double copysignl(long double, long double)
@ VM_THROW_NO_ESCAPE_FLAG
void rb_encdb_declare(const char *name)
Definition: encoding.c:350
void rb_set_class_path_string(VALUE, VALUE, VALUE)
Definition: variable.c:198
NODE * rb_ast_newnode(rb_ast_t *, enum node_type type)
Definition: node.c:1198
void rb_ec_error_print(rb_execution_context_t *volatile ec, volatile VALUE errinfo)
Definition: eval_error.c:346
#define rb_hash_uint(h, i)
long double ldexpl(long double, int)
int __signbitd(double)
long double expl(long double)
uintmax_t wcstoumax_l(const wchar_t *__restrict__, wchar_t **_restrict, int, locale_t)
VALUE rb_parser_new(void)
Definition: ripper.c:20026
long _strtol_r(struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
VALUE rb_const_get(VALUE, ID)
Definition: variable.c:2391
VALUE rb_Rational(VALUE, VALUE)
Definition: rational.c:1963
st_table * rb_st_init_numtable_with_size(st_index_t)
long double remquol(long double, long double, int *)
long double powl(long double, long double)
__uid_t uid_t
#define CLD_STOPPED
long ftell(FILE *)
int vhangup(void)
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5097
void rb_attr(VALUE, ID, int, int, int)
Definition: vm_method.c:1180
struct ruby_dtrace_method_hook_args *VALUE rb_str_concat_literals(size_t, const VALUE *)
Definition: string.c:2974
int dup3(int __fildes, int __fildes2, int flags)
#define log2(x)
VALUE rb_rational_pow(VALUE self, VALUE other)
Definition: rational.c:1002
void __eprintf(const char *, const char *, unsigned int, const char *)
FILE * _fopencookie_r(struct _reent *, void *__cookie, const char *__mode, cookie_io_functions_t __functions)
double strtod(const char *__restrict__ __n, char **__restrict__ __end_PTR)
VALUE rb_ull2inum(unsigned long long)
int ruby_is_fd_loadable(int fd)
Definition: file.c:6256
VALUE rb_obj_instance_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:1997
void pthread_exit(void *) __attribute__((__noreturn__))
rb_gvar_setter_t rb_gvar_var_setter
float strtof(const char *__restrict__ __n, char **__restrict__ __end_PTR)
long rb_str_offset(VALUE, long)
Definition: string.c:2416
rb_control_frame_t struct rb_calling_info const struct rb_call_info VALUE block_handler
_sig_func_ptr sighandler_t
@ CONST_VISIBILITY_MAX
@ CONST_VISIBILITY_MASK
VALUE rb_ary_aref(int, const VALUE *, VALUE)
Definition: array.c:1574
#define RCLASS_SUPER(c)
const char * ruby_escaped_char(int c)
Definition: string.c:5848
size_t __ssp_real_fread_unlocked(void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp) __asm__("" "fread_unlocked")
int getloadavg(double loadavg[], int nelem)
int setregid(gid_t __rgid, gid_t __egid)
void rb_backtrace_each(VALUE(*iter)(VALUE recv, VALUE str), VALUE output)
Definition: vm_backtrace.c:855
char * setstate(char *)
VALUE rb_int2inum(intptr_t)
Definition: bignum.c:3208
void rb_set_class_path(VALUE, VALUE, const char *)
Definition: variable.c:218
int pthread_cond_signal(pthread_cond_t *)
rb_vm_t * ruby_current_vm_ptr
Definition: vm.c:372
int rb_method_entry_arity(const rb_method_entry_t *me)
Definition: proc.c:2555
const ID rb_iseq_shared_exc_local_tbl[]
Definition: compile.c:110
enum ruby_tag_type st
VALUE rb_integer_float_eq(VALUE x, VALUE y)
Definition: bignum.c:5386
double strtod_l(const char *__restrict__, char **__restrict__, locale_t)
#define BUS_OBJERR
void srandom(unsigned)
#define RHASH_AR_TABLE_SIZE_SHIFT
void __cygwin_lock_init(_LOCK_T *)
VALUE rb_mod_class_variables(int, const VALUE *, VALUE)
Definition: variable.c:3248
#define bp()
void rb_mark_tbl(struct st_table *)
Definition: gc.c:5021
rb_gvar_marker_t rb_gvar_var_marker
int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t(*)(st_data_t))
VALUE rb_big_hash(VALUE)
Definition: bignum.c:6726
double cosh(double)
Definition: math.c:228
char * strstr(const char *, const char *)
Definition: strstr.c:8
void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen)
Definition: string.c:2230
const VALUE const VALUE *void rb_remove_method(VALUE, const char *)
Definition: vm_method.c:1049
char * itoa(int, char *, int)
__inline__ int __len
int int int int vscanf(const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
void rb_copy_generic_ivar(VALUE, VALUE)
Definition: variable.c:1447
unsigned long st_data_t
int sched_set_thread_affinity(void *, size_t, const cpu_set_t *)
void rb_gc_mark_maybe(VALUE)
Definition: gc.c:5060
VALUE rb_big_eql(VALUE, VALUE)
Definition: bignum.c:5544
int pthread_mutex_timedlock(pthread_mutex_t *, const struct timespec *)
@ VM_CALL_ARGS_SIMPLE_bit
@ VM_CALL_KW_SPLAT_bit
@ VM_CALL_BLOCKISEQ_bit
@ VM_CALL_OPT_SEND_bit
@ VM_CALL_ARGS_BLOCKARG_bit
@ VM_CALL_TAILCALL_bit
@ VM_CALL_ARGS_SPLAT_bit
char * _tmpnam_r(struct _reent *, char *)
void rb_must_asciicompat(VALUE)
Definition: string.c:2166
int rb_empty_keyword_given_p(void)
Definition: eval.c:919
int pthread_mutex_clocklock(pthread_mutex_t *, clockid_t, const struct timespec *)
#define ALWAYS_INLINE(x)
double rb_big_fdiv_double(VALUE x, VALUE y)
Definition: bignum.c:6209
VALUE rb_yield_1(VALUE val)
Definition: vm_eval.c:1231
VALUE rb_flt_rationalize_with_prec(VALUE, VALUE)
Definition: rational.c:2238
int int int int int int int int int fgetc(FILE *)
VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int)
Definition: ripper.c:20036
static const VALUE int int int int int int VALUE * vars[]
int setenv(const char *__string, const char *__value, int __overwrite)
VALUE rb_big_minus(VALUE, VALUE)
Definition: bignum.c:5853
time_t mktime(struct tm *_timeptr)
VALUE rb_ll2inum(long long)
void rb_compile_warn(const char *, int, const char *,...) __attribute__((format(printf
struct st_table * rb_hash_tbl(VALUE, const char *file, int line)
Definition: hash.c:1601
int int int int int int int int char char int int int int iprintf(const char *,...) __attribute__((__format__(__printf__
void rb_threadptr_check_signal(rb_thread_t *mth)
Definition: thread.c:4317
VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2996
long double atanhl(long double)
int ftrylockfile(FILE *)
short unsigned int __uint16_t
VALUE rb_int_modulo(VALUE x, VALUE y)
Definition: numeric.c:3891
void rb_ibf_load_iseq_complete(rb_iseq_t *iseq)
Definition: compile.c:11434
void srand(unsigned __seed)
void rb_mutex_allow_trap(VALUE self, int val)
Definition: thread_sync.c:545
VALUE rb_str_eql(VALUE str1, VALUE str2)
Definition: string.c:3287
void sincos(double, double *, double *)
long double fminl(long double, long double)
VALUE rb_reg_nth_defined(int, VALUE)
Definition: re.c:1696
void ruby_thread_init_stack(rb_thread_t *th)
Definition: thread.c:642
void rb_fd_clr(int, rb_fdset_t *)
int rmdir(const char *__path)
struct iseq_inline_cache_entry * IC
const rb_callable_method_entry_t * rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:934
VALUE rb_fix_aref(VALUE fix, VALUE idx)
Definition: numeric.c:4649
VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone)
Definition: hash.c:99
#define memset(dst, val, len)
const char * getprogname(void)
FILE * funopen(const void *__cookie, int(*__readfn)(void *__c, char *__buf, size_t __n), int(*__writefn)(void *__c, const char *__buf, size_t __n), _fpos64_t(*__seekfn)(void *__c, _fpos64_t __off, int __whence), int(*__closefn)(void *__c))
float truncf(float)
VALUE rb_vm_call_cfunc(VALUE recv, VALUE(*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename)
Definition: vm.c:2212
long int int_fast32_t
int rb_objspace_garbage_object_p(VALUE obj)
Definition: gc.c:3620
int rb_str_symname_p(VALUE)
Definition: string.c:10695
char * _fgets_unlocked_r(struct _reent *, char *__restrict__, int, FILE *__restrict__)
VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1528
size_t strlen(const char *)
int strcmp(const char *, const char *)
int flsll(long long) __attribute__((__const__))
void(*)(int) ruby_posix_signal(int, void(*)(int))
void rb_hash_st_table_set(VALUE hash, st_table *st)
Definition: hash.c:558
int pthread_cond_clockwait(pthread_cond_t *, pthread_mutex_t *, clockid_t, const struct timespec *)
size_t fwrite(const void *__restrict__, size_t _size, size_t _n, FILE *)
long unsigned int __uintmax_t
void rb_define_private_method(VALUE, const char *, VALUE(*)(), int)
int ruby_thread_has_gvl_p(void)
Definition: thread.c:1704
const void ** rb_vm_get_insns_address_table(void)
Definition: vm_exec.c:134
long pathconf(const char *__path, int __name)
#define rb_utf8_str_new_cstr(str)
int _atoi_r(struct _reent *, const char *__nptr)
VALUE rb_check_to_array(VALUE ary)
Definition: array.c:915
#define BUS_ADRERR
int execv(const char *__path, char *const __argv[])
VALUE(* vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
long double log1pl(long double)
#define rb_hash_end(h)
void VALUE rb_dir_getwd_ospath(void)
Definition: dir.c:1117
FILE * tmpfile(void)
VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc,...)
Definition: struct.c:405
long int ptrdiff_t
void * malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1)))
VALUE rb_assoc_new(VALUE, VALUE)
Definition: array.c:896
_Bool mjit_call_p
Definition: mjit_worker.c:180
VALUE rb_big2str_generic(VALUE x, int base)
Definition: bignum.c:5004
float exp10l(float)
VALUE rb_mutex_new(void)
Definition: thread_sync.c:165
size_t _fwrite_unlocked_r(struct _reent *, const void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
int _fgetpos_r(struct _reent *, FILE *, fpos_t *)
void ruby_debug_printf(const char *,...) __attribute__((format(printf
char * ptsname(int)
void rb_mark_end_proc(void)
Definition: eval_jump.c:78
int getgroups(int __gidsetsize, gid_t __grouplist[])
void Init_native_thread(rb_thread_t *th)
VALUE rb_to_array_type(VALUE obj)
Definition: array.c:902
VALUE rb_struct_s_members(VALUE)
Definition: struct.c:58
void ruby_debug_breakpoint(void)
Definition: debug.c:135
#define rb_hash_uint32(h, i)
int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *)
const rb_iseq_t const int const int min_argc
VALUE rb_str_quote_unprintable(VALUE)
Definition: string.c:10714
int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp)
Definition: range.c:1248
int abs(int)
__uint64_t u_int64_t
int _vasiprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
void * rb_parser_malloc(struct parser_params *, size_t)
Definition: ripper.c:20180
int pthread_mutexattr_settype(pthread_mutexattr_t *, int)
unsigned char __uint8_t
VALUE rb_hash_aref(VALUE, VALUE)
Definition: hash.c:2037
VALUE rb_backref_get(void)
Definition: vm.c:1304
__fsblkcnt_t fsblkcnt_t
void mjit_gc_exit_hook(void)
VALUE rb_io_eof(VALUE)
Definition: io.c:2149
VALUE rb_str_encode_ospath(VALUE)
Definition: file.c:236
long unsigned int uint_fast16_t
char ruby_check_sizeof_int[4==sizeof(int) ? 1 :-1]
void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc)
Definition: vm_dump.c:385
VALUE rb_memory_id(VALUE)
Definition: gc.c:3753
void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock)
Definition: thread.c:440
#define rb_yield_values(argc,...)
int setjmp(jmp_buf __jmpb)
#define RARRAY_TRANSIENT_FLAG
VALUE rb_str_new_shared(VALUE)
Definition: string.c:1197
#define strncat(dst, src, len)
VALUE rb_big_div(VALUE, VALUE)
Definition: bignum.c:6091
int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int)
double fdim(double, double)
double remainder(double, double)
int int int int int sscanf(const char *__restrict__, const char *__restrict__,...) __attribute__((__format__(__scanf__
void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi)
Definition: vm_method.c:685
int _mkostemp_r(struct _reent *, char *, int)
int sigsuspend(const sigset_t *)
long double nextafterl(long double, long double)
int sched_rr_get_interval(pid_t __pid, struct timespec *__interval)
int fstat(int __fd, struct stat *__sbuf)
int pthread_cancel(pthread_t)
VALUE rb_gc_disable(void)
Definition: gc.c:9262
short unsigned int __uint_least16_t
uintmax_t _strtoumax_r(struct _reent *, const char *__restrict__, char **__restrict__, int)
size_t rb_objspace_data_type_memsize(VALUE obj)
Definition: gc.c:2432
int rb_bigzero_p(VALUE x)
Definition: bignum.c:2919
int putc_unlocked(int, FILE *)
__uint16_t uint16_t
VALUE rb_file_open(const char *, const char *)
Definition: io.c:6263
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)
Definition: vm.c:1242
void rb_str_shared_replace(VALUE, VALUE)
Definition: string.c:1391
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1761
void Init_heap(void)
Definition: gc.c:2924
int ruby_debug_print_indent(int level, int debug_level, int indent_level)
Definition: debug.c:74
int ttyname_r(int, char *, size_t)
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE(*func)(), int argc, rb_method_visibility_t visi)
int int _fseek_r(struct _reent *, FILE *, long, int)
VALUE rb_big_idiv(VALUE, VALUE)
Definition: bignum.c:6097
_fpos64_t fpos_t
const int ruby_api_version[]
Definition: iseq.h:15
#define SEGV_MAPERR
VALUE rb_path2class(const char *)
Definition: variable.c:268
int stime(const time_t *)
struct rb_method_attr_struct rb_method_attr_t
long rb_big2long(VALUE)
Definition: bignum.c:5140
double fmin(double, double)
#define RUBY_Qfalse
void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath)
Definition: iseq.c:469
VALUE rb_getpwdirnam_for_login(VALUE login)
int char char int int int int int int int int int int int int _vsiprintf_r(struct _reent *, char *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_cvar_defined(VALUE, ID)
Definition: variable.c:3123
#define SIGEV_THREAD
float strtof_l(const char *__restrict__, char **__restrict__, locale_t)
VALUE ruby_vm_const_missing_count
Definition: vm.c:371
VALUE rb_require_string(VALUE)
Definition: load.c:1145
const rb_method_entry_t * rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me)
Definition: vm_method.c:989
VALUE rb_gc_start(void)
Definition: gc.c:8688
int ffsll(long long) __attribute__((__const__))
rb_control_frame_t * cfp
long double sinl(long double)
int int int int __vsnprintf_chk(char *__restrict__, size_t, int, size_t, const char *__restrict__, __va_list) __attribute__((__format__(__printf__
intmax_t strtoimax(const char *__restrict__, char **__restrict__, int)
VALUE rb_const_source_location(VALUE, ID)
Definition: variable.c:2461
VALUE rb_enum_values_pack(int, const VALUE *)
Definition: enum.c:33
void rb_hash_free(VALUE)
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val)
Definition: hash.c:4547
__uint8_t uint8_t
int close(int __fildes)
int timer_settime(timer_t timerid, int flags, const struct itimerspec *__restrict__ value, struct itimerspec *__restrict__ ovalue)
void ruby_set_argv(int, char **)
Definition: ruby.c:2391
double scalbln(double, long int)
VALUE rb_num_pow(VALUE x, VALUE y)
Definition: numeric.c:4123
#define RMODULE_INCLUDED_INTO_REFINEMENT
char * cuserid(char *)
st_table * rb_st_init_strcasetable_with_size(st_index_t)
float nextafterf(float, float)
VALUE rb_big2str_gmp(VALUE x, int base)
#define rb_data_object_wrap_warning(klass, ptr, mark, free)
#define sigsetjmp(env, savemask)
long double asinl(long double)
char * rb_str_subpos(VALUE, long, long *)
Definition: string.c:2497
int rb_threadptr_execute_interrupts(rb_thread_t *, int)
Definition: thread.c:2193
time_t time(time_t *_timer)
int atoi(const char *__nptr)
void * __memset_chk(void *, int, size_t, size_t)
void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi)
Definition: vm_method.c:675
int rb_proc_arity(VALUE)
Definition: proc.c:1112
void Init_vm_eval(void)
Definition: vm_eval.c:2472
unsigned char uint_fast8_t
#define CLD_KILLED
void rb_define_global_function(const char *, VALUE(*)(), int)
#define mempcpy(dst, src, len)
VALUE rb_const_list(void *)
Definition: variable.c:2598
#define RHASH_AR_TABLE_BOUND_SHIFT
int mkstemps(char *, int)
void * memalign(size_t, size_t)
struct iseq_inline_iv_cache_entry * IVC
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *)
VALUE rb_ary_cat(VALUE, const VALUE *, long)
Definition: array.c:1208
VALUE rb_ary_tmp_new_fill(long capa)
Definition: array.c:776
int fsetpos(FILE *, const fpos_t *)
ssize_t pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
float dreml(long double, long double)
VALUE rb_struct_init_copy(VALUE copy, VALUE s)
Definition: struct.c:974
void Init_enc(void)
Definition: dmyenc.c:5
VALUE rb_big_mul_toom3(VALUE x, VALUE y)
Definition: bignum.c:2267
VALUE rb_big_comp(VALUE x)
Definition: bignum.c:5564
void ruby_reset_leap_second_info(void)
Definition: time.c:1193
float tanf(float)
VALUE rb_str_concat(VALUE, VALUE)
Definition: string.c:3065
double rb_big2dbl(VALUE)
Definition: bignum.c:5310
int sigdelset(sigset_t *, const int)
char * ctermid(char *)
VALUE rb_range_beg_len(VALUE, long *, long *, long, int)
Definition: range.c:1278
VALUE rb_num_coerce_bin(VALUE, VALUE, ID)
Definition: numeric.c:446
size_t rb_obj_memsize_of(VALUE)
Definition: gc.c:3950
uid_t getuid(void)
Definition: win32.c:2795
void * rb_parser_calloc(struct parser_params *, size_t, size_t)
Definition: ripper.c:20190
int rb_vm_insn_addr2insn(const void *)
Definition: iseq.c:3115
char * _gets_r(struct _reent *, char *)
void ruby_init(void)
Calls ruby_setup() and check error.
Definition: eval.c:94
int pthread_spin_init(pthread_spinlock_t *, int)
struct rb_thread_struct rb_thread_t
int linkat(int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags)
int pthread_suspend(pthread_t)
double _drand48_r(struct _reent *)
int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *)
float powf(float, float)
int rb_st_shift(st_table *, st_data_t *, st_data_t *)
#define vsprintf(str, fmt, ap)
float sinf(float)
int pthread_attr_setschedpolicy(pthread_attr_t *, int)
VALUE rb_obj_method(VALUE, VALUE)
Definition: proc.c:1861
VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc)
Definition: string.c:10816
int sigwait(const sigset_t *, int *)
int strtosigno(const char *__name)
void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj)
Definition: gc.c:6954
long atol(const char *__nptr)
VALUE rb_vrescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE, va_list)
An equivalent of rescue clause.
Definition: eval.c:977
__fsfilcnt_t fsfilcnt_t
const rb_data_type_t ruby_binding_data_type
Definition: proc.c:319
#define bzero(dst, len)
void(* __cleanup_routine_type)(void *)
#define RMODULE_IS_REFINEMENT
#define rb_str_cat2
long double cbrtl(long double)
VALUE rb_flt_rationalize(VALUE)
Definition: rational.c:2254
void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE)
VALUE rb_uint2inum(uintptr_t)
Definition: bignum.c:3201
double j1(double)
struct rb_call_cache * CALL_CACHE
int clock_getenable_attr(clockid_t clock_id, int *attr)
int posix_memalign(void **, size_t, size_t) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__))
int rb_obj_respond_to(VALUE, ID, int)
Definition: vm_method.c:2197
VALUE rb_cISeq
Definition: iseq.c:32
VALUE rb_big_norm(VALUE)
Definition: bignum.c:3152
VALUE rb_int_abs(VALUE num)
Definition: numeric.c:4862
FILE * open_memstream(char **, size_t *)
int __locale_mb_cur_max(void)
void rb_vm_encoded_insn_data_table_init(void)
Definition: iseq.c:3085
void rb_execarg_parent_end(VALUE execarg_obj)
Definition: process.c:2883
void ruby_mimfree(void *ptr)
Definition: gc.c:10250
VALUE rb_dbl2big(double)
Definition: bignum.c:5249
__clockid_t clockid_t
void rb_warn_deprecated(const char *fmt, const char *suggest,...) __attribute__((format(printf
int int int int int int vfprintf(FILE *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
size_t strftime_l(char *__restrict__ _s, size_t _maxsize, const char *__restrict__ _fmt, const struct tm *__restrict__ _t, locale_t _l)
unsigned long long strtoull_l(const char *__restrict__, char **__restrict__, int, locale_t __loc)
VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *)
Definition: enumerator.c:516
int char char int int int int int int int int int int int int int int int int int _vsscanf_r(struct _reent *, const char *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__scanf__
char * realpath(const char *__restrict__ path, char *__restrict__ resolved_path)
int rb_cloexec_dup2(int oldfd, int newfd)
Definition: io.c:325
__int16_t int16_t
int __isinff(float)
unsigned long __useconds_t
rb_imemo_tmpbuf_t * rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt)
Definition: gc.c:2341
size_t rb_str_memsize(VALUE)
Definition: string.c:1371
int sched_yield(void)
VALUE rb_ivar_get(VALUE, ID)
Definition: variable.c:1070
VALUE rb_gc_latest_gc_info(VALUE)
Definition: gc.c:8832
int __cygwin_lock_trylock(_LOCK_T *)
#define RSTRUCT_EMBED_LEN_MASK
VALUE rb_gv_set(const char *, VALUE)
Definition: variable.c:671
int(* __compar_fn_t)(const void *, const void *)
const char * rb_sourcefile(void)
Definition: vm.c:1331
int fputc(int, FILE *)
void endusershell(void)
_Static_assert(sizeof(struct rb_call_cache)<=64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE")
void rb_write_error_str(VALUE mesg)
Definition: io.c:7940
VALUE rb_time_num_new(VALUE, VALUE)
Definition: time.c:2567
rb_iseq_t * rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t *)
Definition: iseq.c:807
VALUE rb_big_sq_fast(VALUE x)
Definition: bignum.c:1630
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval)
Definition: hash.c:2310
VALUE rb_mutex_owned_p(VALUE self)
Definition: thread_sync.c:345
const VALUE VALUE obj
VALUE rb_float_floor(VALUE x, int ndigits)
Definition: numeric.c:1898
VALUE rb_fiber_alive_p(VALUE)
Definition: cont.c:2152
long long int llround(double)
long double sqrtl(long double)
void rb_vm_stack_to_heap(rb_execution_context_t *ec)
Definition: vm.c:786
VALUE rb_io_printf(int, const VALUE *, VALUE)
Definition: io.c:7509
VALUE rb_int_div(VALUE x, VALUE y)
Definition: numeric.c:3821
#define ROBJECT_EMBED_LEN_MAX
int rb_feature_provided(const char *, const char **)
Definition: load.c:562
VALUE rb_file_expand_path_fast(VALUE, VALUE)
Definition: file.c:4086
#define rb_check_frozen(obj)
st_index_t rb_hash_proc(st_index_t hash, VALUE proc)
Definition: proc.c:1302
VALUE rb_ary_pop(VALUE)
Definition: array.c:1241
intmax_t wcstoimax_l(const wchar_t *__restrict__, wchar_t **_restrict, int, locale_t)
void mjit_update_references(const rb_iseq_t *iseq)
void Init_eval_method(void)
Definition: vm_method.c:2298
int execl(const char *__path, const char *,...)
float sqrtf(float)
int strcasecmp_l(const char *, const char *, locale_t)
int ruby_exec_node(void *n)
Runs the given compiled source.
Definition: eval.c:341
VALUE rb_external_str_new(const char *, long)
Definition: string.c:1087
char * __ssp_real_getcwd(char *__buf, size_t __len) __asm__("" "getcwd")
float gammaf(float)
VALUE rb_reg_last_match(VALUE)
Definition: re.c:1739
int pthread_attr_init(pthread_attr_t *)
void sincosl(long double, long double *, long double *)
#define RSTRING_NOEMBED
void rb_thread_wait_fd(int)
Definition: thread.c:4041
int pthread_spin_lock(pthread_spinlock_t *)
void * rb_xrealloc_mul_add(const void *, size_t, size_t, size_t)
Definition: gc.c:10196
void rb_glob(const char *, void(*)(const char *, VALUE, void *), VALUE)
Definition: dir.c:2544
double yn(int, double)
VALUE rb_method_call_with_block(int, const VALUE *, VALUE, VALUE)
Definition: proc.c:2309
int system(const char *__string)
int sigfillset(sigset_t *)
struct sigaltstack stack_t
int pthread_barrier_wait(pthread_barrier_t *)
void ruby_incpush(const char *)
Definition: ruby.c:426
long long int llroundl(long double)
double ceil(double)
int int int vfscanf(FILE *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__scanf__
VALUE rb_cstr2inum(const char *, int)
Definition: bignum.c:4538
int * __errno(void)
VALUE rb_big_clone(VALUE)
Definition: bignum.c:3020
VALUE rb_hash_delete_if(VALUE)
Definition: hash.c:2493
VALUE rb_thread_kill(VALUE)
Definition: thread.c:2445
void rb_clear_coverages(void)
Definition: thread.c:4467
int ilogbl(long double)
long double log2l(long double)
VALUE rb_reg_match_post(VALUE)
Definition: re.c:1783
VALUE rb_big2str_poweroftwo(VALUE x, int base)
Definition: bignum.c:4921
double nearbyint(double)
VALUE rb_ary_each(VALUE)
Definition: array.c:2129
@ VM_SPECIAL_OBJECT_CBASE
@ VM_SPECIAL_OBJECT_VMCORE
@ VM_SPECIAL_OBJECT_CONST_BASE
int ilogb(double)
int __ssp_real_gethostname(char *__buf, size_t __len) __asm__("" "gethostname")
VALUE rb_io_close(VALUE)
Definition: io.c:4824
char * _findenv_r(struct _reent *, const char *, int *)
long unsigned int uint_fast64_t
unsigned long clock_t
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *)
int chroot(const char *__path)
int int int int int int int _sscanf_r(struct _reent *, const char *__restrict__, const char *__restrict__,...) __attribute__((__format__(__scanf__
st_index_t rb_ivar_count(VALUE)
Definition: variable.c:1511
float remquof(float, float, int *)
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE args, VALUE exception, VALUE body)
Definition: compile.c:9248
size_t rb_size_mul_or_raise(size_t, size_t, VALUE)
Definition: gc.c:192
_sig_func_ptr signal(int, _sig_func_ptr)
int fileno(FILE *)
char * strchrnul(const char *, int)
VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:962
VALUE rb_big_xor(VALUE, VALUE)
Definition: bignum.c:6573
VALUE rb_io_fdopen(int, int, const char *)
Definition: io.c:8008
VALUE rb_iseq_location(const rb_iseq_t *iseq)
Definition: proc.c:1242
VALUE rb_gc_enable(void)
Definition: gc.c:9225
int ruby_setup(void)
Initializes the VM and builtin libraries.
Definition: eval.c:56
char * asctime(const struct tm *_tblock)
long double hypotl(long double, long double)
char * _strndup_r(struct _reent *, const char *, size_t)
VALUE rb_define_finalizer(VALUE, VALUE)
Definition: gc.c:3302
void rb_free_generic_ivar(VALUE)
Definition: variable.c:993
int isnanf(float)
char * __strncpy_chk(char *, const char *, size_t, size_t)
VALUE rb_struct_size(VALUE s)
Definition: struct.c:1291
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *)
Definition: thread.c:4066
pid_t rb_fork_async_signal_safe(int *status, int(*chfunc)(void *, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen)
pid_t setsid(void)
void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func)
Definition: gc.c:11726
int _fsetpos_r(struct _reent *, FILE *, const fpos_t *)
__uint32_t __id_t
VALUE rb_rational_plus(VALUE self, VALUE other)
Definition: rational.c:737
int _asiprintf_r(struct _reent *, char **, const char *,...) __attribute__((__format__(__printf__
int getchar(void)
double frexp(double, int *)
intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict__, wchar_t **__restrict__, int)
#define CLD_EXITED
char * _strdup_r(struct _reent *, const char *)
gid_t getegid(void)
Definition: win32.c:2816
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
Definition: vm_trace.c:415
int utimensat(int, const char *, const struct timespec[2], int)
void * rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len, size_t count) __attribute__((alloc_size(2
const char * rb_raw_obj_info(char *buff, const int buff_size, VALUE obj)
Definition: gc.c:11477
VALUE rb_file_directory_p(VALUE, VALUE)
Definition: file.c:1617
VALUE rb_big_lshift(VALUE, VALUE)
Definition: bignum.c:6621
int pthread_getaffinity_np(pthread_t, size_t, cpu_set_t *)
void rb_gc_register_mark_object(VALUE)
Definition: gc.c:7079
const rb_iseq_t const char * error
VALUE rb_gcd_normal(VALUE self, VALUE other)
Definition: rational.c:344
VALUE rb_complex_plus(VALUE x, VALUE y)
Definition: complex.c:778
double lgamma(double)
@ RB_INT_PARSE_UNDERSCORE
@ RB_INT_PARSE_DEFAULT
void rb_str_update(VALUE, long, long, VALUE)
Definition: string.c:4643
int int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap)
Definition: sprintf.c:1004
int pthread_mutex_unlock(pthread_mutex_t *)
void rb_gc_unregister_address(VALUE *)
Definition: gc.c:7105
int usleep(useconds_t __useconds)
int _fgetc_unlocked_r(struct _reent *, FILE *)
VALUE rb_ary_resurrect(VALUE ary)
Definition: array.c:2251
void ruby_set_inplace_mode(const char *)
Definition: io.c:12872
char * strerror(int)
Definition: strerror.c:11
long sigjmp_buf[32+1+((sizeof(long)+sizeof(sigset_t) - 1)/sizeof(long))]
void rb_objspace_call_finalizer(struct rb_objspace *)
Definition: gc.c:3456
struct RNode NODE
#define ILL_ILLOPC
size_t strspn(const char *, const char *)
VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec)
Definition: vm_backtrace.c:557
double erfc(double)
Definition: erf.c:81
VALUE rb_undefine_finalizer(VALUE)
Definition: gc.c:3206
unsigned long strtoul_l(const char *__restrict__, char **__restrict__, int, locale_t __loc)
int char char int int int _vdprintf_r(struct _reent *, int, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
int ffsl(long) __attribute__((__const__))
int issetugid(void)
VALUE rb_str_plus(VALUE, VALUE)
Definition: string.c:1894
void __chk_fail(void) __attribute__((__noreturn__))
VALUE rb_id2str(ID)
Definition: symbol.c:795
float lgammaf_r(float, int *)
VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv, rb_enumerator_size_func *size_fn, VALUE beg, VALUE end, VALUE step, int excl)
Definition: enumerator.c:3308
VALUE rb_str_export_locale(VALUE)
Definition: string.c:1129
#define rb_str_buf_new2
VALUE rb_obj_is_method(VALUE)
Definition: proc.c:1459
long double atan2l(long double, long double)
VALUE(* mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *)
#define RSTRUCT_EMBED_LEN_MAX
int _fprintf_r(struct _reent *, FILE *__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
st_table * rb_st_init_strtable(void)
union sigval sigval_t
VALUE rb_float_pow(VALUE x, VALUE y)
Definition: numeric.c:1298
void rb_objspace_each_objects_without_setup(int(*callback)(void *, void *, size_t, void *), void *data)
VALUE VALUE rb_str_vcatf(VALUE, const char *, va_list)
Definition: sprintf.c:1210
int int int printf(const char *__restrict__,...) __attribute__((__format__(__printf__
VALUE rb_big_rshift(VALUE, VALUE)
Definition: bignum.c:6651
#define bcopy(src, dst, len)
long double ceill(long double)
void rb_clear_constant_cache(void)
Definition: vm_method.c:87
long rb_reg_search0(VALUE, VALUE, long, int, int)
Definition: re.c:1538
long unsigned int __uintptr_t
void ruby_vm_at_exit(void(*func)(ruby_vm_t *))
Definition: vm.c:623
int __isnanf(float)
char ruby_check_sizeof_long_long[8==sizeof(long long) ? 1 :-1]
void rb_p(VALUE)
Definition: io.c:7802
void rb_gc_mark_machine_stack(const rb_execution_context_t *ec)
Definition: gc.c:4997
int setgroups(int ngroups, const gid_t *grouplist)
__uint32_t __dev_t
int int int int int int int int char char int int int int int iscanf(const char *,...) __attribute__((__format__(__scanf__
#define FPE_FLTINV
VALUE rb_ident_hash_new(void)
Definition: hash.c:4278
int clock_getres(clockid_t clock_id, struct timespec *res)
Definition: win32.c:4682
VALUE rb_obj_is_proc(VALUE)
Definition: proc.c:152
VALUE rb_thread_run(VALUE)
Definition: thread.c:2586
st_index_t rb_memhash(const void *ptr, long len)
Definition: random.c:1444
size_t rb_obj_gc_flags(VALUE, ID[], size_t)
VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n)
Definition: vm_backtrace.c:714
int rb_block_arity(void)
Definition: proc.c:1144
int _putchar_r(struct _reent *, int)
int pthread_setschedparam(pthread_t, int, const struct sched_param *)
void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src)
Definition: vm_method.c:451
int strcoll(const char *, const char *)
VALUE rb_hash_set_pair(VALUE hash, VALUE pair)
Definition: hash.c:3332
int __int32_t
int pause(void)
#define rb_str_new(str, len)
float log2f(float)
void rb_add_refined_method_entry(VALUE refined_class, ID mid)
Definition: vm_method.c:491
int unlockpt(int)
int _ungetc_r(struct _reent *, int, FILE *)
int sigignore(int)
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
Definition: iseq.c:2939
VALUE rb_block_call_kw(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE, int)
Definition: vm_eval.c:1484
st_table * rb_st_init_table_with_size(const struct st_hash_type *, st_index_t)
VALUE rb_ary_last(int, const VALUE *, VALUE)
Definition: array.c:1677
const rb_iseq_t const int miss_argc
int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag)
Definition: variable.c:2078
VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec)
Definition: eval.c:1852
VALUE rb_find_file_safe(VALUE, int)
Definition: file.c:6390
long long int llrint(double)
#define rb_str_buf_cat
void rb_fd_init(rb_fdset_t *)
VALUE rb_str_format(int, const VALUE *, VALUE)
Definition: sprintf.c:204
int sigismember(const sigset_t *, int)
__intptr_t intptr_t
int pthread_attr_setstacksize(pthread_attr_t *, size_t)
void rb_gvar_marker_t(VALUE *var)
VALUE rb_check_funcall(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:505
VALUE rb_io_ungetc(VALUE, VALUE)
Definition: io.c:4319
int rb_enc_set_dummy(int index)
Definition: encoding.c:393
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE)
Definition: file.c:3707
void rb_ary_modify(VALUE)
Definition: array.c:548
char ruby_check_sizeof_voidp[8==sizeof(void *) ? 1 :-1]
void rb_reset_random_seed(void)
Definition: random.c:1502
VALUE rb_int_pow(VALUE x, VALUE y)
Definition: numeric.c:4111
int sched_getaffinity(pid_t, size_t, cpu_set_t *)
int pthread_setcancelstate(int, int *)
#define ROBJECT_EMBED
const rb_callable_method_entry_t * me
long _lrand48_r(struct _reent *)
void rb_vm_bugreport(const void *)
Definition: vm_dump.c:918
struct rb_at_exit_list rb_at_exit_list
void _pthread_cleanup_pop(int execute)
int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *)
VALUE rb_hash_rehash(VALUE hash)
Definition: hash.c:1958
pthread_cond_t rb_nativethread_cond_t
VALUE rb_complex_new_polar(VALUE abs, VALUE arg)
Definition: complex.c:1533
int char char int int int int int int int int int int int int int _vsiscanf_r(struct _reent *, const char *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
int rb_is_instance_name(VALUE name)
Definition: symbol.c:1062
void rb_deprecate_constant(VALUE mod, const char *name)
Definition: variable.c:2958
int pthread_rwlockattr_init(pthread_rwlockattr_t *)
char * __stpcpy_chk(char *, const char *, size_t)
void rb_gc_mark_global_tbl(void)
Definition: variable.c:434
int _fgetc_r(struct _reent *, FILE *)
void rb_mark_generic_ivar(VALUE)
Definition: variable.c:973
int putenv(char *__string)
int getc(FILE *)
VALUE rb_float_numerator(VALUE x)
Definition: rational.c:2093
pthread_t pthread_self(void)
int sigemptyset(sigset_t *)
unsigned short * seed48(unsigned short[3])
const rb_iseq_t * rb_proc_get_iseq(VALUE proc, int *is_proc)
Definition: proc.c:1194
VALUE rb_method_call(int, const VALUE *, VALUE)
Definition: proc.c:2273
VALUE rb_detach_process(pid_t pid)
VALUE rb_fiber_current(void)
Definition: cont.c:1956
size_t rb_absint_size(VALUE val, int *nlz_bits_ret)
Definition: bignum.c:3247
_sig_func_ptr _signal_r(struct _reent *, int, _sig_func_ptr)
void rb_match_busy(VALUE)
Definition: re.c:1295
VALUE rb_complex_arg(VALUE z)
Definition: complex.c:1208
size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
Definition: bignum.c:3382
long double nexttowardl(long double, long double)
VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value)
void encrypt(char *__block, int __edflag)
VALUE rb_check_symbol(volatile VALUE *namep)
Definition: symbol.c:952
struct __pthread_spinlock_t * pthread_spinlock_t
int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int)
int char * _asniprintf_r(struct _reent *, char *, size_t *, const char *,...) __attribute__((__format__(__printf__
VALUE rb_random_bytes(VALUE rnd, long n)
Definition: random.c:1025
double acos(double)
int int int int int int int int char char int int int int int int int int int char char int int vfiprintf(FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_id2sym(ID)
Definition: symbol.c:776
VALUE rb_str_cat(VALUE, const char *, long)
Definition: string.c:2812
size_t strcspn(const char *, const char *)
void * ruby_xrealloc2(void *, size_t, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2
VALUE rb_filesystem_str_new(const char *, long)
Definition: string.c:1111
void ruby_register_rollback_func_for_ensure(VALUE(*ensure_func)(VALUE), VALUE(*rollback_func)(VALUE))
rb_ast_t * rb_ast_new(void)
Definition: node.c:1235
FILE * _fdopen_r(struct _reent *, int, const char *)
int rb_absint_singlebit_p(VALUE val)
Definition: bignum.c:3446
VALUE rb_io_gets(VALUE)
Definition: io.c:3577
int unsetenv(const char *)
#define SI_QUEUE
VALUE rb_locale_str_new(const char *, long)
Definition: string.c:1099
char * strrchr(const char *, int)
Definition: strchr.c:20
float infinityf(void)
float roundf(float)
VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
Definition: bignum.c:3633
const char * rb_id2name(ID)
Definition: symbol.c:801
pid_t tcgetpgrp(int __fildes)
int rename(const char *, const char *)
int rb_thread_to_be_killed(VALUE thread)
Definition: thread.c:2471
long unsigned int __uint_least64_t
_Bool mjit_enabled
Definition: mjit_worker.c:177
int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *)
VALUE rb_math_cos(VALUE)
float j0f(float)
void rb_backtrace_print_as_bugreport(void)
Definition: vm_backtrace.c:813
void __cygwin_lock_init_recursive(_LOCK_T *)
struct __pthread_rwlockattr_t * pthread_rwlockattr_t
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *)
void sincosf(float, float *, float *)
void setbuf(FILE *__restrict__, char *__restrict__)
int seteuid(uid_t __uid)
unsigned char __uint_least8_t
VALUE rb_fix2str(VALUE, int)
Definition: numeric.c:3513
VALUE rb_proc_dup(VALUE self)
Definition: vm.c:920
@ block_handler_type_ifunc
@ block_handler_type_proc
@ block_handler_type_symbol
@ block_handler_type_iseq
__int_least32_t int_least32_t
void rb_gvar_setter_t(VALUE val, ID id, VALUE *data)
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *)
_Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname)
void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column)
Definition: iseq.c:1076
VALUE rb_thread_main(void)
Definition: thread.c:2696
double infinity(void)
char * strpbrk(const char *, const char *)
VALUE rb_hash_has_key(VALUE hash, VALUE key)
Definition: hash.c:3507
int timer_gettime(timer_t timerid, struct itimerspec *value)
VALUE rb_int2str(VALUE num, int base)
Definition: numeric.c:3567
#define strncpy(dst, src, len)
int sched_setscheduler(pid_t __pid, int __policy, const struct sched_param *__param)
void rb_maygvl_fd_fix_cloexec(int fd)
Definition: io.c:245
void rb_big_2comp(VALUE)
Definition: bignum.c:3049
int pthread_spin_trylock(pthread_spinlock_t *)
VALUE rb_iseq_label(const rb_iseq_t *iseq)
Definition: iseq.c:1045
int fileno_unlocked(FILE *)
VALUE rb_f_untrace_var(int, const VALUE *)
Definition: variable.c:574
VALUE rb_cEncodingConverter
Definition: transcode.c:25
static const VALUE int int int int int int VALUE char int varc
int on_exit(void(*__func)(int, void *), void *__arg)
int __sched_getaffinity_sys(pid_t, size_t, cpu_set_t *)
char * ttyname(int __fildes)
int const VALUE VALUE int call_status
int char char int int int int int int int int int _viscanf_r(struct _reent *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
VALUE rb_binding_alloc(VALUE klass)
Definition: proc.c:331
static const VALUE int int int int int f_hash
void rb_vm_at_exit_func(struct rb_vm_struct *)
__uintptr_t u_register_t
int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg)
long double strtold(const char *__restrict__, char **__restrict__)
int fprintf(FILE *__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v)
Definition: debug.c:96
float scalblnf(float, long int)
long double expm1l(long double)
void rb_ary_set_len(VALUE, long)
Definition: array.c:1932
long double frexpl(long double, int *)
void setbuffer(FILE *, char *, int)
const char size_t n
#define rb_usascii_str_new(str, len)
int pthread_rwlock_clockwrlock(pthread_rwlock_t *, clockid_t, const struct timespec *)
double exp10(double)
const char *const char ruby_exec_prefix[]
Definition: loadpath.c:59
VALUE rb_big_gt(VALUE x, VALUE y)
Definition: bignum.c:5489
unsigned long rb_big2ulong(VALUE)
Definition: bignum.c:5125
double trunc(double)
VALUE rb_float_equal(VALUE x, VALUE y)
Definition: numeric.c:1383
int char char int int int int int int _vfprintf_r(struct _reent *, FILE *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
#define rb_exc_new_cstr(klass, ptr)
lldiv_t lldiv(long long __numer, long long __denom)
#define basename
VALUE rb_sym_all_symbols(void)
Definition: symbol.c:840
int __swbuf_r(struct _reent *, int, FILE *)
#define rb_secure(level)
__int_least64_t int_least64_t
int mkstemp(char *)
char * rb_string_value_ptr(volatile VALUE *)
Definition: string.c:2186
struct __pthread_rwlock_t * pthread_rwlock_t
VALUE rb_proc_call_with_block(VALUE, int argc, const VALUE *argv, VALUE)
Definition: proc.c:1000
const char * rb_type_str(enum ruby_value_type type)
Definition: vm_eval.c:572
void ruby_set_debug_option(const char *str)
Definition: debug.c:226
int pipe(int __fildes[2])
__intptr_t register_t
double sinh(double)
Definition: math.c:256
st_index_t rb_hash_start(st_index_t)
Definition: random.c:1438
void psignal(int, const char *)
VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE *, const rb_callable_method_entry_t *, int kw_splat)
Definition: vm_eval.c:46
void rb_thread_sleep_forever(void)
Definition: thread.c:1313
void rb_enc_set_base(const char *name, const char *orig)
Definition: encoding.c:382
int ruby_brace_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2659
void rb_define_variable(const char *, VALUE *)
Definition: variable.c:499
VALUE rb_io_write(VALUE, VALUE)
Definition: io.c:1804
float ynf(int, float)
int pthread_attr_setguardsize(pthread_attr_t *, size_t)
VALUE rb_io_flush_raw(VALUE, int)
Definition: io.c:1864
int getw(FILE *)
rb_execution_context_t * ruby_current_execution_context_ptr
Definition: vm.c:373
VALUE rb_str_export(VALUE)
Definition: string.c:1123
@ ruby_error_stackfatal
@ ruby_special_error_count
@ ruby_error_stream_closed
VALUE rb_obj_instance_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2029
VALUE rb_big_ge(VALUE x, VALUE y)
Definition: bignum.c:5495
gid_t getgid(void)
Definition: win32.c:2809
int pthread_attr_getinheritsched(const pthread_attr_t *, int *)
int rb_path_check(const char *)
Definition: file.c:6229
void Init_vm_backtrace(void)
size_t fread_unlocked(void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *)
int fchown(int __fildes, uid_t __owner, gid_t __group)
struct tm * gmtime(const time_t *_timer)
int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned)
VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp)
Definition: vm.c:953
VALUE rb_hash_key_str(VALUE)
Definition: hash.c:2802
VALUE rb_rational_raw(VALUE, VALUE)
Definition: rational.c:1951
int char char int int int int int int int int int int int int int int _vsniprintf_r(struct _reent *, char *, size_t, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
pid_t rb_spawn(int, const VALUE *)
Definition: process.c:4476
int FILE * fmemopen(void *__restrict__, size_t, const char *__restrict__)
int __fpclassifyd(double)
void rb_define_global_const(const char *, VALUE)
Definition: variable.c:2903
long _mrand48_r(struct _reent *)
size_t strftime(char *__restrict__ _s, size_t _maxsize, const char *__restrict__ _fmt, const struct tm *__restrict__ _t)
int setreuid(uid_t __ruid, uid_t __euid)
ssize_t readlinkat(int __dirfd1, const char *__restrict__ __path, char *__restrict__ __buf, size_t __buflen)
int _printf_r(struct _reent *, const char *__restrict__,...) __attribute__((__format__(__printf__
void * rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__((alloc_size(2)))
Definition: gc.c:10278
int rb_require_internal(VALUE fname)
Definition: load.c:1110
VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef)
Definition: variable.c:1035
float acosf(float)
int int int int int int int int char char int int int int int int int int int vasiprintf(char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
long _ftell_r(struct _reent *, FILE *)
int ruby_snprintf(char *str, size_t n, char const *fmt,...) __attribute__((format(printf
VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
Definition: compile.c:11376
static const VALUE int int int int f_var
void rb_str_set_len(VALUE, long)
Definition: string.c:2692
int rb_respond_to(VALUE, ID)
Definition: vm_method.c:2207
int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *)
VALUE rb_mod_module_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:2069
const char const char *typedef unsigned long VALUE
double rb_genrand_real(void)
Definition: random.c:126
int rb_env_path_tainted(void)
Definition: hash.c:4904
VALUE rb_ary_push(VALUE, VALUE)
Definition: array.c:1195
void _longjmp(jmp_buf, int) __attribute__((__noreturn__))
void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
Definition: vm.c:2678
int int int int int int asprintf(char **__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
int rb_remove_event_hook(rb_event_hook_func_t func)
Definition: vm_trace.c:262
VALUE rb_big_aref(VALUE x, VALUE y)
Definition: bignum.c:6681
struct native_thread_data_struct native_thread_data_t
VALUE rb_ary_join(VALUE, VALUE)
Definition: array.c:2347
int rb_obj_method_arity(VALUE, ID)
Definition: proc.c:2652
long double remainderl(long double, long double)
int __int_least32_t
VALUE rb_math_atan2(VALUE, VALUE)
void rb_ary_detransient(VALUE a)
Definition: array.c:408
__uintmax_t uintmax_t
VALUE rb_io_ascii8bit_binmode(VALUE)
Definition: io.c:5384
VALUE rb_str_replace(VALUE, VALUE)
Definition: string.c:5363
VALUE rb_thread_wakeup(VALUE)
Definition: thread.c:2539
void ruby_finalize(void)
Runs the VM finalization processes.
Definition: eval.c:163
VALUE rb_int_uminus(VALUE num)
Definition: numeric.c:3484
void * realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
VALUE rb_ary_shared_with_p(VALUE, VALUE)
Definition: array.c:661
VALUE rb_math_sinh(VALUE)
int sigqueue(pid_t, int, const union sigval)
void _lcong48_r(struct _reent *, unsigned short[7])
VALUE rb_cRubyVM
Definition: vm.c:365
int getentropy(void *, size_t)
double erand48(unsigned short[3])
void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts)
Definition: vm_method.c:232
VALUE rb_current_receiver(void)
Definition: vm_eval.c:314
struct rb_callable_method_entry_struct rb_callable_method_entry_t
st_table * rb_st_init_strtable_with_size(st_index_t)
VALUE rb_autoload_at_p(VALUE, ID, int)
Definition: variable.c:2291
struct rb_thread_list_struct rb_thread_list_t
void _reclaim_reent(struct _reent *)
int rb_st_get_key(st_table *, st_data_t, st_data_t *)
int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t)
@ POSTPONED_JOB_INTERRUPT_MASK
@ TIMER_INTERRUPT_MASK
@ PENDING_INTERRUPT_MASK
VALUE rb_str_substr(VALUE, long, long)
Definition: string.c:2584
VALUE rb_float_mul(VALUE x, VALUE y)
Definition: numeric.c:1072
void rb_hook_list_free(rb_hook_list_t *hooks)
Definition: vm_trace.c:66
size_t rb_gc_stat(VALUE)
Definition: gc.c:9190
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos)
Definition: re.c:3340
__inline__ const void *__restrict__ src
VALUE rb_cv_get(VALUE, const char *)
Definition: variable.c:3149
VALUE rb_thread_shield_new(void)
Definition: thread.c:4789
int rb_local_defined(ID, const struct rb_iseq_struct *)
VALUE rb_sym2str(VALUE)
Definition: symbol.c:784
void rb_str_free(VALUE)
Definition: string.c:1349
void __assert(const char *, int, const char *) __attribute__((__noreturn__))
void * sbrk(ptrdiff_t __incr)
pid_t rb_spawn_err(int, const VALUE *, char *, size_t)
Definition: process.c:4470
int getpagesize(void)
__uint16_t __sa_family_t
void rb_str_modify(VALUE)
Definition: string.c:2114
rb_control_frame_t struct rb_calling_info const struct rb_call_info * ci
__pid_t pid_t
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v)
Definition: thread.c:1756
size_t strlcat(char *, const char *, size_t)
Definition: strlcat.c:31
VALUE rb_int_equal(VALUE x, VALUE y)
Definition: numeric.c:4168
int pselect(int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set)
int fclose(FILE *)
void rb_update_max_fd(int fd)
Definition: io.c:218
rb_control_frame_t * reg_cfp
int rb_vm_get_sourceline(const rb_control_frame_t *)
Definition: vm_backtrace.c:68
int ilogbf(float)
VALUE rb_big_mul(VALUE, VALUE)
Definition: bignum.c:5933
int ruby_vm_destruct(ruby_vm_t *vm)
Definition: vm.c:2329
size_t strlcpy(char *, const char *, size_t)
Definition: strlcpy.c:29
VALUE rb_ary_concat(VALUE, VALUE)
Definition: array.c:4069
VALUE rb_hash_lookup2(VALUE, VALUE, VALUE)
Definition: hash.c:2050
VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc)
Definition: proc.c:735
void ruby_init_setproctitle(int argc, char *argv[])
void * rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10210
double pow10(double)
char * __ssp_real_fgets_unlocked(char *__restrict__ __buf, int __len, FILE *__fp) __asm__("" "fgets_unlocked")
VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2982
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp)
Definition: vm.c:2206
const rb_iseq_t const char const VALUE keys
VALUE rb_time_new(time_t, long)
Definition: time.c:2506
int _mblen_r(struct _reent *, const char *, size_t, _mbstate_t *)
VALUE rb_str_buf_new(long)
Definition: string.c:1315
int int int int int int int int char * asniprintf(char *, size_t *, const char *,...) __attribute__((__format__(__printf__
double modf(double, double *)
intmax_t imaxabs(intmax_t)
#define ferror_unlocked(p)
VALUE rb_iseq_base_label(const rb_iseq_t *iseq)
Definition: iseq.c:1051
#define rb_sym_intern_ascii_cstr(ptr)
int rb_gc_for_fd(int err)
Definition: io.c:953
union iseq_inline_storage_entry * ISE
const signed char ruby_digit36_to_number_table[]
Definition: escape.c:6
VALUE rb_check_string_type(VALUE)
Definition: string.c:2314
VALUE rb_big_mul_gmp(VALUE x, VALUE y)
VALUE rb_float_plus(VALUE x, VALUE y)
Definition: numeric.c:1024
() void(cc->call !=vm_call_general)
void rb_free_method_entry(const rb_method_entry_t *me)
Definition: vm_method.c:174
long int lround(double)
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th)
Definition: thread.c:1750
VALUE rb_mutex_trylock(VALUE mutex)
Definition: thread_sync.c:203
rb_iseq_t * rb_iseq_new(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type)
Definition: iseq.c:761
VALUE rb_mutex_locked_p(VALUE mutex)
Definition: thread_sync.c:177
int char char int int int int int int int int _viprintf_r(struct _reent *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_big_eq(VALUE, VALUE)
Definition: bignum.c:5524
void * calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1
int strcoll_l(const char *, const char *, locale_t)
VALUE rb_int_positive_pow(long x, unsigned long y)
Definition: numeric.c:4038
void * __mempcpy_chk(void *, const void *, size_t, size_t)
struct rb_method_entry_struct rb_method_entry_t
VALUE rb_mutex_synchronize(VALUE mutex, VALUE(*func)(VALUE arg), VALUE arg)
Definition: thread_sync.c:522
struct timespec rb_time_timespec(VALUE time)
Definition: time.c:2706
void rb_ast_free(rb_ast_t *)
Definition: node.c:1352
struct __mcontext mcontext_t
VALUE rb_str_resurrect(VALUE str)
Definition: string.c:1522
VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2123
VALUE rb_str_inspect(VALUE)
Definition: string.c:5930
const struct rb_builtin_function * RB_BUILTIN
_Bool rb_reg_start_with_p(VALUE re, VALUE str)
Definition: re.c:1626
rb_gvar_setter_t rb_gvar_val_setter
int int int int int vsscanf(const char *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__scanf__
VALUE rb_big_bit_length(VALUE big)
Definition: bignum.c:6790
int pthread_rwlock_destroy(pthread_rwlock_t *)
pid_t rb_fork_ruby(int *status)
double atof(const char *__nptr)
pid_t getpgid(pid_t)
int rb_objspace_marked_object_p(VALUE obj)
Definition: gc.c:5238
int futimens(int, const struct timespec[2])
VALUE rb_obj_is_fiber(VALUE)
Definition: cont.c:1040
@ METHOD_VISI_PROTECTED
void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1))) __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__))
return current_class
void * rb_jmpbuf_t[5]
struct _reent * __getreent(void)
VALUE rb_thread_shield_destroy(VALUE self)
Definition: thread.c:4845
VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary)
Definition: enum.c:1568
void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm_dump.c:192
int rb_st_lookup(st_table *, st_data_t, st_data_t *)
__uint_least64_t uint_least64_t
int strncasecmp_l(const char *, const char *, size_t, locale_t)
static const VALUE int int int n_trail
int timingsafe_memcmp(const void *, const void *, size_t)
unsigned long long rb_big2ull(VALUE)
int rb_ec_stack_check(rb_execution_context_t *ec)
Definition: gc.c:4681
int fchmod(int __fd, mode_t __mode)
#define rb_float_new(d)
int pthread_setconcurrency(int)
void _pthread_cleanup_push(__pthread_cleanup_handler *handler)
int rb_const_defined_at(VALUE, ID)
Definition: variable.c:2692
VALUE rb_filesystem_str_new_cstr(const char *)
Definition: string.c:1117
rb_method_entry_t * rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex)
Definition: vm_method.c:714
VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:1050
ssize_t getline(char **, size_t *, FILE *)
struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t
VALUE rb_obj_id(VALUE)
Definition: gc.c:3786
ssize_t __getline(char **, size_t *, FILE *)
void rb_last_status_clear(void)
Definition: process.c:582
VALUE rb_sym_to_s(VALUE)
Definition: string.c:10793
int pthread_condattr_destroy(pthread_condattr_t *)
void typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
float fminf(float, float)
int pthread_setcanceltype(int, int *)
#define isinf(__x)
int isinff(float)
static const VALUE int int int int int int f_block
VALUE rb_cstr_to_inum(const char *, int, int)
Definition: bignum.c:4012
#define rb_str_buf_new_cstr(str)
void rb_st_cleanup_safe(st_table *, st_data_t)
const rb_iseq_t * rb_iseq_ibf_load_bytes(const char *cstr, size_t)
Definition: compile.c:11614
const VALUE *pid_t rb_waitpid(pid_t pid, int *status, int flags)
st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size)
long double rintl(long double)
VALUE rb_hash_dup(VALUE)
Definition: hash.c:1564
int rb_vm_check_optimizable_mid(VALUE mid)
Definition: vm.c:1581
size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
long rb_str_strlen(VALUE)
Definition: string.c:1829
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
struct __pthread_barrierattr_t * pthread_barrierattr_t
void rb_cvar_set(VALUE, ID, VALUE)
Definition: variable.c:3085
VALUE rb_flo_div_flo(VALUE x, VALUE y)
Definition: numeric.c:1110
struct rb_ast_body_struct rb_ast_body_t
VALUE rb_parser_end_seen_p(VALUE)
Definition: ripper.c:20084
int char char int int int int int int int int int int int int int int int _vsnprintf_r(struct _reent *, char *__restrict__, size_t, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:1032
signed long rb_snum_t
void rb_gc_writebarrier_unprotect(VALUE obj)
Definition: gc.c:6854
double tgamma(double)
Definition: tgamma.c:66
char * get_current_dir_name(void)
#define rb_usascii_str_new_cstr(str)
int pthread_sigqueue(pthread_t *, int, const union sigval)
VALUE rb_catch(const char *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2290
uint32_t i
void rb_execarg_setenv(VALUE execarg_obj, VALUE env)
Definition: process.c:2674
int ruby_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2519
#define BUS_ADRALN
struct _reent *const _global_impure_ptr
int pthread_attr_getscope(const pthread_attr_t *, int *)
VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info)
Definition: proc.c:1360
#define memcpy(dst, src, len)
rb_gvar_marker_t rb_gvar_undef_marker
__int32_t int32_t
VALUE rb_thread_stop(void)
Definition: thread.c:2595
int timingsafe_bcmp(const void *, const void *, size_t)
VALUE rb_insns_name_array(void)
Definition: compile.c:8766
double y0(double)
int _putchar_unlocked_r(struct _reent *, int)
int rand_r(unsigned *__seed)
char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) *2+3]
#define char
int fchdir(int __fildes)
int setpgid(pid_t __pid, pid_t __pgid)
VALUE rb_complex_new(VALUE, VALUE)
Definition: complex.c:1527
void tzset(void)
const rb_callable_method_entry_t * rb_callable_method_entry(VALUE klass, ID id)
Definition: vm_method.c:895
int int int int int int int int char char int int int fiscanf(FILE *, const char *,...) __attribute__((__format__(__scanf__
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int int param_size
int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)
int _fseeko_r(struct _reent *, FILE *, _off_t, int)
rb_iseq_t * rb_iseq_new_main(const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent)
Definition: iseq.c:785
VALUE rb_fstring(VALUE)
Definition: string.c:312
unsigned long ulong
struct rb_vm_struct rb_vm_t
void rb_gc_free_dsymbol(VALUE)
Definition: symbol.c:678
VALUE rb_rational_num(VALUE rat)
Definition: rational.c:1972
int fseek(FILE *, long, int)
__inline__ size_t size_t __n
#define isnan(__x)
#define FPE_FLTSUB
long double fmal(long double, long double, long double)
void * ruby_xmalloc2(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
@ RAISED_STACKOVERFLOW
float tgammaf(float)
long a64l(const char *__input)
int int remove(const char *)
int strncmp(const char *, const char *, size_t)
__ino_t ino_t
VALUE rb_file_open_str(VALUE, const char *)
Definition: io.c:6256
__inline__ const void *__restrict__ size_t len
int fchmodat(int, const char *, mode_t, int)
signed char __int_least8_t
double remquo(double, double, int *)
VALUE rb_uninterruptible(VALUE(*b_proc)(VALUE), VALUE data)
Definition: thread.c:5553
void * pthread_getspecific(pthread_key_t)
_off64_t __loff_t
int int _putc_r(struct _reent *, int, FILE *)
static const VALUE int int int int int int VALUE char * fmt
VALUE rb_int_cmp(VALUE x, VALUE y)
Definition: numeric.c:4217
VALUE rb_utf8_str_new_static(const char *, long)
Definition: string.c:884
double log1p(double)
__uint64_t uint64_t
int pthread_key_create(pthread_key_t *, void(*)(void *))
int sched_get_thread_affinity(void *, size_t, cpu_set_t *)
void rb_hash_bulk_insert(long, const VALUE *, VALUE)
Definition: hash.c:4590
struct rb_method_iseq_struct rb_method_iseq_t
VALUE rb_rational_floor(VALUE self, int ndigits)
Definition: rational.c:1415
int pthread_attr_getdetachstate(const pthread_attr_t *, int *)
int sigrelse(int)
_LOCK_T _flock_t
VALUE rb_gvar_defined(struct rb_global_entry *)
Definition: variable.c:695
void rb_objspace_reachable_objects_from(VALUE obj, void(func)(VALUE, void *), void *data)
Definition: gc.c:9481
int rb_cloexec_open(const char *pathname, int flags, mode_t mode)
Definition: io.c:292
size_t _fread_unlocked_r(struct _reent *, void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
struct rb_code_position_struct rb_code_position_t
double ruby_float_mod(double x, double y)
Definition: numeric.c:1207
double cos(double)
int ruby_fill_random_bytes(void *, size_t, int)
Definition: random.c:438
int pthread_rwlock_rdlock(pthread_rwlock_t *)
struct __pthread_attr_t * pthread_attr_t
long double strtold_l(const char *__restrict__, char **__restrict__, locale_t)
void ruby_debug_gc_check_func(void)
VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj, int argc, const VALUE *argv, int priv)
Definition: vm_eval.c:772
VALUE rb_enumeratorize_with_size_kw(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *, int)
Definition: enumerator.c:537
void rb_define_protected_method(VALUE, const char *, VALUE(*)(), int)
int pthread_attr_getschedpolicy(const pthread_attr_t *, int *)
int lstat(const char *__restrict__ __path, struct stat *__restrict__ __buf)
VALUE rb_io_flush(VALUE)
Definition: io.c:1903
intmax_t _strtoimax_r(struct _reent *, const char *__restrict__, char **__restrict__, int)
VALUE rb_class_path(VALUE)
Definition: variable.c:153
char * getpass(const char *__prompt)
int sigwaitinfo(const sigset_t *, siginfo_t *)
int _fcloseall_r(struct _reent *)
int ftruncate(int __fd, off_t __length)
float jnf(int, float)
VALUE rb_str_tmp_frozen_acquire(VALUE str)
Definition: string.c:1210
VALUE rb_iterate(VALUE(*)(VALUE), VALUE, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1444
VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash)
Definition: process.c:2307
const char * rb_obj_classname(VALUE)
Definition: variable.c:289
int pthread_setschedprio(pthread_t, int)
VALUE rb_float_denominator(VALUE x)
Definition: rational.c:2116
struct __pthread_condattr_t * pthread_condattr_t
unsigned char ar_hint_t
while(!(((VALUE)(klass) &(VALUE)~((VALUE) RUBY_Qnil))==0))
VALUE rb_getlogin(void)
VALUE rb_objspace_gc_disable(struct rb_objspace *)
Definition: gc.c:9269
VALUE rb_ary_delete(VALUE, VALUE)
Definition: array.c:3365
const char ruby_null_device[]
Definition: file.c:6450
VALUE rb_iseq_coverage(const rb_iseq_t *iseq)
Definition: iseq.c:1086
void rb_encdb_set_unicode(int index)
Definition: encoding.c:576
unsigned long vm_offset_t
void Init_ext(void)
Definition: dmyext.c:2
_Bool rb_gvar_is_traced(const struct rb_global_entry *)
Definition: variable.c:714
double fmax(double, double)
rb_gvar_setter_t * rb_gvar_setter_function_of(const struct rb_global_entry *)
Definition: variable.c:708
struct st_table * rb_hash_tbl_raw(VALUE hash)
Definition: hash.c:1594
double drem(double, double)
void ruby_script(const char *name)
Sets the current script name to this value.
Definition: ruby.c:2302
void rb_gc(void)
Definition: gc.c:8695
VALUE rb_iseqw_new(const rb_iseq_t *iseq)
Definition: iseq.c:1157
void rb_ast_add_mark_object(rb_ast_t *, VALUE)
Definition: node.c:1393
void rb_threadptr_signal_raise(rb_thread_t *th, int sig)
Definition: thread.c:2323
void rb_global_variable(VALUE *)
Definition: gc.c:7128
int pthread_mutex_trylock(pthread_mutex_t *)
VALUE rb_fs
Definition: intern.h:583
float modff(float, float *)
VALUE rb_public_const_get_at(VALUE klass, ID id)
Definition: variable.c:2409
VALUE rb_float_eql(VALUE x, VALUE y)
Definition: numeric.c:1654
ssize_t __ssp_real_readlink(const char *__restrict__ __path, char *__restrict__ __buf, size_t __len) __asm__("" "readlink")
int pthread_getcpuclockid(pthread_t, clockid_t *)
struct rb_const_entry_struct rb_const_entry_t
VALUE rb_thread_create(VALUE(*)(void *), void *)
Definition: thread.c:965
int _setenv_r(struct _reent *, const char *__string, const char *__value, int __overwrite)
VALUE rb_block_proc(void)
Definition: proc.c:837
VALUE rb_ary_sort_bang(VALUE)
Definition: array.c:2777
VALUE rb_path_to_class(VALUE)
Definition: variable.c:226
int _getc_r(struct _reent *, FILE *)
VALUE rb_iseq_ibf_load_extra_data(VALUE str)
Definition: compile.c:11628
VALUE rb_stderr
VALUE rb_int_and(VALUE x, VALUE y)
Definition: numeric.c:4472
char * canonicalize_file_name(const char *)
VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5109
int dup2(int __fildes, int __fildes2)
Definition: dup2.c:27
long int lrint(double)
int int _siprintf_r(struct _reent *, char *, const char *,...) __attribute__((__format__(__printf__
__fd_mask fd_mask
void rb_ast_mark(rb_ast_t *)
Definition: node.c:1340
size_t rb_generic_ivar_memsize(VALUE)
Definition: variable.c:1010
unsigned long vm_size_t
VALUE rb_reg_match_pre(VALUE)
Definition: re.c:1757
void * rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10189
__blkcnt_t blkcnt_t
VALUE rb_to_symbol_type(VALUE obj)
Definition: symbol.c:1044
VALUE rb_complex_raw(VALUE, VALUE)
Definition: complex.c:1521
int clock_setenable_attr(clockid_t clock_id, int attr)
int lchown(const char *__path, uid_t __owner, gid_t __group)
int unlink(const char *__path)
VALUE rb_iv_set(VALUE, const char *, VALUE)
Definition: variable.c:3318
VALUE rb_mutex_sleep(VALUE self, VALUE timeout)
Definition: thread_sync.c:465
float logbf(float)
VALUE rb_rational_reciprocal(VALUE x)
Definition: rational.c:1887
VALUE rb_obj_is_thread(VALUE obj)
Definition: vm.c:2657
VALUE rb_output_rs
Definition: intern.h:587
__id_t id_t
int pthread_rwlock_tryrdlock(pthread_rwlock_t *)
short int __int_least16_t
long double roundl(long double)
int strcasecmp(const char *, const char *) __attribute__((__pure__))
int fputc_unlocked(int, FILE *)
void rb_fd_copy(rb_fdset_t *, const fd_set *, int)
rb_gvar_setter_t rb_str_setter
#define gets(str)
__intmax_t intmax_t
float hypotf(float, float)
double fmod(double, double)
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int)
void rb_vm_mark(void *ptr)
Definition: vm.c:2243
int rb_backtrace_p(VALUE obj)
Definition: vm_backtrace.c:446
VALUE rb_float_abs(VALUE flt)
Definition: numeric.c:1698
char * rindex(const char *, int) __attribute__((__pure__))
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *)
VALUE * rb_ary_ptr_use_start(VALUE ary)
Definition: array.c:226
int rb_find_file_ext_safe(VALUE *, const char *const *, int)
Definition: file.c:6324
const char * rb_objspace_data_type_name(VALUE obj)
Definition: gc.c:2445
void rb_define_module_function(VALUE, const char *, VALUE(*)(), int)
int rb_file_load_ok(const char *)
Definition: file.c:6283
int _fflush_r(struct _reent *, FILE *)
int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen)
Definition: process.c:3551
long _jrand48_r(struct _reent *, unsigned short[3])
rb_gvar_getter_t rb_gvar_undef_getter
_ssize_t __ssize_t
float fmaf(float, float, float)
VALUE rb_iseq_defined_string(enum defined_type type)
Definition: iseq.c:3033
VALUE rb_rational_abs(VALUE self)
Definition: rational.c:1255
void mjit_child_after_fork(void)
float asinf(float)
VALUE rb_ary_rotate(VALUE, long)
Definition: array.c:2617
unsigned int rb_atomic_t
void setusershell(void)
int fputs_unlocked(const char *__restrict__, FILE *__restrict__)
VALUE rb_const_get_at(VALUE, ID)
Definition: variable.c:2397
int ruby_enable_coredump
Definition: signal.c:1481
int _fputs_r(struct _reent *, const char *__restrict__, FILE *__restrict__)
long double acosl(long double)
void * memccpy(void *__restrict__, const void *__restrict__, int, size_t)
rb_gvar_marker_t rb_gvar_val_marker
float gammaf_r(float, int *)
VALUE rb_hash_new_with_size(st_index_t size)
Definition: hash.c:1529
long double atanl(long double)
VALUE rb_time_succ(VALUE)
Definition: time.c:4243
int char char int int int int int _vfiscanf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
void rb_strterm_mark(VALUE obj)
Definition: ripper.c:768
long double truncl(long double)
int rb_signal_exec(rb_thread_t *th, int sig)
Definition: signal.c:1082
void rb_vm_set_progname(VALUE filename)
Definition: vm.c:3291
VALUE rb_gc_location(VALUE)
Definition: gc.c:8127
int mkdirat(int, const char *, mode_t)
int mkostemps(char *, int, int)
char * utoa(unsigned, char *, int)
#define rb_external_str_new_cstr(str)
VALUE rb_rational_div(VALUE self, VALUE other)
Definition: rational.c:916
VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE)
VALUE rb_dbl_complex_new(double real, double imag)
Creates a Complex object.
Definition: complex.c:1561
VALUE rb_complex_abs(VALUE z)
Definition: complex.c:1161
VALUE rb_complex_real(VALUE z)
Definition: complex.c:726
rb_const_entry_t * rb_const_lookup(VALUE klass, ID id)
Definition: variable.c:3352
int sched_getcpu(void)
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p)
Definition: string.c:5815
int _mkstemps_r(struct _reent *, char *, int)
_off_t __off_t
int revoke(char *__path)
__int64_t sbintime_t
intmax_t strtoimax_l(const char *__restrict__, char **_restrict, int, locale_t)
void mjit_init(const struct mjit_options *opts)
VALUE rb_tainted_str_new(const char *, long)
Definition: string.c:896
VALUE rb_ary_replace(VALUE copy, VALUE orig)
Definition: array.c:3811
VALUE rb_find_file(VALUE)
Definition: file.c:6397
void * rb_load_file(const char *)
Definition: ruby.c:2205
__inline__ const char *__restrict__ __path
int rb_is_class_name(VALUE name)
Definition: symbol.c:1056
__int_least8_t int_least8_t
VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
Definition: bignum.c:4352
int pthread_mutex_destroy(pthread_mutex_t *)
VALUE rb_str_new_with_class(VALUE, const char *, long)
Definition: string.c:1298
void rb_define_const(VALUE, const char *, VALUE)
Definition: variable.c:2891
char * getenv(const char *__string)
VALUE rb_float_uminus(VALUE num)
Definition: numeric.c:1011
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements)
Definition: vm_eval.c:1885
#define vsnprintf(str, len, fmt, ap)
int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *)
int _system_r(struct _reent *, const char *)
__gnuc_va_list va_list
VALUE rb_ary_cmp(VALUE, VALUE)
Definition: array.c:4420
#define long
void rb_st_foreach_safe(struct st_table *, int(*)(st_data_t, st_data_t, st_data_t), st_data_t)
VALUE rb_big_lt(VALUE x, VALUE y)
Definition: bignum.c:5501
int __fpclassifyf(float)
st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never)
void rb_alias(VALUE, ID, ID)
Definition: vm_method.c:1598
long int __int_least64_t
char * strtok_r(char *__restrict__, const char *__restrict__, char **__restrict__)
void rb_define_singleton_method(VALUE, const char *, VALUE(*)(), int)
VALUE rb_str_equal(VALUE str1, VALUE str2)
Definition: string.c:3267
void rb_ary_ptr_use_end(VALUE ary)
Definition: array.c:235
int getlogin_r(char *name, size_t namesize)
float logf(float)
VALUE rb_gcd_gmp(VALUE x, VALUE y)
#define rb_set_safe_level(level)
VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda)
Definition: vm.c:933
VALUE rb_equal_opt(VALUE obj1, VALUE obj2)
_ssize_t __ssp_real_read(int __fd, void *__buf, size_t __len) __asm__("" "read")
short int __int16_t
VALUE rb_gvar_get(struct rb_global_entry *)
Definition: variable.c:619
@ VM_METHOD_TYPE_ATTRSET
@ VM_METHOD_TYPE_CFUNC
@ VM_METHOD_TYPE_OPTIMIZED
@ VM_METHOD_TYPE_REFINED
@ VM_METHOD_TYPE_NOTIMPLEMENTED
@ VM_METHOD_TYPE_MISSING
@ VM_METHOD_TYPE_BMETHOD
@ VM_METHOD_TYPE_ZSUPER
@ VM_METHOD_TYPE_ALIAS
@ VM_METHOD_TYPE_UNDEF
void ruby_gc_set_params(void)
Definition: gc.c:9434
double nexttoward(double, long double)
int pthread_spin_destroy(pthread_spinlock_t *)
void rb_stdio_set_default_encoding(void)
Definition: io.c:11769
VALUE rb_str_to_inum(VALUE, int, int)
Definition: bignum.c:4268
int rb_reg_options(VALUE)
Definition: re.c:3579
void rb_iv_tbl_copy(VALUE dst, VALUE src)
Definition: variable.c:3343
size_t confstr(int __name, char *__buf, size_t __len)
VALUE rb_vm_env_local_variables(const rb_env_t *env)
Definition: vm.c:840
VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self)
Definition: vm_eval.c:1670
int symlinkat(const char *, int, const char *)
size_t __ssp_real_confstr(int __name, char *__buf, size_t __len) __asm__("" "confstr")
void rb_objspace_set_event_hook(const rb_event_flag_t event)
Definition: gc.c:2095
VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t,...)
Definition: struct.c:418
int _fputc_unlocked_r(struct _reent *, int, FILE *)
int pthread_setspecific(pthread_key_t, const void *)
void(* rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass)
int pthread_attr_setinheritsched(pthread_attr_t *, int)
int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp)
Definition: vm.c:2184
VALUE rb_big_remainder(VALUE x, VALUE y)
Definition: bignum.c:6119
VALUE rb_hash_freeze(VALUE)
Definition: hash.c:87
VALUE rb_proc_call_with_block_kw(VALUE, int argc, const VALUE *argv, VALUE, int)
Definition: proc.c:986
VALUE rb_backtrace_to_location_ary(VALUE obj)
Definition: vm_backtrace.c:686
uid_t geteuid(void)
Definition: win32.c:2802
int _iprintf_r(struct _reent *, const char *,...) __attribute__((__format__(__printf__
void rb_vm_check_redefinition_by_prepend(VALUE klass)
Definition: vm.c:1631
double nan(const char *)
Definition: nan.c:7
int sched_setparam(pid_t __pid, const struct sched_param *__param)
int __srget_r(struct _reent *, FILE *)
void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber)
Definition: cont.c:1134
VALUE rb_dbl_complex_new_polar_pi(double abs, double ang)
Definition: complex.c:667
int _getc_unlocked_r(struct _reent *, FILE *)
void rb_ast_update_references(rb_ast_t *)
Definition: node.c:1330
void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_)
Definition: variable.c:412
int pthread_key_delete(pthread_key_t)
VALUE rb_int_lshift(VALUE x, VALUE y)
Definition: numeric.c:4589
int int _iscanf_r(struct _reent *, const char *,...) __attribute__((__format__(__scanf__
VALUE rb_str_upto_each(VALUE, VALUE, int, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4263
double ruby_float_step_size(double beg, double end, double unit, int excl)
Definition: numeric.c:2500
int rb_vm_add_root_module(ID id, VALUE module)
Definition: vm.c:2312
@ OPTIMIZED_METHOD_TYPE_CALL
@ OPTIMIZED_METHOD_TYPE__MAX
@ OPTIMIZED_METHOD_TYPE_BLOCK_CALL
@ OPTIMIZED_METHOD_TYPE_SEND
VALUE rb_big_size_m(VALUE big)
Definition: bignum.c:6784
void rb_thread_terminate_all(void)
Definition: thread.c:554
VALUE rb_str_split(VALUE, const char *)
Definition: string.c:8116
float scalbnf(float, int)
VALUE rb_fiber_new(rb_block_call_func_t, VALUE)
Definition: cont.c:1794
VALUE rb_objspace_gc_enable(struct rb_objspace *)
Definition: gc.c:9232
VALUE rb_file_absolute_path(VALUE, VALUE)
Definition: file.c:4133
__int32_t __blksize_t
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *)
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int)
VALUE rb_to_hash_type(VALUE obj)
Definition: hash.c:1845
VALUE rb_str_times(VALUE, VALUE)
Definition: string.c:1966
const char ruby_digitmap[]
Definition: bignum.c:38
unsigned long u_long
unsigned long long rb_serial_t
int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2)
Definition: vm_method.c:1521
int _putenv_r(struct _reent *, char *__string)
rb_serial_t rb_next_class_serial(void)
Definition: vm.c:358
double copysign(double, double)
long double coshl(long double)
VALUE rb_math_exp(VALUE)
int getpeereid(int, uid_t *, gid_t *)
VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:960
#define clearerr_unlocked(p)
uintmax_t wcstoumax(const wchar_t *__restrict__, wchar_t **__restrict__, int)
VALUE rb_int_powm(int const argc, VALUE *const argv, VALUE const num)
Definition: bignum.c:7112
VALUE rb_ary_sort(VALUE)
Definition: array.c:2866
double atanh(double)
Definition: acosh.c:75
void rb_unblock_function_t(void *)
void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds)
VALUE rb_big_divmod(VALUE, VALUE)
Definition: bignum.c:6135
int int int __snprintf_chk(char *__restrict__, size_t, int, size_t, const char *__restrict__,...) __attribute__((__format__(__printf__
int mknodat(int, const char *, mode_t, dev_t)
long double _strtold_r(struct _reent *, const char *__restrict__, char **__restrict__)
void _exit(int __status) __attribute__((__noreturn__))
mode_t umask(mode_t __mask)
void rb_ary_delete_same(VALUE, VALUE)
Definition: array.c:3396
struct mjit_options mjit_opts
Definition: mjit_worker.c:174
VALUE rb_thread_alloc(VALUE klass)
Definition: vm.c:2758
unsigned int uint
#define RHASH_AR_TABLE_SIZE_MASK
void ruby_set_script_name(VALUE name)
Sets the current script name to this value.
Definition: ruby.c:2315
int pthread_rwlock_timedrdlock(pthread_rwlock_t *, const struct timespec *)
VALUE rb_Complex(VALUE, VALUE)
Definition: complex.c:1545
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp)
#define RSTRING_EMBED_LEN_MAX
int int int int scanf(const char *__restrict__,...) __attribute__((__format__(__scanf__
int pthread_attr_setdetachstate(pthread_attr_t *, int)
VALUE rb_ary_clear(VALUE)
Definition: array.c:3862
int int int int int int int int char char int int int int int int int int int char char int vdiprintf(int, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
const rb_iseq_t * rb_iseqw_to_iseq(VALUE iseqw)
Definition: iseq.c:1350
int pclose(FILE *)
const char * s2
VALUE rb_ary_tmp_new(long)
Definition: array.c:768
long _nrand48_r(struct _reent *, unsigned short[3])
void rb_load_protect(VALUE, int, int *)
Definition: load.c:701
struct _pthread_cleanup_handler __pthread_cleanup_handler
char * suboptarg
int _mkostemps_r(struct _reent *, char *, int, int)
int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t)
VALUE rb_proc_call_kw(VALUE, VALUE, int)
Definition: proc.c:948
#define rb_funcall(recv, mid, argc,...)
void * ruby_options(int argc, char **argv)
Processes command line arguments and compiles the Ruby source to execute.
Definition: eval.c:115
int __sprintf_chk(char *__restrict__, int, size_t, const char *__restrict__,...) __attribute__((__format__(__printf__
struct __pthread_key_t * pthread_key_t
int int int int int int _sprintf_r(struct _reent *, char *__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
VALUE rb_yield_force_blockarg(VALUE values)
Definition: vm_eval.c:1309
char * caddr_t
long int int_fast16_t
int rb_str_comparable(VALUE, VALUE)
Definition: string.c:3203
void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src)
int VALUE v
long long int llroundf(float)
int rb_objspace_markable_object_p(VALUE obj)
Definition: gc.c:3613
#define rb_method_basic_definition_p(klass, mid)
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:533
VALUE rb_ary_new(void)
Definition: array.c:723
void rb_gc_update_tbl_refs(st_table *ptr)
Definition: gc.c:7999
__gid_t gid_t
void longjmp(jmp_buf __jmpb, int __retval) __attribute__((__noreturn__))
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int int int local_size
VALUE rb_cstr_to_rat(const char *, int)
Definition: rational.c:2553
int fexecve(int __fd, char *const __argv[], char *const __envp[])
int int int int char * __gets_chk(char *, size_t)
void rb_thread_atfork_before_exec(void)
Definition: thread.c:4552
VALUE rb_invcmp(VALUE, VALUE)
Definition: compar.c:47
int rb_mod_method_arity(VALUE, ID)
Definition: proc.c:2644
void rb_ivar_foreach(VALUE, int(*)(ID, VALUE, st_data_t), st_data_t)
@ NOT_COMPILED_JIT_ISEQ_FUNC
@ NOT_READY_JIT_ISEQ_FUNC
@ NOT_ADDED_JIT_ISEQ_FUNC
__inline__ const void * __restrict__
void rb_last_status_set(int status, pid_t pid)
ID rb_id_encoding(void)
Definition: encoding.c:759
struct _reent * _impure_ptr
#define rb_scan_args(argc, argvp, fmt,...)
char * mkdtemp(char *)
int pthread_setaffinity_np(pthread_t, size_t, const cpu_set_t *)
__int64_t int64_t
#define RHASH_AR_TABLE_BOUND_MASK
#define RSTRING_FSTR
VALUE rb_math_sin(VALUE)
VALUE rb_io_addstr(VALUE, VALUE)
Definition: io.c:1843
VALUE rb_str2big_normal(VALUE arg, int base, int badcheck)
Definition: bignum.c:4310
double pow(double, double)
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)
Definition: vm_eval.c:539
VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
Definition: compile.c:644
__uint_least16_t uint_least16_t
double acosh(double)
Definition: acosh.c:36
VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr)
Definition: vm_eval.c:2326
unsigned long _strtoul_r(struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
void rb_gc_register_address(VALUE *)
Definition: gc.c:7093
float ceilf(float)
int sighold(int)
VALUE rb_const_get_from(VALUE, ID)
Definition: variable.c:2385
VALUE rb_unnamed_parameters(int arity)
Definition: proc.c:1262
__inline__ void size_t off_t __off
float rintf(float)
int ffs(int) __attribute__((__const__))
Definition: ffs.c:6
VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv, rb_check_funcall_hook *hook, VALUE arg)
Definition: vm_eval.c:565
void rb_gc_verify_internal_consistency(void)
Definition: gc.c:6218
VALUE rb_reg_match(VALUE, VALUE)
Definition: re.c:3180
VALUE rb_complex_mul(VALUE x, VALUE y)
Definition: complex.c:872
int finitel(long double)
__uint32_t __mode_t
VALUE rb_num_coerce_bit(VALUE, VALUE, ID)
Definition: numeric.c:4431
rb_control_frame_t * rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm.c:553
VALUE * rb_ruby_verbose_ptr(void)
Definition: vm.c:3377
void rb_hook_list_mark(rb_hook_list_t *hooks)
Definition: vm_trace.c:53
static const VALUE int n_lead
long long strtoll_l(const char *__restrict__, char **__restrict__, int, locale_t)
float frexpf(float, int *)
float cbrtf(float)
VALUE rb_complex_conjugate(VALUE z)
Definition: complex.c:1254
int rb_reserved_fd_p(int fd)
long long atoll(const char *__nptr)
@ RSTRUCT_TRANSIENT_FLAG
ID rb_intern2(const char *, long)
Definition: symbol.c:653
long double tanhl(long double)
int int int int int int int int char char int int int int int int int int int char char int int int int int int int int FILE * fdopen(int, const char *)
VALUE rb_hash_compare_by_id_p(VALUE hash)
Definition: hash.c:4267
VALUE rb_thread_shield_wait(VALUE self)
Definition: thread.c:4805
long double fabsl(long double)
uintmax_t strtoumax(const char *__restrict__, char **__restrict__, int)
VALUE rb_proc_lambda_p(VALUE)
Definition: proc.c:275
__inline__ int FILE * __fp
const char ruby_initial_load_paths[]
Definition: loadpath.c:62
int rb_public_const_defined_from(VALUE klass, ID id)
Definition: variable.c:2698
VALUE rb_rational_new(VALUE, VALUE)
Definition: rational.c:1957
void * _iconv_t
int pthread_join(pthread_t, void **)
void rb_str_tmp_frozen_release(VALUE str, VALUE tmp)
Definition: string.c:1217
struct rb_ensure_entry rb_ensure_entry_t
int char char int int int int int int int int int int int _vscanf_r(struct _reent *, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__scanf__
long long _atoll_r(struct _reent *, const char *__nptr)
FILE * _fopen_r(struct _reent *, const char *__restrict__, const char *__restrict__)
st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size)
double expm1(double)
#define rb_str_cat_cstr(str, ptr)
double logb(double)
VALUE rb_ary_to_ary(VALUE)
Definition: array.c:1853
#define RSTRING_EMBED_LEN_SHIFT
int ruby_stack_check(void)
Definition: gc.c:4687
VALUE rb_ivar_defined(VALUE, ID)
Definition: variable.c:1317
void rb_gc_adjust_memory_usage(ssize_t)
Definition: gc.c:10333
int daylight __asm__("_daylight")
VALUE rb_float_gt(VALUE x, VALUE y)
Definition: numeric.c:1503
unsigned long ruby_strtoul(const char *str, char **endptr, int base)
Definition: util.c:130
long mrand48(void)
VALUE rb_default_coverage(int)
Definition: thread.c:5518
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)
Definition: vm_eval.c:1501
VALUE rb_string_value(volatile VALUE *)
Definition: string.c:2175
VALUE rb_str_tmp_new(long)
Definition: string.c:1343
void rb_thread_check_ints(void)
Definition: thread.c:1361
void rb_gc_mark(VALUE)
Definition: gc.c:5228
VALUE rb_ary_reverse(VALUE)
Definition: array.c:2544
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
#define rb_intern(str)
int rb_num_negative_p(VALUE)
Definition: numeric.c:313
VALUE rb_big_mul_karatsuba(VALUE x, VALUE y)
Definition: bignum.c:1870
VALUE rb_yield_values2(int n, const VALUE *argv)
Definition: vm_eval.c:1271
const rb_method_entry_t * rb_resolve_me_location(const rb_method_entry_t *, VALUE[5])
Definition: thread.c:5399
VALUE rb_get_path_check_convert(VALUE)
Definition: file.c:211
void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete
rb_serial_t ruby_vm_global_constant_state
Definition: vm.c:380
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc)
Definition: hash.c:2242
VALUE rb_float_ceil(VALUE num, int ndigits)
Definition: numeric.c:2022
int execle(const char *__path, const char *,...)
int pthread_detach(pthread_t)
const VALUE * rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars)
Definition: vm.c:984
double rb_int_fdiv_double(VALUE x, VALUE y)
Definition: numeric.c:3733
void rb_define_readonly_variable(const char *, const VALUE *)
Definition: variable.c:505
double log10(double)
VALUE rb_reg_new(const char *, long, int)
Definition: re.c:2947
int int fscanf(FILE *__restrict__, const char *__restrict__,...) __attribute__((__format__(__scanf__
rb_control_frame_t struct rb_calling_info * calling
int mknod(const char *__path, mode_t __mode, dev_t __dev)
VALUE rb_ary_to_s(VALUE)
Definition: array.c:2453
VALUE rb_ary_at(VALUE, VALUE)
Definition: array.c:1629
short unsigned int wchar_t
VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val)
Definition: proc.c:728
void rb_thread_reset_timer_thread(void)
Definition: thread.c:4424
int char char int int _vdiprintf_r(struct _reent *, int, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_require(const char *)
Definition: load.c:1161
void flockfile(FILE *)
struct rb_scope_visi_struct rb_scope_visibility_t
void rb_iseq_trace_set_all(rb_event_flag_t turnon_events)
Definition: iseq.c:3319
void ruby_show_copyright(void)
Prints the copyright notice of the CRuby interpreter to stdout.
Definition: version.c:138
__uint32_t arc4random_uniform(__uint32_t)
VALUE rb_hash_size(VALUE)
Definition: hash.c:2939
char ** environ
st_index_t st_hash_func(st_data_t)
char * ctime_r(const time_t *, char *)
VALUE rb_ary_subseq(VALUE, long, long)
Definition: array.c:1518
long long __key_t
struct __pthread_barrier_t * pthread_barrier_t
struct tm * localtime(const time_t *_timer)
VALUE rb_integer_float_cmp(VALUE x, VALUE y)
Definition: bignum.c:5325
int isinfl(long double)
char st_check_for_sizeof_st_index_t[8==(int) sizeof(st_index_t) ? 1 :-1]
int chmod(const char *__path, mode_t __mode)
#define RARRAY_EMBED_LEN_SHIFT
void rb_parser_set_options(VALUE, int, int, int, int)
Definition: ripper.c:19838
void rb_autoload_str(VALUE mod, ID id, VALUE file)
Definition: variable.c:1937
int pthread_spin_unlock(pthread_spinlock_t *)
int rb_int_positive_p(VALUE num)
Definition: numeric.c:301
int link(const char *__path1, const char *__path2)
Definition: win32.c:4961
VALUE ID VALUE old
void rb_fd_fix_cloexec(int fd)
Definition: io.c:268
float ldexpf(float, int)
long double erfl(long double)
unsigned short u_short
int _scanf_r(struct _reent *, const char *__restrict__,...) __attribute__((__format__(__scanf__
void rb_write_error(const char *)
Definition: io.c:7934
VALUE rb_getpwdiruid(void)
double floor(double)
VALUE rb_ary_new_capa(long capa)
Definition: array.c:717
size_t mbstowcs(wchar_t *__restrict__, const char *__restrict__, size_t)
__uint64_t __ino_t
unsigned long long _strtoull_r(struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
int pthread_mutex_lock(pthread_mutex_t *)
const rb_iseq_t * iseq
int rb_memcicmp(const void *, const void *, long)
Definition: re.c:80
int pthread_mutexattr_init(pthread_mutexattr_t *)
int getsubopt(char **, char *const *, char **)
VALUE rb_ary_freeze(VALUE)
Definition: array.c:648
void rb_gc_mark_values(long n, const VALUE *values)
Definition: gc.c:4731
long double cosl(long double)
VALUE rb_str_catf(VALUE, const char *,...) __attribute__((format(printf
int isatty(int __fildes)
@ VM_SVAR_FLIPFLOP_START
void RUBY_DATA_FUNC
int pthread_barrierattr_destroy(pthread_barrierattr_t *)
#define ILL_PRVREG
int int int int int int int int char char int int int int int int int int int char char int int int int viprintf(const char *, __gnuc_va_list) __attribute__((__format__(__printf__
int getdomainname(char *__name, size_t __len)
__inline__ char * __buf
void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th)
Definition: thread.c:537
VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt)
Definition: process.c:2661
float acoshf(float)
char * strchr(const char *, int)
Definition: strchr.c:8
VALUE rb_node_case_when_optimizable_literal(const NODE *const node)
Definition: compile.c:4284
VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func)
Definition: hash.c:3910
#define FPE_FLTUND
int rb_symname_p(const char *)
Definition: symbol.c:182
VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat)
Definition: vm_eval.c:1277
VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p)
pid_t fork(void)
void rb_call_end_proc(VALUE data)
Definition: eval_jump.c:11
char * strupr(char *)
VALUE rb_obj_remove_instance_variable(VALUE, VALUE)
Definition: variable.c:1634
VALUE rb_const_source_location_at(VALUE, ID)
Definition: variable.c:2467
VALUE rb_str_new_static(const char *, long)
Definition: string.c:872
VALUE rb_big_unpack(unsigned long *buf, long num_longs)
Definition: bignum.c:3223
int pthread_condattr_setpshared(pthread_condattr_t *, int)
VALUE rb_cvar_get(VALUE, ID)
Definition: variable.c:3107
void rb_obj_info_dump(VALUE obj)
Definition: gc.c:11719
long nrand48(unsigned short[3])
int pthread_rwlock_trywrlock(pthread_rwlock_t *)
int rb_is_absolute_path(const char *)
Definition: file.c:6150
rb_control_frame_t * rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm.c:541
struct timeval rb_time_timeval(VALUE time)
Definition: time.c:2689
VALUE rb_parser_set_yydebug(VALUE, VALUE)
Definition: ripper.c:20131
int rb_sym_interned_p(VALUE)
struct rb_ensure_list rb_ensure_list_t
VALUE rb_mutex_unlock(VALUE mutex)
Definition: thread_sync.c:403
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq)
Definition: vm.c:849
long double scalbnl(long double, int)
void rb_execarg_parent_start(VALUE execarg_obj)
Definition: process.c:2844
double exp2(double)
#define CLD_TRAPPED
void rb_fd_set(int, rb_fdset_t *)
int _getchar_r(struct _reent *)
char * __strncat_chk(char *, const char *, size_t, size_t)
int int int int int int int int char char int int int int int int int siscanf(const char *, const char *,...) __attribute__((__format__(__scanf__
int sig2str(int, char *)
const rb_method_entry_t * rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:928
int rb_fd_isset(int, const rb_fdset_t *)
struct timeval rb_time_interval(VALUE num)
Definition: time.c:2683
const char *void void void rb_sys_warning(const char *,...) __attribute__((format(printf
int rb_st_insert(st_table *, st_data_t, st_data_t)
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
Definition: debug.c:115
float y1f(float)
void rb_define_class_variable(VALUE, const char *, VALUE)
Definition: variable.c:3156
double ldexp(double, int)
VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl)
Definition: numeric.c:2560
void rb_gc_writebarrier(VALUE a, VALUE b)
Definition: gc.c:6833
#define ferror(p)
VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val)
Definition: vm.c:1478
#define FPE_INTOVF
void * bsearch(const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
float log1pf(float)
int int int int int int int int char char int int int int int int int int int char char * vasnprintf(char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
#define RUBY_Qundef
VALUE rb_apply(VALUE, ID, VALUE)
Calls a method.
Definition: vm_eval.c:890
#define SI_ASYNCIO
VALUE rb_struct_members(VALUE)
Definition: struct.c:72
char * strerror_r(int, char *, size_t)
void ruby_sysinit(int *argc, char ***argv)
Initializes the process for libruby.
Definition: ruby.c:2472
uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict__, wchar_t **__restrict__, int)
int fflush_unlocked(FILE *)
const rb_iseq_t * rb_iseq_ibf_load(VALUE str)
Definition: compile.c:11600
void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self)
Definition: vm_backtrace.c:632
int st_compare_func(st_data_t, st_data_t)
int char char int _vasprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_str_ellipsize(VALUE, long)
Shortens str and adds three dots, an ellipsis, if it is longer than len characters.
Definition: string.c:10185
VALUE rb_num_coerce_cmp(VALUE, VALUE, ID)
Definition: numeric.c:453
VALUE rb_big_new(size_t, int)
Definition: bignum.c:3014
void rb_const_set(VALUE, ID, VALUE)
Definition: variable.c:2756
VALUE rb_funcallv_public_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:986
VALUE rb_big_modulo(VALUE, VALUE)
Definition: bignum.c:6103
int ungetc(int, FILE *)
char * getwd(char *__buf)
const char * ruby_node_name(int node)
Definition: iseq.c:2534
VALUE rb_ary_resize(VALUE ary, long len)
expands or shrinks ary to len elements.
Definition: array.c:1955
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless)
Definition: numeric.c:2529
VALUE rb_str_upto_endless_each(VALUE, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4345
VALUE rb_hash_keys(VALUE hash)
Definition: hash.c:3409
int fseeko(FILE *, off_t, int)
int int int int int int int int char char int diprintf(int, const char *,...) __attribute__((__format__(__printf__
void * rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10203
void rb_set_end_proc(void(*)(VALUE), VALUE)
Definition: eval_jump.c:59
enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts)
Definition: numeric.c:200
void * rb_load_file_str(VALUE)
Definition: ruby.c:2212
int int _fiscanf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__scanf__
int sched_getparam(pid_t __pid, struct sched_param *__param)
int int int int int int int vasprintf(char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
__uint16_t in_port_t
int rb_str_cmp(VALUE, VALUE)
Definition: string.c:3228
double lgamma_r(double, int *)
Definition: lgamma_r.c:63
int setuid(uid_t __uid)
void rb_st_add_direct(st_table *, st_data_t, st_data_t)
VALUE rb_num2fix(VALUE)
Definition: numeric.c:3088
VALUE rb_obj_as_string_result(VALUE str, VALUE obj)
Definition: string.c:1452
char * tmpnam(char *)
int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val)
Definition: process.c:2041
void void rb_free_tmp_buffer(volatile VALUE *store)
Definition: gc.c:10290
int execlp(const char *__file, const char *,...)
int int int int int int int int char char int int int int int int int int int char char int int int int int int int vsiscanf(const char *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
unsigned int size
@ imemo_parser_strterm
VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq)
Definition: iseq.c:1039
float lgammaf(float)
float log10f(float)
rb_block_call_func * rb_block_call_func_t
const rb_iseq_t const int const int const int max_argc
void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena)
Definition: compile.c:9196
ssize_t __ssp_real_pread(int __fd, void *__buf, size_t __len, off_t __off) __asm__("" "pread")
void ruby_debug_counter_show_at_exit(int enable)
#define rb_float_value(v)
VALUE rb_str_subseq(VALUE, long, long)
Definition: string.c:2474
VALUE rb_proc_new(rb_block_call_func_t, VALUE)
Definition: proc.c:2991
int putw(int, FILE *)
long unsigned int size_t
unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit)
Definition: random.c:934
char * strdup(const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp)
Definition: vm.c:604
VALUE rb_struct_aref(VALUE, VALUE)
Definition: struct.c:1061
float remainderf(float, float)
VALUE rb_mod_remove_const(VALUE, VALUE)
Definition: variable.c:2483
static const VALUE int int n_opt
unsigned int wint_t
VALUE rb_hash_delete(VALUE, VALUE)
Definition: hash.c:2344
int symlink(const char *__name1, const char *__name2)
Definition: win32.c:5212
int ruby_glob_func(const char *, VALUE, void *)
ID rb_make_internal_id(void)
Definition: symbol.c:810
int pthread_sigmask(int, const sigset_t *, sigset_t *)
float nanf(const char *)
char * initstate(unsigned, char *, size_t)
VALUE rb_math_hypot(VALUE, VALUE)
char * secure_getenv(const char *__string)
int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg)
Definition: hash.c:1442
int pthread_kill(pthread_t, int)
char * _findenv(const char *, int *)
char * addr_t
static VALUE target_owner
size_t __ssp_real_mbstowcs(wchar_t *__buf, const char *__src, size_t __n) __asm__("" "mbstowcs")
__builtin_va_list __va_list
int __ssp_real_getlogin_r(char *__buf, size_t __len) __asm__("" "getlogin_r")
long long rb_big2ll(VALUE)
VALUE rb_funcall_passing_block_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:1039
int rb_safe_level(void)
Definition: safe.c:31
int finite(double)
Definition: finite.c:6
void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events)
Definition: iseq.c:3273
int clock_settime(clockid_t clock_id, const struct timespec *tp)
const char * rb_insns_name(int i)
Definition: compile.c:8760
float asinhf(float)
int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *)
void rb_thread_sleep_deadly(void)
Definition: thread.c:1320
VALUE rb_str_chomp_string(VALUE str, VALUE chomp)
Definition: string.c:8921
int int int int int _snprintf_r(struct _reent *, char *__restrict__, size_t, const char *__restrict__,...) __attribute__((__format__(__printf__
int pthread_getattr_np(pthread_t, pthread_attr_t *)
int at_quick_exit(void(*)(void))
VALUE rb_mod_module_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2103
#define ILL_ILLADR
char * _fgets_r(struct _reent *, char *__restrict__, int, FILE *__restrict__)
struct rb_control_frame_struct rb_control_frame_t
int bcmp(const void *, const void *, size_t) __attribute__((__pure__))
unsigned long __fd_mask
__builtin_va_list __gnuc_va_list
int dup(int __fildes)
struct fd_set fd_set
int clock_getcpuclockid(pid_t pid, clockid_t *clock_id)
VALUE rb_block_param_proxy
Definition: vm.c:368
VALUE rb_fstring_new(const char *ptr, long len)
Definition: string.c:396
VALUE rb_struct_initialize(VALUE, VALUE)
Definition: struct.c:659
int sigaltstack(const stack_t *__restrict__, stack_t *__restrict__)
void rb_ast_add_local_table(rb_ast_t *, ID *buf)
Definition: node.c:1219
int faccessat(int __dirfd, const char *__path, int __mode, int __flags)
const struct rb_call_cache * cc
VALUE rb_struct_aset(VALUE, VALUE, VALUE)
Definition: struct.c:1088
VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq)
Definition: iseq.c:1057
int int int int int int int vprintf(const char *, __gnuc_va_list) __attribute__((__format__(__printf__
int __ssp_real_getgroups(int __n, gid_t __buf[]) __asm__("" "getgroups")
void * vm_object_t
int rb_cmpint(VALUE, VALUE, VALUE)
Definition: bignum.c:2925
VALUE rb_struct_define(const char *,...)
Definition: struct.c:431
double fma(double, double, double)
int __isinfd(double)
VALUE rb_f_kill(int, const VALUE *)
Definition: signal.c:418
ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n)
VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
const rb_env_t * rb_vm_env_prev_env(const rb_env_t *env)
Definition: vm.c:796
VALUE rb_big_cmp(VALUE, VALUE)
Definition: bignum.c:5419
#define memmove(dst, src, len)
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)
Definition: vm.c:1249
VALUE rb_str_dump(VALUE)
Definition: string.c:6042
double difftime(time_t _time2, time_t _time1)
VALUE rb_f_sprintf(int, const VALUE *)
Definition: sprintf.c:198
unsigned int * rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body)
Definition: iseq.c:613
#define snprintf(str, len,...)
#define SI_TIMER
VALUE rb_int_ge(VALUE x, VALUE y)
Definition: numeric.c:4297
VALUE rb_str_append(VALUE, VALUE)
Definition: string.c:2965
void rb_thread_stop_timer_thread(void)
Definition: thread.c:4416
float exp2f(float)
__uint32_t arc4random(void)
VALUE rb_str_buf_cat_ascii(VALUE, const char *)
Definition: string.c:2926
VALUE rb_hash_delete_entry(VALUE hash, VALUE key)
Definition: hash.c:2326
long _fpos_t
const char * rb_obj_info(VALUE obj)
Definition: gc.c:11713
int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char *errmsg, size_t errmsg_buflen)
Definition: process.c:3420
unsigned int rb_genrand_int32(void)
Definition: random.c:119
VALUE rb_file_s_absolute_path(int, const VALUE *)
Definition: file.c:4140
VALUE rb_thread_shield_release(VALUE self)
Definition: thread.c:4834
int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
long lroundl(long double)
void ruby_init_loadpath(void)
Definition: ruby.c:586
VALUE rb_math_cosh(VALUE)
VALUE rb_mod_constants(int, const VALUE *, VALUE)
Definition: variable.c:2630
int pthread_rwlock_init(pthread_rwlock_t *, const pthread_rwlockattr_t *)
size_t rb_ast_memsize(const rb_ast_t *)
Definition: node.c:1373
int ruby_disable_gc
Definition: gc.c:1001
void rb_threadptr_signal_exit(rb_thread_t *th)
Definition: thread.c:2333
VALUE rb_str_new_frozen(VALUE)
Definition: string.c:1203
__uintptr_t uintptr_t
size_t fwrite_unlocked(const void *__restrict__, size_t _size, size_t _n, FILE *)
struct rb_hook_list_struct rb_hook_list_t
__uint32_t __uid_t
void rb_gc_mark_locations(const VALUE *, const VALUE *)
Definition: gc.c:4715
long gethostid(void)
void mjit_free_iseq(const rb_iseq_t *iseq)
void ruby_init_stack(volatile VALUE *)
st_table * rb_st_init_strcasetable(void)
const rb_iseq_t * rb_iseq_load_iseq(VALUE fname)
Definition: iseq.c:847
VALUE rb_ary_dup(VALUE)
Definition: array.c:2238
#define RARRAY_EMBED_LEN_MAX
void rb_st_free_table(st_table *)
VALUE rb_float_div(VALUE x, VALUE y)
Definition: numeric.c:1126
FILE * fopen(const char *__restrict__ _name, const char *__restrict__ _type)
rb_event_flag_t ruby_vm_event_flags
Definition: vm.c:375
int __ssp_real_wctomb(char *__buf, wchar_t __wc) __asm__("" "wctomb")
struct tm * gmtime_r(const time_t *__restrict__, struct tm *__restrict__)
Definition: win32.c:7878
#define siglongjmp(env, val)
void exit(int __status) __attribute__((__noreturn__))
VALUE rb_attr_get(VALUE, ID)
Definition: variable.c:1084
void rb_alias_variable(ID, ID)
Definition: variable.c:756
int finitef(float)
VALUE rb_vm_cbase(void)
Definition: vm.c:1425
__inline__ wchar_t __wc
VALUE rb_rational_minus(VALUE self, VALUE other)
Definition: rational.c:778
unsigned short ushort
unsigned int __uint_least32_t
int rb_thread_fd_writable(int)
Definition: thread.c:4047
void psiginfo(const siginfo_t *, const char *)
__uint32_t __gid_t
int setvbuf(FILE *__restrict__, char *__restrict__, int, size_t)
long double nearbyintl(long double)
VALUE rb_lcm(VALUE x, VALUE y)
Definition: rational.c:1925
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int opt_pc
int _raise_r(struct _reent *, int)
#define SEGV_ACCERR
int pthread_condattr_init(pthread_condattr_t *)
__uint32_t u_int32_t
void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm_dump.c:414
int getpt(void)
int rb_match_nth_defined(int nth, VALUE match)
Definition: re.c:1317
void * rb_mod_const_of(VALUE, void *)
Definition: variable.c:2576
VALUE rb_method_call_kw(int, const VALUE *, VALUE, int)
Definition: proc.c:2266
#define putchar_unlocked(_c)
struct tm * localtime_r(const time_t *__restrict__, struct tm *__restrict__)
Definition: win32.c:7902
VALUE rb_io_puts(int, const VALUE *, VALUE)
Definition: io.c:7751
VALUE rb_fiber_yield(int argc, const VALUE *argv)
Definition: cont.c:2129
float expm1f(float)
char ruby_check_sizeof_long[8==sizeof(long) ? 1 :-1]
VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func *ifunc)
Definition: compile.c:630
char * strnstr(const char *, const char *, size_t) __attribute__((__pure__))
int stat(const char *__restrict__ __path, struct stat *__restrict__ __sbuf)
const rb_method_entry_t * rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:942
VALUE rb_time_nano_new(time_t, long)
Definition: time.c:2533
int rb_pipe(int *pipes)
Definition: io.c:6373
#define FPE_INTDIV
void rb_str_modify_expand(VALUE, long)
Definition: string.c:2122
@ cmp_optimizable_count
st_table * rb_st_copy(st_table *)
VALUE rb_io_get_io(VALUE)
Definition: io.c:733
void abort(void) __attribute__((__noreturn__))
long strtol(const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
_off_t _ftello_r(struct _reent *, FILE *)
void __assert_func(const char *, int, const char *, const char *) __attribute__((__noreturn__))
void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq)
int rb_encdb_dummy(const char *name)
Definition: encoding.c:472
double atan(double)
_off64_t _fpos64_t
void rb_thread_atfork(void)
Definition: thread.c:4547
FILE * _funopen_r(struct _reent *, const void *__cookie, int(*__readfn)(void *__c, char *__buf, size_t __n), int(*__writefn)(void *__c, const char *__buf, size_t __n), _fpos64_t(*__seekfn)(void *__c, _fpos64_t __off, int __whence), int(*__closefn)(void *__c))
const char * rb_source_location_cstr(int *pline)
Definition: vm.c:1376
int char char int int _diprintf_r(struct _reent *, int, const char *,...) __attribute__((__format__(__printf__
struct vm_ifunc * rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc)
Definition: proc.c:699
int ptsname_r(int, char *, size_t)
int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
struct rb_method_bmethod_struct rb_method_bmethod_t
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value)
Definition: variable.c:3327
#define ruby_safe_level_2_warning()
VALUE rb_str_buf_append(VALUE, VALUE)
Definition: string.c:2950
void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p)
Definition: vm_trace.c:362
VALUE rb_str_intern(VALUE)
Definition: symbol.c:710
int mkostemp(char *, int)
void rb_write_error2(const char *, long)
Definition: io.c:7915
VALUE rb_str_drop_bytes(VALUE, long)
Definition: string.c:4573
int rb_get_next_signal(void)
Definition: signal.c:756
int pthread_rwlock_wrlock(pthread_rwlock_t *)
int rb_stderr_tty_p(void)
Definition: io.c:7962
@ YARVINSN_expandarray
@ YARVINSN_setinstancevariable
@ YARVINSN_concatarray
@ YARVINSN_opt_aset_with
@ YARVINSN_opt_invokebuiltin_delegate
@ YARVINSN_opt_str_uminus
@ YARVINSN_trace_invokebuiltin
@ YARVINSN_opt_call_c_function
@ YARVINSN_setclassvariable
@ YARVINSN_getlocal_WC_1
@ YARVINSN_trace_branchnil
@ YARVINSN_trace_opt_le
@ YARVINSN_trace_opt_regexpmatch2
@ YARVINSN_trace_opt_newarray_min
@ YARVINSN_trace_getblockparam
@ YARVINSN_trace_concatarray
@ YARVINSN_trace_opt_str_uminus
@ YARVINSN_trace_opt_minus
@ YARVINSN_trace_setblockparam
@ YARVINSN_trace_opt_succ
@ YARVINSN_setblockparam
@ YARVINSN_trace_putstring
@ YARVINSN_trace_opt_or
@ YARVINSN_trace_duparray
@ YARVINSN_trace_getlocal
@ YARVINSN_trace_checktype
@ YARVINSN_setconstant
@ YARVINSN_putobject_INT2FIX_1_
@ YARVINSN_trace_opt_call_c_function
@ YARVINSN_opt_str_freeze
@ YARVINSN_trace_newhash
@ YARVINSN_trace_opt_plus
@ YARVINSN_trace_opt_setinlinecache
@ YARVINSN_newarraykwsplat
@ YARVINSN_trace_definemethod
@ YARVINSN_getinstancevariable
@ YARVINSN_definesmethod
@ YARVINSN_opt_empty_p
@ YARVINSN_trace_setclassvariable
@ YARVINSN_trace_putself
@ YARVINSN_trace_opt_getinlinecache
@ YARVINSN_trace_getconstant
@ YARVINSN_trace_putobject
@ YARVINSN_trace_setlocal_WC_0
@ YARVINSN_trace_opt_ge
@ YARVINSN_trace_getlocal_WC_0
@ YARVINSN_trace_setspecial
@ YARVINSN_opt_newarray_max
@ YARVINSN_getblockparam
@ YARVINSN_putspecialobject
@ YARVINSN_trace_setconstant
@ YARVINSN_trace_opt_ltlt
@ YARVINSN_trace_intern
@ YARVINSN_getconstant
@ YARVINSN_trace_checkmatch
@ YARVINSN_trace_defineclass
@ YARVINSN_trace_concatstrings
@ YARVINSN_checkkeyword
@ YARVINSN_opt_send_without_block
@ YARVINSN_invokeblock
@ YARVINSN_trace_opt_mult
@ YARVINSN_trace_opt_length
@ YARVINSN_trace_freezestring
@ YARVINSN_trace_leave
@ YARVINSN_trace_duphash
@ YARVINSN_trace_newarray
@ YARVINSN_trace_opt_str_freeze
@ YARVINSN_trace_opt_empty_p
@ YARVINSN_branchunless
@ YARVINSN_freezestring
@ YARVINSN_trace_reverse
@ YARVINSN_trace_getglobal
@ YARVINSN_putobject_INT2FIX_0_
@ YARVINSN_trace_putobject_INT2FIX_0_
@ YARVINSN_trace_defined
@ YARVINSN_opt_aref_with
@ YARVINSN_trace_branchif
@ YARVINSN_trace_opt_aset_with
@ YARVINSN_getlocal_WC_0
@ YARVINSN_trace_getinstancevariable
@ YARVINSN_trace_opt_aref
@ YARVINSN_trace_opt_size
@ YARVINSN_definemethod
@ YARVINSN_trace_definesmethod
@ YARVINSN_trace_setinstancevariable
@ YARVINSN_getclassvariable
@ YARVINSN_trace_getlocal_WC_1
@ YARVINSN_trace_invokeblock
@ YARVINSN_trace_setlocal_WC_1
@ YARVINSN_trace_setglobal
@ YARVINSN_invokebuiltin
@ YARVINSN_trace_opt_newarray_max
@ YARVINSN_defineclass
@ YARVINSN_trace_throw
@ YARVINSN_trace_putspecialobject
@ YARVINSN_opt_getinlinecache
@ YARVINSN_trace_opt_lt
@ YARVINSN_trace_newarraykwsplat
@ YARVINSN_trace_branchunless
@ YARVINSN_trace_opt_aref_with
@ YARVINSN_trace_toregexp
@ YARVINSN_opt_case_dispatch
@ YARVINSN_trace_opt_nil_p
@ YARVINSN_opt_newarray_min
@ YARVINSN_trace_opt_and
@ YARVINSN_trace_opt_gt
@ YARVINSN_trace_opt_send_without_block
@ YARVINSN_trace_tostring
@ YARVINSN_setlocal_WC_1
@ YARVINSN_trace_splatarray
@ YARVINSN_trace_opt_case_dispatch
@ YARVINSN_trace_opt_invokebuiltin_delegate
@ YARVINSN_adjuststack
@ YARVINSN_getblockparamproxy
@ YARVINSN_trace_checkkeyword
@ YARVINSN_trace_opt_neq
@ YARVINSN_setlocal_WC_0
@ YARVINSN_trace_getspecial
@ YARVINSN_trace_putnil
@ YARVINSN_trace_putobject_INT2FIX_1_
@ YARVINSN_trace_opt_eq
@ YARVINSN_trace_newrange
@ YARVINSN_trace_getclassvariable
@ YARVINSN_trace_opt_div
@ YARVINSN_trace_opt_aset
@ YARVINSN_trace_expandarray
@ YARVINSN_trace_opt_mod
@ YARVINSN_opt_invokebuiltin_delegate_leave
@ YARVINSN_opt_regexpmatch2
@ YARVINSN_opt_setinlinecache
@ YARVINSN_trace_opt_not
@ YARVINSN_trace_setlocal
@ YARVINSN_trace_opt_invokebuiltin_delegate_leave
@ YARVINSN_trace_adjuststack
@ YARVINSN_trace_getblockparamproxy
@ YARVINSN_concatstrings
@ YARVINSN_trace_invokesuper
@ YARVINSN_invokesuper
int Init_enc_set_filesystem_encoding(void)
Definition: localeinit.c:119
#define rb_locale_str_new_cstr(str)
void * rb_mod_const_at(VALUE, void *)
Definition: variable.c:2563
int rb_str_hash_cmp(VALUE, VALUE)
Definition: string.c:3173
size_t strxfrm_l(char *__restrict__, const char *__restrict__, size_t, locale_t)
int pthread_attr_destroy(pthread_attr_t *)
struct rb_call_data * CALL_DATA
VALUE rb_complex_minus(VALUE x, VALUE y)
Definition: complex.c:812
int access(const char *__path, int __amode)
VALUE rb_io_print(int, const VALUE *, VALUE)
Definition: io.c:7580
char * _l64a_r(struct _reent *, long __input)
long double fmodl(long double, long double)
void * memrchr(const void *, int, size_t)
void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock)
Definition: thread.c:446
long double scalblnl(long double, long)
long double log10l(long double)
VALUE rb_big_or(VALUE, VALUE)
Definition: bignum.c:6479
VALUE rb_time_utc_offset(VALUE time)
Definition: time.c:4810
void * memmem(const void *, size_t, const void *, size_t)
VALUE rb_lastline_get(void)
Definition: vm.c:1316
unsigned int ruby_vm_event_local_num
Definition: vm.c:377
st_data_t st_index_t
VALUE rb_source_location(int *pline)
Definition: vm.c:1360
VALUE rb_gv_get(const char *)
Definition: variable.c:680
__int_least16_t int_least16_t
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
Definition: gc.c:2321
VALUE rb_gets(void)
Definition: io.c:8906
size_t strxfrm(char *__restrict__, const char *__restrict__, size_t)
__key_t key_t
VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck)
unsigned int u_int
FILE * fopencookie(void *__cookie, const char *__mode, cookie_io_functions_t __functions)
void rb_mjit_recompile_iseq(const rb_iseq_t *iseq)
void setproctitle(const char *fmt,...)
Definition: setproctitle.c:139
double double_t
char * _mkdtemp_r(struct _reent *, char *)
VALUE rb_gcd(VALUE x, VALUE y)
Definition: rational.c:1906
int int int _siscanf_r(struct _reent *, const char *, const char *,...) __attribute__((__format__(__scanf__
VALUE rb_check_hash_type(VALUE)
Definition: hash.c:1852
VALUE rb_proc_location(VALUE self)
Definition: proc.c:1256
int pthread_once(pthread_once_t *, void(*)(void))
VALUE rb_int_minus(VALUE x, VALUE y)
Definition: numeric.c:3654
ID rb_check_id(volatile VALUE *)
Returns ID for the given name if it is interned already, or 0.
Definition: symbol.c:919
VALUE rb_thread_current(void)
Definition: thread.c:2675
unsigned short __nlink_t
void rb_threadptr_interrupt(rb_thread_t *th)
Definition: thread.c:505
ID rb_sym2id(VALUE)
Definition: symbol.c:748
int eaccess(const char *__path, int __mode)
Definition: file.c:1500
FILE * freopen(const char *__restrict__, const char *__restrict__, FILE *__restrict__)
int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child)
Disassemble a instruction Iseq -> Iseq inspect object.
Definition: iseq.c:2021
__uint_least32_t uint_least32_t
void sync(void)
VALUE rb_funcall_with_block_kw(VALUE, ID, int, const VALUE *, VALUE, int)
Definition: vm_eval.c:1060
VALUE rb_reg_nth_match(int, VALUE)
Definition: re.c:1714
@ RHASH_PASS_AS_KEYWORDS
@ RHASH_TRANSIENT_FLAG
rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1774
void * ruby_process_options(int, char **)
Definition: ruby.c:2412
#define RMODULE_IS_OVERLAID
__timer_t timer_t
char * strptime(const char *__restrict__, const char *__restrict__, struct tm *__restrict__)
#define RUBY_ELTS_SHARED
int pthread_cond_destroy(pthread_cond_t *)
pthread_mutex_t rb_nativethread_lock_t
int _putc_unlocked_r(struct _reent *, int, FILE *)
int ruserok(const char *rhost, int superuser, const char *ruser, const char *luser)
int fchownat(int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags)
VALUE rb_int_odd_p(VALUE num)
Definition: numeric.c:3227
void rb_thread_wakeup_timer_thread(int)
VALUE rb_hash_fetch(VALUE, VALUE)
Definition: hash.c:2134
int dprintf(int, const char *__restrict__,...) __attribute__((__format__(__printf__
pid_t getpid(void)
#define strcpy(dst, src)
VALUE rb_check_array_type(VALUE)
Definition: array.c:909
pid_t getppid(void)
int lockf(int __fd, int __cmd, off_t __len)
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line)
Definition: ripper.c:13775
int int __vsprintf_chk(char *__restrict__, int, size_t, const char *__restrict__, __va_list) __attribute__((__format__(__printf__
int rb_cloexec_fcntl_dupfd(int fd, int minfd)
Definition: io.c:419
#define feof_unlocked(p)
int int int int int int int int char char int int int int int int int int int char char int int int int int int vsiprintf(char *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
#define feof(p)
int pthread_cond_broadcast(pthread_cond_t *)
char * strcasestr(const char *, const char *)
void * valloc(size_t)
struct rb_iseq_constant_body * rb_iseq_constant_body_alloc(void)
Definition: iseq.c:433
void rb_set_coverages(VALUE, int, VALUE)
Definition: thread.c:5488
int rb_const_defined_from(VALUE, ID)
Definition: variable.c:2680
void(* _sig_func_ptr)(int)
void ruby_debug_counter_reset(void)
char * crypt(const char *__key, const char *__salt)
VALUE rb_num_coerce_relop(VALUE, VALUE, ID)
Definition: numeric.c:461
VALUE rb_big_divrem_normal(VALUE x, VALUE y)
Definition: bignum.c:2714
VALUE rb_gc_disable_no_rest(void)
Definition: gc.c:9247
__uint8_t u_int8_t
VALUE rb_reg_match2(VALUE)
Definition: re.c:3239
VALUE rb_refinement_module_get_refined_class(VALUE module)
Definition: eval.c:1481
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int)
#define rb_str_dup_frozen
int pthread_rwlock_unlock(pthread_rwlock_t *)
__dev_t dev_t
VALUE rb_proc_call(VALUE, VALUE)
Definition: proc.c:966
char * ctime(const time_t *_time)
#define RB_IO_WAIT_WRITABLE
const rb_iseq_t * rb_method_iseq(VALUE body)
Definition: proc.c:2691
VALUE rb_output_fs
Definition: intern.h:584
VALUE rb_to_symbol(VALUE name)
Definition: string.c:11156
int rb_thread_alone(void)
Definition: thread.c:3491
int pthread_tryjoin_np(pthread_t, void **)
int char char int int int int int int int int int int int int int int int int _vsprintf_r(struct _reent *, char *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
VALUE rb_str_locktmp(VALUE)
unsigned long __fsblkcnt_t
int _puts_r(struct _reent *, const char *)
int fdatasync(int __fd)
int iruserok(unsigned long raddr, int superuser, const char *ruser, const char *luser)
VALUE rb_marshal_load(VALUE)
Definition: marshal.c:2365
void rb_gc_force_recycle(VALUE)
Definition: gc.c:7027
void rb_gc_mark_movable(VALUE)
Definition: gc.c:5222
VALUE rb_eval_string_wrap(const char *, int *)
Evaluates the given string under a module binding in an isolated binding.
Definition: vm_eval.c:1769
int rb_num_to_uint(VALUE val, unsigned int *ret)
Definition: numeric.c:244
int siginterrupt(int, int)
int rb_grantpt(int fd)
Definition: signal.c:1597
void lcong48(unsigned short[7])
long double fmaxl(long double, long double)
char * __strcat_chk(char *, const char *, size_t)
void rb_define_hooked_variable(const char *, VALUE *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Definition: variable.c:480
int setegid(gid_t __gid)
int int int int int int int char * _tempnam_r(struct _reent *, const char *, const char *)
unsigned int __uint32_t
VALUE rb_reg_init_str(VALUE re, VALUE s, int options)
Definition: re.c:2901
VALUE rb_each(VALUE)
Definition: vm_eval.c:1542
__blksize_t blksize_t
VALUE rb_ary_unshift(VALUE, VALUE)
Definition: array.c:1494
void rb_fd_term(rb_fdset_t *)
VALUE rb_obj_as_string(VALUE)
Definition: string.c:1440
double asinh(double)
Definition: acosh.c:52
const VALUE * argv
@ RUBY_NUM_ROUND_HALF_EVEN
@ RUBY_NUM_ROUND_HALF_DOWN
@ RUBY_NUM_ROUND_HALF_UP
@ RUBY_NUM_ROUND_DEFAULT
void rb_native_mutex_destroy(rb_nativethread_lock_t *lock)
__inline__ const char * __src
char * rb_str_to_cstr(VALUE str)
Definition: string.c:2284
void void ruby_xfree(void *)
Definition: gc.c:10183
int rb_ec_reset_raised(rb_execution_context_t *ec)
Definition: thread.c:2353
int char char int int int _dprintf_r(struct _reent *, int, const char *__restrict__,...) __attribute__((__format__(__printf__
VALUE rb_big_and(VALUE, VALUE)
Definition: bignum.c:6360
size_t _mbstowcs_r(struct _reent *, wchar_t *__restrict__, const char *__restrict__, size_t, _mbstate_t *)
rb_iseq_t * ISEQ
char * __utoa(unsigned, char *, int)
VALUE rb_fix_plus(VALUE x, VALUE y)
Definition: numeric.c:3609
int fstatat(int, const char *__restrict__, struct stat *__restrict__, int)
VALUE rb_method_entry_location(const rb_method_entry_t *me)
Definition: proc.c:2725
const VALUE * rb_vm_proc_local_ep(VALUE proc)
Definition: thread.c:648
struct sigevent sigevent_t
int mkfifo(const char *__path, mode_t __mode)
FILE * popen(const char *, const char *)
VALUE rb_get_path(VALUE)
Definition: file.c:230
_ssize_t ssize_t
int strverscmp(const char *, const char *)
VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
Definition: bignum.c:4246
VALUE rb_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1694
uint32_t rb_event_flag_t
ssize_t cookie_write_function_t(void *__cookie, const char *__buf, size_t __n)
double cbrt(double)
Definition: cbrt.c:4
double tan(double)
VALUE rb_block_lambda(void)
Definition: proc.c:856
char * strtok(char *__restrict__, const char *__restrict__)
double sqrt(double)
int rb_arithmetic_sequence_extract(VALUE, rb_arithmetic_sequence_components_t *)
Definition: enumerator.c:3374
int nice(int __nice_value)
void rb_ary_free(VALUE)
Definition: array.c:786
unsigned alarm(unsigned __secs)
const char ruby_hexdigits[]
Definition: escape.c:5
void rb_mv_generic_ivar(VALUE src, VALUE dst)
Definition: variable.c:983
VALUE rb_ary_shift(VALUE)
Definition: array.c:1294
int int int int int int int int char char * asnprintf(char *__restrict__, size_t *__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
double y1(double)
char * _dtoa_r(struct _reent *, double, int, int, int *, int *, char **)
void rb_gc_copy_finalizer(VALUE, VALUE)
Definition: gc.c:3310
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
Definition: re.c:2953
int __socklen_t
#define RUBY_Qtrue
char * _strerror_r(struct _reent *, int, int, int *)
#define SIGEV_NONE
off_t ftello(FILE *)
VALUE rb_ivar_set(VALUE, ID, VALUE)
Definition: variable.c:1300
char * __ssp_real_fgets(char *__restrict__ __buf, int __len, FILE *__fp) __asm__("" "fgets")
long labs(long)
VALUE rb_ary_delete_at(VALUE, long)
Definition: array.c:3419
VALUE rb_require_safe(VALUE, int)
Definition: load.c:1128
float floorf(float)
VALUE rb_iseq_method_name(const rb_iseq_t *iseq)
Definition: iseq.c:1063
VALUE rb_yield_splat(VALUE)
Definition: vm_eval.c:1283
VALUE rb_int_divmod(VALUE x, VALUE y)
Definition: numeric.c:3968
int rb_method_boundp(VALUE, ID, int)
Definition: vm_method.c:1119
VALUE rb_iseq_disasm(const rb_iseq_t *iseq)
Definition: iseq.c:2278
char * rb_string_value_cstr(volatile VALUE *)
Definition: string.c:2291
__uint_least8_t uint_least8_t
float sinhf(float)
VALUE rb_marshal_dump(VALUE, VALUE)
Definition: marshal.c:2359
VALUE rb_iv_get(VALUE, const char *)
Definition: variable.c:3305
struct rb_method_refined_struct rb_method_refined_t
VALUE * rb_ruby_debug_ptr(void)
Definition: vm.c:3383
VALUE rb_reg_new_str(VALUE, int)
Definition: re.c:2895
void qsort_r(void *__base, size_t __nmemb, size_t __size, int(*_compar)(const void *, const void *, void *), void *__thunk)
_sig_func_ptr sig_t
const VALUE VALUE VALUE marker
void rb_scope_visibility_set(rb_method_visibility_t)
Definition: vm_method.c:1155
char * tempnam(const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
int posix_openpt(int)
int timer_delete(timer_t timerid)
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
Definition: iseq.c:972
void rb_thread_fd_close(int)
Definition: thread.c:2385
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func func, st_data_t arg)
Definition: hash.c:1651
int pthread_barrierattr_init(pthread_barrierattr_t *)
void rb_thread_sleep(int)
Definition: thread.c:1384
VALUE rb_yield_splat_kw(VALUE, int)
Definition: vm_eval.c:1296
#define ILL_BADSTK
rb_cref_t * rb_vm_cref_replace_with_duplicated_cref(void)
Definition: vm.c:1391
size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE)
Definition: gc.c:219
rb_ast_t * rb_parser_compile_string(VALUE, const char *, VALUE, int)
Definition: ripper.c:13734
void explicit_bzero(void *, size_t)
VALUE rb_big_uminus(VALUE x)
Definition: bignum.c:5554
int st_foreach_callback_func(st_data_t, st_data_t, st_data_t)
int pthread_barrier_destroy(pthread_barrier_t *)
void rb_thread_schedule(void)
Definition: thread.c:1407
imaxdiv_t imaxdiv(intmax_t __numer, intmax_t __denomer)
int char char int int int int _vfiprintf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
void rb_gc_writebarrier_remember(VALUE obj)
Definition: gc.c:6891
void rb_free_const_table(struct rb_id_table *tbl)
Definition: gc.c:2506
void rb_fiber_close(rb_fiber_t *fib)
Definition: cont.c:2071
VALUE rb_struct_alloc(VALUE, VALUE)
Definition: struct.c:724
int int int int int int int int char char int int int int int int siprintf(char *, const char *,...) __attribute__((__format__(__printf__
long long _strtoll_r(struct _reent *, const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
void Init_vm_objects(void)
Definition: vm.c:3326
signed char __int8_t
int rb_match_count(VALUE match)
Definition: re.c:1307
VALUE rb_thread_local_aset(VALUE, ID, VALUE)
Definition: thread.c:3363
void rb_undef_alloc_func(VALUE)
Definition: vm_method.c:729
struct timespec rb_time_timespec_interval(VALUE num)
Definition: time.c:2720
void rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
Definition: bignum.c:3215
unsigned long long strtoull(const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
VALUE rb_reg_match_last(VALUE)
Definition: re.c:1800
#define strcat(dst, src)
int execvp(const char *__file, char *const __argv[])
__int64_t __blkcnt_t
VALUE rb_range_new(VALUE, VALUE, int)
Definition: range.c:54
int rb_st_delete(st_table *, st_data_t *, st_data_t *)
VALUE rb_id_quote_unprintable(ID)
Definition: string.c:10735
st_table * rb_st_init_table(const struct st_hash_type *)
VALUE rb_ary_plus(VALUE, VALUE)
Definition: array.c:4000
int rpmatch(const char *response)
const struct kwtable * rb_reserved_word(const char *, unsigned int)
Definition: ripper.c:20020
char * _getenv_r(struct _reent *, const char *__string)
long rb_dbl_long_hash(double d)
Definition: hash.c:160
int killpg(pid_t, int)
int setpgrp(void)
int const void const char VALUE rb_iseq_eval(const rb_iseq_t *iseq)
Definition: vm.c:2163
rb_cref_t * rb_vm_cref(void)
Definition: vm.c:1384
if((__builtin_expect(!!(!me), 0)))
void rb_mem_clear(VALUE *, long)
Definition: array.c:243
rb_alloc_func_t rb_get_alloc_func(VALUE)
Definition: vm_method.c:735
VALUE rb_io_ungetbyte(VALUE, VALUE)
Definition: io.c:4280
VALUE rb_hash_aset(VALUE, VALUE, VALUE)
Definition: hash.c:2852
size_t fread(void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
void perror(const char *)
VALUE rb_gvar_getter_t(ID id, VALUE *data)
ID ruby_static_id_signo
Definition: eval.c:37
char * mktemp(char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
const rb_method_entry_t * rb_method_entry_at(VALUE obj, ID id)
Definition: vm_method.c:767
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
Definition: util.c:97
int rb_is_const_name(VALUE name)
Definition: symbol.c:1050
unsigned int __ULong
int rb_float_cmp(VALUE x, VALUE y)
Definition: numeric.c:1487
int char * _vasniprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
void ruby_prog_init(void)
Defines built-in variables.
Definition: ruby.c:2366
int __ssp_real_ttyname_r(int __fd, char *__buf, size_t __len) __asm__("" "ttyname_r")
int int int int int int int int char char int int int int int int int int int char char int int int int int int int int vsniprintf(char *, size_t, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
int puts(const char *)
VALUE rb_big_odd_p(VALUE)
Definition: bignum.c:6831
long long strtoll(const char *__restrict__ __n, char **__restrict__ __end_PTR, int __base)
int sched_get_priority_max(int __policy)
VALUE rb_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1470
VALUE rb_env_clear(void)
Definition: hash.c:5628
int timer_getoverrun(timer_t timerid)
VALUE rb_complex_pow(VALUE base, VALUE exp)
Definition: complex.c:985
unsigned sleep(unsigned int __seconds)
int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp)
Definition: vm.c:2200
_Noreturn void quick_exit(int)
void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table)
Definition: builtin.c:39
long int lroundf(float)
VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:966
int rb_provided(const char *)
Definition: load.c:556
VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *)
Definition: array.c:748
#define RARRAY_EMBED_LEN_MASK
void rb_check_safe_obj(VALUE)
Definition: safe.c:136
FILE * _tmpfile_r(struct _reent *)
char * __itoa(int, char *, int)
VALUE rb_const_remove(VALUE, ID)
Definition: variable.c:2494
void * __memmove_chk(void *, void *, size_t, size_t)
int int int int int int int int char char int int int int int int int int int char char int int int int int viscanf(const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_control_frame_t const VALUE * pc
void void void * ruby_xrealloc(void *, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2)))
Definition: gc.c:12038
double sin(double)
long long int llrintl(long double)
void mjit_remove_class_serial(rb_serial_t class_serial)
double gamma_r(double, int *)
VALUE rb_eval_string_protect(const char *, int *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1737
#define rb_check_arity
VALUE rb_ary_includes(VALUE, VALUE)
Definition: array.c:4340
void rb_gc_mark_vm_stack_values(long n, const VALUE *values)
Definition: gc.c:4755
int timer_create(clockid_t clock_id, struct sigevent *__restrict__ evp, timer_t *__restrict__ timerid)
long rb_str_sublen(VALUE, long)
Definition: string.c:2463
void setkey(const char *__key)
long __suseconds_t
int ruby_cleanup(volatile int)
Destructs the VM.
Definition: eval.c:181
size_t _fwrite_r(struct _reent *, const void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
void rb_lastline_set(VALUE)
Definition: vm.c:1322
#define RB_IO_WAIT_READABLE
VALUE rb_struct_getmember(VALUE, ID)
Definition: struct.c:211
void rb_obj_call_init_kw(VALUE, int, const VALUE *, int)
Definition: eval.c:1688
int __ssp_real_getdomainname(char *__buf, size_t __len) __asm__("" "getdomainname")
char * _mktemp_r(struct _reent *, char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
VALUE rb_eval_cmd_kw(VALUE, VALUE, int)
Definition: vm_eval.c:1801
long double modfl(long double, long double *)
int _mbtowc_r(struct _reent *, wchar_t *__restrict__, const char *__restrict__, size_t, _mbstate_t *)
#define ILL_ILLTRP
int truncate(const char *, off_t __length)
VALUE rb_int_idiv(VALUE x, VALUE y)
Definition: numeric.c:3848
int int int int int int int int asiprintf(char **, const char *,...) __attribute__((__format__(__printf__
#define FPE_FLTOVF
VALUE rb_str2inum(VALUE, int)
Definition: bignum.c:4544
VALUE rb_io_binmode(VALUE)
Definition: io.c:5338
int int FILE * _open_memstream_r(struct _reent *, char **, size_t *)
unsigned long __fsfilcnt_t
void void * ruby_xcalloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
@ VM_FRAME_FLAG_LAMBDA
@ VM_FRAME_FLAG_CFRAME_KW
@ VM_FRAME_MAGIC_IFUNC
@ VM_FRAME_MAGIC_METHOD
@ VM_FRAME_FLAG_CFRAME
@ VM_FRAME_MAGIC_DUMMY
@ VM_FRAME_FLAG_PASSED
@ VM_FRAME_FLAG_BMETHOD
@ VM_FRAME_MAGIC_BLOCK
@ VM_FRAME_MAGIC_CFUNC
@ VM_FRAME_MAGIC_CLASS
@ VM_ENV_FLAG_WB_REQUIRED
@ VM_FRAME_FLAG_FINISH
@ VM_FRAME_FLAG_CFRAME_EMPTY_KW
@ VM_FRAME_MAGIC_RESCUE
@ VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM
VALUE rb_autoload_load(VALUE, ID)
Definition: variable.c:2226
#define RUBY_Qnil
void rb_parser_printf(struct parser_params *parser, const char *fmt,...) __attribute__((format(printf
VALUE rb_big2str(VALUE, int)
Definition: bignum.c:5091
VALUE rb_big_mul_balance(VALUE x, VALUE y)
Definition: bignum.c:1689
int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *)
void * ruby_mimmalloc(size_t size) __attribute__((__malloc__))
Definition: gc.c:10220
int fgetc_unlocked(FILE *)
float y0f(float)
int pthread_condattr_getpshared(const pthread_condattr_t *, int *)
struct __pthread_mutex_t * pthread_mutex_t
rb_gvar_getter_t * rb_gvar_getter_function_of(const struct rb_global_entry *)
Definition: variable.c:702
#define FPE_FLTRES
void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock)
Definition: thread.c:428
int rb_get_coverage_mode(void)
Definition: thread.c:5482
VALUE rb_ary_rassoc(VALUE, VALUE)
Definition: array.c:4189
VALUE rb_time_timespec_new(const struct timespec *, int)
Returns a time object with UTC/localtime/fixed offset.
Definition: time.c:2544
struct rb_global_vm_lock_struct rb_global_vm_lock_t
VALUE rb_get_values_at(VALUE, long, int, const VALUE *, VALUE(*)(VALUE, long))
Definition: array.c:3106
#define rb_data_object_wrap
VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body)
VALUE rb_int128t2big(__int128 n)
float erfcf(float)
intmax_t wcstoimax(const wchar_t *__restrict__, wchar_t **__restrict__, int)
int pthread_getschedparam(pthread_t, int *, struct sched_param *)
size_t strnlen(const char *, size_t)
__useconds_t useconds_t
long unsigned int __cpu_mask
unsigned long __sigset_t
int int int int int int int int char char int int int int int int int int sniprintf(char *, size_t, const char *,...) __attribute__((__format__(__printf__
ID rb_id_attrset(ID)
Definition: symbol.c:98
void rewind(FILE *)
long unsigned int __uint64_t
clock_t clock(void)
#define rb_utf8_str_new(str, len)
VALUE rb_reg_new_ary(VALUE ary, int options)
Definition: re.c:2927
char * fgets_unlocked(char *__restrict__, int, FILE *__restrict__)
VALUE rb_blocking_function_t(void *)
void rb_mark_set(struct st_table *)
Definition: gc.c:4814
int rb_find_file_ext(VALUE *, const char *const *)
Definition: file.c:6331
int euidaccess(const char *__path, int __mode)
int flsl(long) __attribute__((__const__))
VALUE * rb_iseq_original_iseq(const rb_iseq_t *iseq)
Definition: compile.c:778
float nexttowardf(float, long double)
int str2sig(const char *__restrict__, int *__restrict__)
VALUE rb_big_abs(VALUE x)
Definition: bignum.c:6762
struct __locale_t * locale_t
size_t rb_ary_memsize(VALUE)
Definition: array.c:816
int setlinebuf(FILE *)
@ VM_DEFINECLASS_TYPE_CLASS
@ VM_DEFINECLASS_TYPE_MASK
@ VM_DEFINECLASS_TYPE_MODULE
@ VM_DEFINECLASS_TYPE_SINGLETON_CLASS
void _Exit(int __status) __attribute__((__noreturn__))
VALUE rb_method_call_with_block_kw(int, const VALUE *, VALUE, VALUE, int)
Definition: proc.c:2296
FILE * _freopen_r(struct _reent *, const char *__restrict__, const char *__restrict__, FILE *__restrict__)
void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval)
Definition: vm_trace.c:1262
int rb_cloexec_dup(int oldfd)
Definition: io.c:318
int atexit(void(*__func)(void))
void rb_call_inits(void)
Definition: inits.c:19
VALUE rb_gvar_set(struct rb_global_entry *, VALUE)
Definition: variable.c:654
int char char int int int int int int int _vfscanf_r(struct _reent *, FILE *__restrict__, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__scanf__
#define rb_data_object_make
VALUE rb_ary_behead(VALUE, long)
Definition: array.c:1369
const char * ruby_signal_name(int)
Definition: signal.c:310
int grantpt(int)
VALUE rb_attr_delete(VALUE, ID)
Definition: variable.c:1126
float tanhf(float)
VALUE rb_sym_to_proc(VALUE sym)
Definition: proc.c:1312
int fcloseall(void)
void ruby_sig_finalize(void)
Definition: signal.c:1470
void rb_mark_hash(struct st_table *)
Definition: gc.c:4878
int pthread_attr_setstack(pthread_attr_t *, void *, size_t)
void * rb_register_sigaltstack(void)
rb_iseq_t * rb_iseq_new_top(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent)
Definition: iseq.c:769
int _remove_r(struct _reent *, const char *)
VALUE rb_home_dir_of(VALUE user, VALUE result)
Definition: file.c:3576
float copysignf(float, float)
void ruby_default_signal(int)
Definition: signal.c:402
void rb_define_method_id(VALUE, ID, VALUE(*)(), int)
__inline__ size_t __size
int rand(void)
VALUE rb_f_global_variables(void)
Definition: variable.c:728
VALUE rb_str_dup(VALUE)
Definition: string.c:1516
double asin(double)
void rb_big_resize(VALUE big, size_t len)
Definition: bignum.c:2989
VALUE rb_sprintf(const char *,...) __attribute__((format(printf
unsigned char u_char
VALUE rb_file_expand_path(VALUE, VALUE)
Definition: file.c:4079
ssize_t __getdelim(char **, size_t *, int, FILE *)
#define RVALUE_EMBED_LEN_MAX
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5074
VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *)
Definition: enumerator.c:525
VALUE rb_binding_new(void)
Definition: proc.c:364
float coshf(float)
int putc(int, FILE *)
st_index_t rb_str_hash(VALUE)
Definition: string.c:3163
int renameat2(int, const char *, int, const char *, unsigned int)
int __isnand(double)
VALUE rb_warning_string(const char *fmt,...) __attribute__((format(printf
void mjit_cont_free(struct mjit_cont *cont)
long double sinhl(long double)
int int int int _sniprintf_r(struct _reent *, char *, size_t, const char *,...) __attribute__((__format__(__printf__
int sigaddset(sigset_t *, const int)
VALUE rb_get_path_no_checksafe(VALUE)
Definition: file.c:224
int _getchar_unlocked_r(struct _reent *)
int select(int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout)
unsigned long ID
float atoff(const char *__nptr)
rb_control_frame_t * __attribute__((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *
int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *)
void mjit_add_class_serial(rb_serial_t class_serial)
size_t _fread_r(struct _reent *, void *__restrict__, size_t _size, size_t _n, FILE *__restrict__)
VALUE rb_struct_define_under(VALUE, const char *,...)
Definition: struct.c:446
long double acoshl(long double)
VALUE rb_mod_remove_cvar(VALUE, VALUE)
Definition: variable.c:3284
int char char * _asnprintf_r(struct _reent *, char *__restrict__, size_t *__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
int chown(const char *__path, uid_t __owner, gid_t __group)
int _fscanf_r(struct _reent *, FILE *__restrict__, const char *__restrict__,...) __attribute__((__format__(__scanf__
VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags)
Definition: bignum.c:4041
void rb_vm_trap_exit(rb_vm_t *vm)
Definition: signal.c:1060
int mblen(const char *, size_t)
int chdir(const char *__path)
VALUE rb_reg_alloc(void)
Definition: re.c:2889
void _perror_r(struct _reent *, const char *)
__nlink_t nlink_t
VALUE rb_yield(VALUE)
Definition: vm_eval.c:1237
rb_event_flag_t ruby_vm_event_enabled_global_flags
Definition: vm.c:376
int rb_keyword_given_p(void)
Definition: eval.c:911
void arc4random_buf(void *, size_t)
void rb_match_unbusy(VALUE)
Definition: re.c:1301
int rb_signal_buff_size(void)
Definition: signal.c:726
const char *void rb_warning(const char *,...) __attribute__((format(printf
VALUE rb_struct_lookup(VALUE s, VALUE idx)
Definition: struct.c:1101
VALUE rb_get_path_check_to_string(VALUE)
Definition: file.c:196
void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE(*dumper)(VALUE), VALUE(*loader)(VALUE, VALUE))
Definition: marshal.c:134
struct rb_iseq_location_struct rb_iseq_location_t
VALUE rb_obj_is_mutex(VALUE obj)
Definition: thread_sync.c:131
VALUE rb_eval_cmd(VALUE, VALUE, int)
Definition: vm_eval.c:1824
double exp(double)
VALUE rb_wb_protected_newobj_of(VALUE, VALUE)
Definition: gc.c:2294
size_t st_index_t h
#define rb_fstring_cstr(str)
void setprogname(const char *)
#define ILL_COPROC
char * __strcpy_chk(char *, const char *, size_t)
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line)
Definition: ripper.c:13740
int sched_get_priority_min(int __policy)
long int lrintf(float)
int _mkstemp_r(struct _reent *, char *)
#define rb_ary_new_from_args(n,...)
int pthread_attr_getstacksize(const pthread_attr_t *, size_t *)
VALUE ID id
long strtol_l(const char *__restrict__, char **__restrict__, int, locale_t)
VALUE rb_hash_clear(VALUE)
Definition: hash.c:2769
const rb_iseq_t const VALUE exc
VALUE rb_proc_times(VALUE)
int tcsetpgrp(int __fildes, pid_t __pgrp_id)
int char char int _asprintf_r(struct _reent *, char **__restrict__, const char *__restrict__,...) __attribute__((__format__(__printf__
__mode_t mode_t
void rb_objspace_free(struct rb_objspace *)
Definition: gc.c:1615
long double floorl(long double)
VALUE rb_float_minus(VALUE x, VALUE y)
Definition: numeric.c:1048
int pthread_equal(pthread_t, pthread_t)
__FILE FILE
rb_gvar_setter_t rb_gvar_undef_setter
void mjit_mark(void)
#define __size_t
VALUE rb_big_mul_normal(VALUE x, VALUE y)
Definition: bignum.c:1561
VALUE rb_big_plus(VALUE, VALUE)
Definition: bignum.c:5824
void rb_thread_execute_interrupts(VALUE th)
Definition: thread.c:2283
rb_gvar_getter_t rb_gvar_val_getter
ID rb_intern_str(VALUE str)
Definition: symbol.c:666
int vdprintf(int, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg)
Definition: vm.c:2302
void Init_BareVM(void)
Definition: vm.c:3303
const rb_callable_method_entry_t * rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class)
Definition: vm_method.c:415
void rb_define_method(VALUE, const char *, VALUE(*)(), int)
VALUE rb_public_const_get_from(VALUE klass, ID id)
Definition: variable.c:2403
VALUE rb_autoload_p(VALUE, ID)
Definition: variable.c:2285
char * fgets(char *__restrict__, int, FILE *__restrict__)
long sysconf(int __name)
void Init_File(void)
Definition: file.c:6496
size_t __ssp_real_fread(void *__restrict__ __ptr, size_t __size, size_t __n, FILE *__restrict__ __fp) __asm__("" "fread")
#define rb_tainted_str_new_cstr(str)
long long llabs(long long)
VALUE rb_str_length(VALUE)
Definition: string.c:1843
int clearenv(void)
int getdtablesize(void)
void rb_clear_method_cache_by_class(VALUE)
Definition: vm_method.c:93
int ruby_native_thread_p(void)
Definition: thread.c:5276
VALUE rb_get_expanded_load_path(void)
Definition: load.c:97
void rb_fd_zero(rb_fdset_t *)
rb_method_definition_t * rb_method_definition_create(rb_method_type_t type, ID mid)
Definition: vm_method.c:348
int pthread_setname_np(pthread_t, const char *) __attribute__((__nonnull__(2)))
double _erand48_r(struct _reent *, unsigned short[3])
unsigned long __clockid_t
int unlinkat(int, const char *, int)
float fmaxf(float, float)
struct __pthread_t * pthread_t
VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n)
Definition: vm_backtrace.c:720
int rb_encdb_alias(const char *alias, const char *orig)
Definition: encoding.c:565
long _atol_r(struct _reent *, const char *__nptr)
VALUE(* rb_alloc_func_t)(VALUE)
rb_serial_t ruby_vm_global_method_state
Definition: vm.c:379
int pthread_mutexattr_destroy(pthread_mutexattr_t *)
float j1f(float)
char * strptime_l(const char *__restrict__, const char *__restrict__, struct tm *__restrict__, locale_t)
int pthread_yield(void)
double erf(double)
Definition: erf.c:71
int execve(const char *__path, char *const __argv[], char *const __envp[])
VALUE rb_iseq_realpath(const rb_iseq_t *iseq)
Definition: iseq.c:1033
VALUE rb_stdout
char * ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me)
Definition: vm_method.c:1592
void free(void *)
int fputs(const char *__restrict__, FILE *__restrict__)
int sigprocmask(int, const sigset_t *, sigset_t *)
void rb_syswait(pid_t pid)
VALUE rb_make_backtrace(void)
Definition: vm_backtrace.c:872
void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line)
Definition: vm_trace.c:1252
void rb_backref_set(VALUE)
Definition: vm.c:1310
void ruby_show_version(void)
Prints the version information of the CRuby interpreter to stdout.
Definition: version.c:119
VALUE rb_str_opt_plus(VALUE, VALUE)
Definition: string.c:1925
int rb_encdb_replicate(const char *alias, const char *orig)
Definition: encoding.c:450
void * __memcpy_chk(void *, const void *, size_t, size_t)
VALUE rb_current_realfilepath(void)
Definition: vm_eval.c:2462
struct st_table * rb_ivar_generic_ivtbl(void)
Definition: variable.c:803
double scalbn(double, int)
int rb_backtrace_iter_func(void *, VALUE, int, VALUE)
void __ssp_real_explicit_bzero(void *__buf, size_t __len) __asm__("" "explicit_bzero")
void rb_cv_set(VALUE, const char *, VALUE)
Definition: variable.c:3142
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval)
Definition: iseq.c:3262
void pthread_testcancel(void)
VALUE rb_hash_new(void)
Definition: hash.c:1523
int ruby_executable_node(void *n, int *status)
Checks the return value of ruby_options().
Definition: eval.c:306
size_t __ssp_real_wcstombs(char *__buf, const wchar_t *__src, size_t __len) __asm__("" "wcstombs")
void rb_backtrace(void)
Definition: vm_backtrace.c:829
long __time_t
int char char int int int int int int int int int int _vprintf_r(struct _reent *, const char *__restrict__, __gnuc_va_list) __attribute__((__format__(__printf__
void rb_execution_context_update(const rb_execution_context_t *ec)
Definition: vm.c:2474
void funlockfile(FILE *)
void rb_ast_delete_node(rb_ast_t *, NODE *n)
Definition: node.c:1227
VALUE rb_rational_canonicalize(VALUE x)
Definition: rational.c:2046
int daemon(int nochdir, int noclose)
int pthread_attr_setscope(pthread_attr_t *, int)
int rb_block_min_max_arity(int *max)
Definition: proc.c:1178
VALUE rb_struct_new(VALUE,...)
Definition: struct.c:730
#define stpncpy(dst, src, len)
int _rename_r(struct _reent *, const char *_old, const char *_new)
void _srand48_r(struct _reent *, long)
VALUE rb_mod_name(VALUE)
Definition: variable.c:102
@ VM_CHECKMATCH_TYPE_RESCUE
@ VM_CHECKMATCH_TYPE_CASE
@ VM_CHECKMATCH_TYPE_WHEN
void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
int rb_uv_to_utf8(char[6], unsigned long)
Definition: pack.c:1651
void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE)
Definition: st.c:2379
ssize_t pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
float pow10f(float)
VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv)
Definition: cont.c:2117
void rb_execution_context_mark(const rb_execution_context_t *ec)
Definition: vm.c:2502
#define rb_str_new_cstr(str)
int int FILE * _fmemopen_r(struct _reent *, void *__restrict__, size_t, const char *__restrict__)
size_t rb_gc_count(void)
Definition: gc.c:8727
struct rb_mjit_compile_info * rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body)
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict)
Definition: file.c:4470
long double erfcl(long double)
struct mjit_cont * mjit_cont_new(rb_execution_context_t *ec)
struct rb_cref_struct rb_cref_t
int int int int int int int int char char int int int int int int int int int char char int int int vfiscanf(FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
VALUE VALUE rb_vsprintf(const char *, va_list)
Definition: sprintf.c:1191
struct iseq_catch_table_entry entries[]
void * rb_parser_realloc(struct parser_params *, void *, size_t)
Definition: ripper.c:20200
char * getcwd(char *__buf, size_t __size)
st_table * rb_st_init_numtable(void)
VALUE rb_rational_den(VALUE rat)
Definition: rational.c:1978
long int __int64_t
const char * rb_class2name(VALUE)
Definition: variable.c:280
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line)
Definition: iseq.c:3206
VALUE rb_str_succ(VALUE)
Definition: string.c:4090
int cookie_seek_function_t(void *__cookie, _off64_t *__off, int __whence)
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd)
Definition: thread.c:1594
struct rb_call_info * CALL_INFO
double j0(double)
VALUE rb_sym_intern_ascii(const char *ptr, long len)
Definition: symbol.c:1032
st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never)
int mbtowc(wchar_t *__restrict__, const char *__restrict__, size_t)
float fdimf(float, float)
long fpathconf(int __fd, int __name)
VALUE rb_rational_mul(VALUE self, VALUE other)
Definition: rational.c:874
VALUE rb_search_class_path(VALUE)
Definition: variable.c:175
void rb_ary_store(VALUE, long, VALUE)
Definition: array.c:1079
VALUE rb_catch_obj(VALUE, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2332
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE *)
Calls a method.
Definition: vm_eval.c:980
#define ILL_ILLOPN
int rb_sourceline(void)
Definition: vm.c:1346
int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *)
int rb_is_local_name(VALUE name)
Definition: symbol.c:1068
long double fdiml(long double, long double)
void rb_st_clear(st_table *)
__loff_t loff_t
void rb_timespec_now(struct timespec *)
Definition: time.c:1873
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval)
Definition: hash.c:2017
void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock)
Definition: thread.c:434
long double lgammal(long double)
char * strerror_l(int, locale_t)
void rb_postponed_job_flush(rb_vm_t *vm)
Definition: vm_trace.c:1662
int pthread_rwlock_timedwrlock(pthread_rwlock_t *, const struct timespec *)
void rb_reset_coverages(void)
Definition: thread.c:5503
VALUE rb_usascii_str_new_static(const char *, long)
Definition: string.c:878
long lrand48(void)
VALUE rb_mutex_lock(VALUE mutex)
Definition: thread_sync.c:333
size_t ruby_stack_length(VALUE **)
Definition: gc.c:4647
VALUE rb_int_plus(VALUE x, VALUE y)
Definition: numeric.c:3615
st_table * rb_init_identtable(void)
Definition: hash.c:4286
int int int int int int int int char char int int int int int int int int int char * vasniprintf(char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
_ssize_t write(int __fd, const void *__buf, size_t __nbyte)
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)
Definition: vm_eval.c:265
VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
Definition: bignum.c:4274
char * getlogin(void)
Definition: win32.c:911
__uint16_t u_int16_t
int pthread_timedjoin_np(pthread_t, void **, const struct timespec *)
#define ILL_PRVOPC
void swab(const void *__restrict__, void *__restrict__, ssize_t)
VALUE rb_obj_instance_variables(VALUE)
Definition: variable.c:1579
rb_method_entry_t * rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def)
Definition: vm_method.c:397
VALUE rb_int_gt(VALUE x, VALUE y)
Definition: numeric.c:4257
long double logl(long double)
VALUE rb_numeric_quo(VALUE x, VALUE y)
Definition: rational.c:2026
int sigaction(int, const struct sigaction *, struct sigaction *)
VALUE rb_f_require(VALUE, VALUE)
Definition: load.c:853
VALUE rb_call_super(int, const VALUE *)
Definition: vm_eval.c:306
VALUE rb_ary_assoc(VALUE, VALUE)
Definition: array.c:4156
VALUE rb_big_divrem_gmp(VALUE x, VALUE y)
float atanf(float)
VALUE rb_ary_aref1(VALUE ary, VALUE i)
Definition: array.c:1595
double drand48(void)
long signed int _ssize_t
void ruby_set_stack_size(size_t)
void __cygwin_lock_fini(_LOCK_T *)
int setdtablesize(int)
#define FPE_FLTDIV
off_t lseek(int __fildes, off_t __offset, int __whence)
VALUE rb_int_succ(VALUE num)
Definition: numeric.c:3326
#define SI_USER
VALUE rb_big_le(VALUE x, VALUE y)
Definition: bignum.c:5507
long jrand48(unsigned short[3])
int sched_setaffinity(pid_t, size_t, const cpu_set_t *)
int _wctomb_r(struct _reent *, char *, wchar_t, _mbstate_t *)
unsigned long rb_num_t
int mkdir(const char *_path, mode_t __mode)
double log(double)
VALUE rb_ary_entry(VALUE, long)
Definition: array.c:1512
int * __signgam(void)
VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:3022
signed char int_fast8_t
int fflush(FILE *)
int rb_const_defined(VALUE, ID)
Definition: variable.c:2686
long double logbl(long double)
#define CLD_CONTINUED
unsigned short * _seed48_r(struct _reent *, unsigned short[3])
int pthread_getconcurrency(void)
void mjit_gc_start_hook(void)
int ruby_safe_level_2_error(void) __attribute__((error("$SAFE
float pow10l(float)
_ssize_t read(int __fd, void *__buf, size_t __nbyte)
char * ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve)
char * strndup(const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
void * rb_parser_load_file(VALUE parser, VALUE name)
Definition: ruby.c:2218
rb_gvar_getter_t rb_gvar_var_getter
void rb_thread_start_timer_thread(void)
Definition: thread.c:4430
#define getchar_unlocked()
pthread_t rb_nativethread_id_t
VALUE rb_file_dirname(VALUE fname)
Definition: file.c:4706
#define RSTRING_EMBED_LEN_MASK
#define stpcpy(dst, src)
double jn(int, double)
VALUE mjit_resume(void)
long jmp_buf[32]
VALUE rb_struct_s_keyword_init(VALUE klass)
Definition: struct.c:52
int pthread_continue(pthread_t)
struct rb_method_alias_struct rb_method_alias_t
NODE * ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
Definition: debug.c:125
int gethostname(char *__name, size_t __len)
int fls(int) __attribute__((__const__))
void * rawmemchr(const void *, int)
#define SI_MESGQ
VALUE rb_proc_alloc(VALUE klass)
Definition: proc.c:145
VALUE rb_complex_imag(VALUE z)
Definition: complex.c:743
void _tzset_r(struct _reent *)
char * asctime_r(const struct tm *__restrict__, char *__restrict__)
long double tgammal(long double)
#define CLD_DUMPED
ID rb_to_id(VALUE)
Definition: string.c:11146
int pthread_condattr_getclock(const pthread_condattr_t *, clockid_t *)
VALUE mjit_pause(_Bool wait_p)
VALUE rb_int_mul(VALUE x, VALUE y)
Definition: numeric.c:3704
void * ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1)))
Definition: gc.c:12008
int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t)
void rb_vm_inc_const_missing_count(void)
Definition: vm.c:386
int isnanl(long double)
int rb_dvar_defined(ID, const struct rb_iseq_struct *)
ID ruby_static_id_status
int rresvport(int *__alport)
void rb_mark_tbl_no_pin(struct st_table *)
Definition: gc.c:5027
struct rb_objspace * rb_objspace_alloc(void)
Definition: gc.c:1600
char * strsep(char **, const char *)
int sigpause(int) __asm__("" "__xpg_sigpause")
VALUE rb_default_home_dir(VALUE result)
Definition: file.c:3616
VALUE rb_default_rs
Definition: intern.h:586
float exp10f(float)
_sig_func_ptr sigset(int, _sig_func_ptr)
VALUE rb_data_object_zalloc(VALUE, size_t, RUBY_DATA_FUNC, RUBY_DATA_FUNC)
void rb_set_safe_level_force(int)
Definition: safe.c:38
ruby_robject_flags
Definition: ruby.h:915
unsigned long VALUE
Definition: ruby.h:102
void rb_secure_update(VALUE)
Definition: safe.c:116
long rb_num2long(VALUE)
Definition: numeric.c:2854
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type)
VALUE rb_float_new_in_heap(double)
Definition: numeric.c:895
ruby_rarray_flags
Definition: ruby.h:1027
unsigned short rb_fix2ushort(VALUE)
Definition: numeric.c:3074
unsigned long rb_num2ulong(VALUE)
Definition: numeric.c:2923
ruby_rvalue_flags
Definition: ruby.h:909
short rb_fix2short(VALUE)
Definition: numeric.c:3055
ruby_rstring_flags
Definition: ruby.h:977
short rb_num2short(VALUE)
Definition: numeric.c:3046
ruby_fl_type
Definition: ruby.h:841
ruby_rmodule_flags
Definition: ruby.h:954
unsigned short rb_num2ushort(VALUE)
Definition: numeric.c:3064
void rb_insecure_operation(void)
Definition: safe.c:122
rb_atomic_t cnt[RUBY_NSIG]
Definition: signal.c:503
#define f
st_index_t rb_st_hash_start(st_index_t h)
Definition: st.c:2069
char * sys_errlist[]
int sys_nerr
#define const
Definition: strftime.c:103
size_t rb_str_capacity(VALUE str)
Definition: string.c:712
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
_fpos64_t(* _seek64)(struct _reent *, void *, _fpos64_t, int)
unsigned char * _up
unsigned char _nbuf[1]
int(* _close)(struct _reent *, void *)
unsigned char * _p
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
struct _reent * _data
unsigned char _ubuf[3]
unsigned char _ubuf[3]
struct __sbuf _lb
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
unsigned char * _p
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
struct __sbuf _bf
unsigned char * _up
struct __sbuf _ub
unsigned char _nbuf[1]
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
struct _reent * _data
int(* _close)(struct _reent *, void *)
unsigned char * _base
struct _Bigint * _next
void(* _fns[32])(void)
struct _atexit * _next
struct _uc_xmmreg xmm[16]
__uint32_t padding[24]
struct _uc_fpxreg st[8]
struct _glue * _next
struct _pthread_cleanup_handler * next
unsigned short _add
unsigned short _mult[3]
unsigned short _seed[3]
struct _rand48 _r48
struct _reent::@8::@9 _reent
_mbstate_t _wcrtomb_state
_mbstate_t _mbrlen_state
struct __tm _localtime_buf
struct _glue __sglue
_mbstate_t _mblen_state
unsigned int _unused_rand
_mbstate_t _mbtowc_state
union _reent::@8 _new
_mbstate_t _wctomb_state
unsigned int _nmalloc[30]
_mbstate_t _wcsrtombs_state
struct _atexit _atexit0
__extension__ unsigned long long _rand_next
struct _Bigint * _p5s
_mbstate_t _mbrtowc_state
struct _Bigint * _result
void(* __cleanup)(struct _reent *)
struct __locale_t * _locale
_mbstate_t _mbsrtowcs_state
struct _Bigint ** _freelist
struct _atexit * _atexit
struct _reent::@8::@10 _unused
unsigned char * _nextf[30]
void(** _sig_func)(int)
__uint16_t padding[3]
__uint16_t significand[4]
__uint32_t element[4]
const VALUE v2
void(* func)(void)
const VALUE v1
const VALUE value
union MEMO::@33 u3
Definition: ruby.h:1048
unsigned int * digits
struct RBasic basic
union RBignum::@27 as
struct RBignum::@27::@28 heap
unsigned int ary[(8 *RVALUE_EMBED_LEN_MAX/4)]
rb_classext_t * ptr
rb_serial_t class_serial
struct RBasic basic
struct RBasic basic
Definition: ruby.h:1139
Definition: ruby.h:1134
struct RBasic basic
struct RBasic basic
struct ar_table_struct * ar
ar_hint_t ary[8]
union RHash::@29 as
const VALUE ifnone
union RHash::@30 ar_hint
rb_code_location_t nd_loc
struct rb_args_info * args
union RNode::@39 u2
struct rb_ary_pattern_info * apinfo
union RNode::@40 u3
struct RNode * node
struct rb_global_entry * entry
union RNode::@38 u1
Definition: ruby.h:922
Definition: ruby.h:1112
Definition: ruby.h:988
struct RStruct::@31::@32 heap
struct RBasic basic
const VALUE * ptr
const VALUE ary[RSTRUCT_EMBED_LEN_MAX]
union RStruct::@31 as
const struct rb_call_info_kw_arg * kw_arg
const unsigned char * bin
cookie_read_function_t * read
cookie_seek_function_t * seek
cookie_write_function_t * write
cookie_close_function_t * close
__fd_mask __fds_bits[(((64)+((((int) sizeof(__fd_mask) *8)) - 1))/(((int) sizeof(__fd_mask) *8)))]
catch_type
@ CATCH_TYPE_BREAK
rb_iseq_t * iseq
unsigned int cont
enum iseq_catch_table_entry::catch_type type
unsigned int start
unsigned int end
unsigned int sp
struct iseq_compile_data_storage * next
struct iseq_compile_data_ensure_node_stack * ensure_node_stack
const struct rb_builtin_function * builtin_function_table
const rb_compile_option_t * option
struct iseq_compile_data_storage * storage_current
const rb_iseq_t * current_block
struct iseq_compile_data::@60 node
struct iseq_compile_data_storage * storage_head
struct rb_id_table * ivar_cache_table
struct iseq_label_data * start_label
struct iseq_label_data * end_label
struct iseq_label_data * redo_label
const rb_cref_t * ic_cref
rb_serial_t ic_serial
VALUE value
size_t index
rb_serial_t ic_serial
int line_no
rb_event_flag_t events
struct timespec it_interval
struct timespec it_value
Definition: lex.c:34
struct list_node n
struct list_node * next
struct list_node * prev
long long int quot
long long int rem
long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))))
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))))
struct native_thread_data_struct::@43 cond
union native_thread_data_struct::@42 node
Definition: gc.c:90
node_buffer_t * node_buffer
struct rb_at_exit_list * next
rb_vm_at_exit_func * func
unsigned short first_lineno
const struct rb_block block
union rb_block::@54 as
struct rb_captured_block captured
enum rb_block_type type
enum method_missing_reason method_missing_reason
const struct rb_callable_method_entry_struct * me
rb_serial_t class_serial[(64 - sizeof(rb_serial_t) - sizeof(struct rb_callable_method_entry_struct *) - sizeof(uintptr_t) - sizeof(enum method_missing_reason) - sizeof(VALUE(*)(struct rb_execution_context_struct *e, struct rb_control_frame_struct *, struct rb_calling_info *, const struct rb_call_data *)))/sizeof(rb_serial_t)]
union rb_call_cache::@37 aux
VALUE(* call)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
struct rb_call_info ci
struct rb_call_cache cc
struct rb_call_info_kw_arg * kw_arg
ID called_id
VALUE flags
struct rb_method_definition_struct *const def
const VALUE defined_class
const VALUE owner
const struct vm_ifunc * ifunc
union rb_captured_block::@53 code
rb_subclass_entry_t ** parent_subclasses
rb_subclass_entry_t ** module_subclasses
In the case that this is an ICLASS, module_subclasses points to the link in the module's subclasses l...
struct st_table * iv_index_tbl
struct rb_id_table * m_tbl
struct rb_id_table * const_tbl
rb_subclass_entry_t * subclasses
struct rb_id_table * callable_m_tbl
VALUE value
rb_const_flag_t flag
VALUE file
int line
CREF (Class REFerence)
const rb_scope_visibility_t scope_visi
struct rb_cref_struct * next
VALUE(* e_proc)(VALUE)
VALUE marker
VALUE data2
struct rb_ensure_entry entry
struct rb_ensure_list * next
unsigned int env_size
struct rb_execarg::@34::@36 cmd
union rb_execarg::@34 invoke
struct waitpid_state * waitpid_state
struct rb_execarg::@34::@35 sh
enum method_missing_reason method_missing_reason
struct rb_thread_struct * thread_ptr
struct rb_execution_context_struct::@55 machine
struct rb_vm_protect_tag * protect_tag
struct rb_trace_arg_struct * trace_arg
ID id
struct rb_global_variable * var
rb_nativethread_cond_t switch_wait_cond
const struct rb_thread_struct * owner
rb_nativethread_cond_t switch_cond
const struct rb_thread_struct * timer
struct rb_event_hook_struct * hooks
struct rb_imemo_tmpbuf_struct * next
Definition: io.h:66
const struct iseq_insn_info_entry * body
struct rb_iseq_constant_body::iseq_insn_info insns_info
enum rb_iseq_constant_body::iseq_type type
struct rb_iseq_constant_body::@45 param
union iseq_inline_storage_entry * is_entries
const struct rb_iseq_constant_body::@45::rb_iseq_param_keyword * keyword
VALUE(* jit_func)(struct rb_execution_context_struct *, struct rb_control_frame_struct *)
struct rb_iseq_constant_body::@45::@47 flags
struct rb_call_data * call_data
struct iseq_catch_table * catch_table
const struct rb_iseq_struct * parent_iseq
struct rb_iseq_constant_body::@46 variable
struct rb_iseq_struct * local_iseq
struct rb_mjit_unit * jit_unit
void(* func)(rb_iseq_t *, struct iseq_link_anchor *, const void *)
struct rb_hook_list_struct * local_hooks
struct rb_iseq_constant_body * body
struct iseq_compile_data * compile_data
union rb_iseq_struct::@48 aux
struct rb_iseq_struct::@48::@49 loader
rb_event_flag_t global_trace_events
struct rb_iseq_struct::@48::@50 exec
struct rb_call_info_with_kwarg ci_kw
struct rb_method_entry_struct * original_me
struct rb_hook_list_struct * hooks
VALUE(* invoker)(VALUE recv, int argc, const VALUE *argv, VALUE(*func)())
enum method_optimized_type optimize_type
union rb_method_definition_struct::@41 body
struct rb_method_definition_struct *const def
ID called_id
VALUE flags
VALUE defined_class
VALUE owner
rb_iseq_t * iseqptr
iseq pointer, should be separated from iseqval
rb_cref_t * cref
class reference, should be marked
struct rb_method_entry_struct * orig_me
unsigned int is_from_method
unsigned int is_lambda
rb_method_visibility_t method_visi
rb_subclass_entry_t * next
VALUE klass
struct rb_thread_list_struct * next
struct rb_thread_struct * th
rb_execution_context_t * ec
native_thread_data_t native_thread_data
struct rb_calling_info * calling
unsigned int pending_interrupt_queue_checked
enum rb_thread_status status
rb_nativethread_id_t thread_id
rb_nativethread_lock_t interrupt_lock
struct rb_mutex_struct * keeping_mutexes
rb_thread_list_t * join_list
const rb_control_frame_t * cfp
rb_execution_context_t * ec
rb_unblock_function_t * func
struct rb_vm_protect_tag * prev
struct st_table * loaded_features_index
struct rb_objspace * objspace
rb_at_exit_list * at_exit
rb_global_vm_lock_t gvl
const struct rb_thread_struct * running_thread
struct st_table * ensure_rollback_table
struct st_table * loading_table
short redefined_flag[BOP_LAST_]
rb_nativethread_lock_t waitpid_lock
struct rb_thread_struct * main_thread
struct list_head waiting_fds
const struct rb_builtin_function * builtin_function_table
rb_hook_list_t global_hooks
struct list_head waiting_pids
struct list_head workqueue
struct rb_postponed_job_struct * postponed_job_buffer
const VALUE special_exceptions[ruby_special_error_count]
struct rb_vm_struct::@51 trap_list
struct rb_vm_struct::@52 default_params
struct list_head waiting_grps
unsigned int thread_report_on_exception
rb_nativethread_lock_t workqueue_lock
unsigned int thread_abort_on_exception
struct list_head living_threads
struct rb_vm_tag * prev
enum ruby_tag_type state
void(* sa_sigaction)(int, siginfo_t *, void *)
_sig_func_ptr sa_handler
void(* sigev_notify_function)(sigval_t)
pthread_attr_t * sigev_notify_attributes
unsigned int si_overrun
st_index_t(* hash)(st_data_t)
int(* compare)(st_data_t, st_data_t)
Definition: st.c:136
unsigned char bin_power
st_table_entry * entries
unsigned int rebuilds_num
st_index_t entries_bound
unsigned char entry_power
const struct st_hash_type * type
unsigned char size_ind
st_index_t entries_start
timestruc_t st_mtim
blksize_t st_blksize
timestruc_t st_atim
timestruc_t st_birthtim
timestruc_t st_ctim
suseconds_t tv_usec
const char * tm_zone
IFUNC (Internal FUNCtion)
struct vm_ifunc_argc argc
rb_block_call_func_t func
SVAR (Special VARiable)
const VALUE lastline
const VALUE cref_or_me
class reference or rb_method_entry_t
const struct rb_control_frame_struct * catch_frame
int rb_is_global_id(ID id)
Definition: symbol.c:866
int rb_is_instance_id(ID id)
Definition: symbol.c:872
int rb_is_junk_id(ID id)
Definition: symbol.c:890
int rb_is_const_id(ID id)
Definition: symbol.c:854
int rb_is_attrset_sym(VALUE sym)
Definition: symbol.c:902
int rb_is_class_id(ID id)
Definition: symbol.c:860
int rb_is_attrset_id(ID id)
Definition: symbol.c:878
int rb_is_local_id(ID id)
Definition: symbol.c:884
int rb_is_const_sym(VALUE sym)
Definition: symbol.c:896
Definition: dtoa.c:290
struct iseq_inline_storage_entry::@44 once
struct iseq_inline_iv_cache_entry iv_cache
VALUE value
struct rb_thread_struct * running_thread
struct iseq_inline_cache_entry cache
MJIT_FUNC_EXPORTED void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id)
Definition: variable.c:2307
VALUE rb_mod_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1739
void rb_iter_break(void)
Definition: vm.c:1546
void rb_vm_jump_tag_but_local_jump(int state)
Definition: vm.c:1510
VALUE rb_vm_top_self(void)
Definition: vm.c:3349
MJIT_FUNC_EXPORTED void rb_vm_localjump_error(const char *mesg, VALUE value, int reason)
Definition: vm.c:1471
st_table * rb_vm_fstring_table(void)
Definition: vm.c:3394
void rb_iter_break_value(VALUE val)
Definition: vm.c:1552
MJIT_FUNC_EXPORTED int rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id, struct ruby_dtrace_method_hook_args *args)
Definition: vm.c:392
MJIT_FUNC_EXPORTED const rb_callable_method_entry_t * rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me)
Definition: vm_method.c:996
rb_control_frame_t *FUNC_FASTCALL rb_insn_func_t(rb_execution_context_t *, rb_control_frame_t *)
Definition: vm_core.h:1143
void rb_throw(const char *tag, VALUE val)
Definition: vm_eval.c:2220
void rb_throw_obj(VALUE tag, VALUE value)
Definition: vm_eval.c:2195
rb_control_frame_t *FUNC_FASTCALL() rb_vm_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
MJIT_STATIC void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
Definition: vm_insnhelper.c:67
MJIT_STATIC void rb_error_arity(int argc, int min, int max)
rb_control_frame_t *FUNC_FASTCALL() rb_vm_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
MJIT_STATIC bool rb_simple_iseq_p(const rb_iseq_t *iseq)
MJIT_FUNC_EXPORTED void rb_vm_search_method_slowpath(struct rb_call_data *cd, VALUE klass)
bool rb_method_basic_definition_p_with_cc(struct rb_call_data *cd, VALUE klass, ID mid)
Definition: vm_method.c:2074
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker)
Definition: vm_method.c:120
#define env