2#define _FORTIFY_SOURCE 2
4#define CANONICALIZATION_FOR_MATHN 1
7#define RUBY_INTERNAL_H 1
9#define HAVE_RUBY_DEFINES_H 1
10#define HAVE_RUBY_ENCODING_H 1
11#define HAVE_RUBY_INTERN_H 1
12#define HAVE_RUBY_IO_H 1
13#define HAVE_RUBY_MISSING_H 1
14#define HAVE_RUBY_ONIGURUMA_H 1
15#define HAVE_RUBY_RE_H 1
16#define HAVE_RUBY_REGEX_H 1
17#define HAVE_RUBY_RUBY_H 1
18#define HAVE_RUBY_ST_H 1
19#define HAVE_RUBY_THREAD_H 1
20#define HAVE_RUBY_UTIL_H 1
21#define HAVE_RUBY_VERSION_H 1
22#define HAVE_RUBY_VM_H 1
24#define INCLUDE_RUBY_CONFIG_H 1
26#define HAVE_STDLIB_H 1
27#define HAVE_STRING_H 1
28#define HAVE_INTTYPES_H 1
29#define HAVE_STDINT_H 1
30#define HAVE_STRINGS_H 1
31#define HAVE_SYS_STAT_H 1
32#define HAVE_SYS_TYPES_H 1
33#define HAVE_UNISTD_H 1
37#define _DARWIN_C_SOURCE 1
39#define _HPUX_ALT_XOPEN_SOCKET_API 1
40#define _NETBSD_SOURCE 1
41#define _OPENBSD_SOURCE 1
42#define _POSIX_PTHREAD_SEMANTICS 1
43#define __STDC_WANT_IEC_60559_ATTRIBS_EXT__ 1
44#define __STDC_WANT_IEC_60559_BFP_EXT__ 1
45#define __STDC_WANT_IEC_60559_DFP_EXT__ 1
46#define __STDC_WANT_IEC_60559_FUNCS_EXT__ 1
47#define __STDC_WANT_IEC_60559_TYPES_EXT__ 1
48#define __STDC_WANT_LIB_EXT2__ 1
49#define __STDC_WANT_MATH_SPEC_FUNCS__ 1
50#define _TANDEM_SOURCE 1
51#define __EXTENSIONS__ 1
52#define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
53#define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
54#define HAVE_STMT_AND_DECL_IN_EXPR 1
55#define HAVE_CYGWIN_CONV_PATH 1
56#define HAVE_LIBCRYPT 1
58#define HAVE_DIRENT_H 1
60#define HAVE_STDBOOL_H 1
61#define HAVE_SYS_WAIT_H 1
66#define HAVE_IEEEFP_H 1
67#define HAVE_LANGINFO_H 1
68#define HAVE_LIMITS_H 1
69#define HAVE_LOCALE_H 1
70#define HAVE_MALLOC_H 1
71#define HAVE_PROCESS_H 1
73#define HAVE_STDALIGN_H 1
74#define HAVE_SYS_FCNTL_H 1
75#define HAVE_SYS_FILE_H 1
76#define HAVE_SYS_IOCTL_H 1
77#define HAVE_SYS_PARAM_H 1
78#define HAVE_SYS_RESOURCE_H 1
79#define HAVE_SYS_SELECT_H 1
80#define HAVE_SYS_SOCKET_H 1
81#define HAVE_SYS_SYSMACROS_H 1
82#define HAVE_SYS_TIME_H 1
83#define HAVE_SYS_TIMES_H 1
84#define HAVE_SYS_UIO_H 1
85#define HAVE_SYS_UTIME_H 1
87#define HAVE_UCONTEXT_H 1
92#define restrict __restrict__
93#define HAVE_LONG_LONG 1
98#define SIZEOF_LONG_LONG 8
99#define SIZEOF___INT64 0
100#define SIZEOF___INT128 16
101#define SIZEOF_OFF_T 8
102#define SIZEOF_VOIDP 8
103#define SIZEOF_FLOAT 4
104#define SIZEOF_DOUBLE 8
105#define SIZEOF_TIME_T 8
106#define SIZEOF_CLOCK_T 8
107#define PACKED_STRUCT(x) x __attribute__((packed))
108#define USE_UNALIGNED_MEMBER_ACCESS 1
109#define PRI_LL_PREFIX "ll"
111#define rb_pid_t pid_t
112#define SIGNEDNESS_OF_PID_T -1
113#define PIDT2NUM(v) INT2NUM(v)
114#define NUM2PIDT(v) NUM2INT(v)
115#define PRI_PIDT_PREFIX PRI_INT_PREFIX
117#define rb_uid_t uid_t
118#define SIGNEDNESS_OF_UID_T +1
119#define UIDT2NUM(v) UINT2NUM(v)
120#define NUM2UIDT(v) NUM2UINT(v)
121#define PRI_UIDT_PREFIX PRI_INT_PREFIX
123#define rb_gid_t gid_t
124#define SIGNEDNESS_OF_GID_T +1
125#define GIDT2NUM(v) UINT2NUM(v)
126#define NUM2GIDT(v) NUM2UINT(v)
127#define PRI_GIDT_PREFIX PRI_INT_PREFIX
129#define rb_time_t time_t
130#define SIGNEDNESS_OF_TIME_T -1
131#define TIMET2NUM(v) LONG2NUM(v)
132#define NUM2TIMET(v) NUM2LONG(v)
133#define PRI_TIMET_PREFIX PRI_LONG_PREFIX
135#define rb_dev_t dev_t
136#define SIGNEDNESS_OF_DEV_T +1
137#define DEVT2NUM(v) UINT2NUM(v)
138#define NUM2DEVT(v) NUM2UINT(v)
139#define PRI_DEVT_PREFIX PRI_INT_PREFIX
141#define rb_mode_t mode_t
142#define SIGNEDNESS_OF_MODE_T +1
143#define MODET2NUM(v) UINT2NUM(v)
144#define NUM2MODET(v) NUM2UINT(v)
145#define PRI_MODET_PREFIX PRI_INT_PREFIX
147#define rb_rlim_t rlim_t
148#define SIGNEDNESS_OF_RLIM_T +1
149#define RLIM2NUM(v) ULONG2NUM(v)
150#define NUM2RLIM(v) NUM2ULONG(v)
151#define PRI_RLIM_PREFIX PRI_LONG_PREFIX
153#define rb_off_t off_t
154#define SIGNEDNESS_OF_OFF_T -1
155#define OFFT2NUM(v) LONG2NUM(v)
156#define NUM2OFFT(v) NUM2LONG(v)
157#define PRI_OFFT_PREFIX PRI_LONG_PREFIX
158#define HAVE_CLOCKID_T 1
159#define rb_clockid_t clockid_t
160#define SIGNEDNESS_OF_CLOCKID_T +1
161#define CLOCKID2NUM(v) ULONG2NUM(v)
162#define NUM2CLOCKID(v) NUM2ULONG(v)
163#define PRI_CLOCKID_PREFIX PRI_LONG_PREFIX
164#define HAVE_PROTOTYPES 1
165#define TOKEN_PASTE(x,y) x ##y
166#define STRINGIZE(expr) STRINGIZE0(expr)
167#define HAVE_STDARG_PROTOTYPES 1
168#define HAVE_VA_ARGS_MACRO 1
169#define RUBY_ALIGNAS(x) __declspec(aligned(x))
170#define RUBY_ALIGNOF alignof
171#define CONSTFUNC(x) __attribute__ ((__const__)) x
172#define PUREFUNC(x) __attribute__ ((__pure__)) x
173#define NORETURN(x) __attribute__ ((__noreturn__)) x
174#define DEPRECATED(x) __attribute__ ((__deprecated__)) x
175#define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
176#define DEPRECATED_TYPE(mesg,x) __attribute__ ((__deprecated__ mesg)) x
177#define NOINLINE(x) __attribute__ ((__noinline__)) x
178#define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
179#define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
180#define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
181#define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
182#define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
183#define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
184#define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
185#define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
186#define WEAK(x) __attribute__ ((__weak__)) x
187#define HAVE_FUNC_WEAK 1
188#define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
189#define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x
190#define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
191#define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x
192#define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x
193#define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x
194#define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1
195#define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name)));
196#define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)
197#define HAVE_GCC_ATOMIC_BUILTINS 1
198#define HAVE_GCC_SYNC_BUILTINS 1
199#define UNREACHABLE __builtin_unreachable()
200#define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
201#define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
202#define RUBY_FUNCTION_NAME_STRING __func__
203#define ENUM_OVER_INT 1
204#define HAVE_DECL_SYS_NERR 1
205#define HAVE_DECL_GETENV 1
206#define SIZEOF_SIZE_T 8
207#define SIZEOF_PTRDIFF_T 8
208#define PRI_SIZE_PREFIX "z"
209#define PRI_PTRDIFF_PREFIX "t"
210#define HAVE_STRUCT_STAT_ST_BLKSIZE 1
211#define HAVE_STRUCT_STAT_ST_BLOCKS 1
212#define HAVE_STRUCT_STAT_ST_RDEV 1
213#define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
214#define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
215#define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG
216#define HAVE_STRUCT_STAT_ST_ATIM 1
217#define HAVE_STRUCT_STAT_ST_MTIM 1
218#define HAVE_STRUCT_STAT_ST_CTIM 1
219#define HAVE_STRUCT_TIMEVAL 1
220#define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
221#define HAVE_STRUCT_TIMESPEC 1
222#define HAVE_STRUCT_TIMEZONE 1
223#define HAVE_RB_FD_INIT 1
225#define SIZEOF_INT8_T 1
226#define HAVE_UINT8_T 1
227#define SIZEOF_UINT8_T 1
228#define HAVE_INT16_T 1
229#define SIZEOF_INT16_T 2
230#define HAVE_UINT16_T 1
231#define SIZEOF_UINT16_T 2
232#define HAVE_INT32_T 1
233#define SIZEOF_INT32_T 4
234#define HAVE_UINT32_T 1
235#define SIZEOF_UINT32_T 4
236#define HAVE_INT64_T 1
237#define SIZEOF_INT64_T 8
238#define HAVE_UINT64_T 1
239#define SIZEOF_UINT64_T 8
240#define HAVE_INT128_T 1
241#define int128_t __int128
242#define SIZEOF_INT128_T SIZEOF___INT128
243#define HAVE_UINT128_T 1
244#define uint128_t unsigned __int128
245#define SIZEOF_UINT128_T SIZEOF___INT128
246#define HAVE_INTPTR_T 1
247#define SIZEOF_INTPTR_T 8
248#define HAVE_UINTPTR_T 1
249#define SIZEOF_UINTPTR_T 8
250#define PRI_PTR_PREFIX "l"
251#define HAVE_SSIZE_T 1
252#define SIZEOF_SSIZE_T 8
253#define PRI_64_PREFIX "l"
254#define GETGROUPS_T gid_t
255#define RETSIGTYPE void
256#define HAVE_ALLOCA_H 1
263#define HAVE_EXPLICIT_BZERO 1
267#define HAVE_LGAMMA_R 1
268#define HAVE_MEMMOVE 1
270#define HAVE_NEXTAFTER 1
272#define HAVE_STRERROR 1
273#define HAVE_STRLCAT 1
274#define HAVE_STRLCPY 1
280#define HAVE_SIGNBIT 1
283#define HAVE_WORKING_VFORK 1
284#define HAVE_WORKING_FORK 1
285#define HAVE__LONGJMP 1
286#define HAVE_ARC4RANDOM_BUF 1
290#define HAVE_CLOCK_GETTIME 1
292#define HAVE_CRYPT_R 1
298#define HAVE_EACCESS 1
299#define HAVE_ENDGRENT 1
303#define HAVE_FDATASYNC 1
304#define HAVE_FDOPENDIR 1
306#define HAVE_FSTATAT 1
308#define HAVE_FTRUNCATE 1
310#define HAVE_GETGRNAM 1
311#define HAVE_GETGRNAM_R 1
312#define HAVE_GETGROUPS 1
313#define HAVE_GETLOGIN 1
314#define HAVE_GETLOGIN_R 1
315#define HAVE_GETPGID 1
316#define HAVE_GETPGRP 1
317#define HAVE_GETPRIORITY 1
318#define HAVE_GETPWNAM 1
319#define HAVE_GETPWNAM_R 1
320#define HAVE_GETPWUID 1
321#define HAVE_GETPWUID_R 1
322#define HAVE_GETRANDOM 1
323#define HAVE_GETRLIMIT 1
325#define HAVE_GETTIMEOFDAY 1
326#define HAVE_GMTIME_R 1
327#define HAVE_GRANTPT 1
328#define HAVE_INITGROUPS 1
330#define HAVE_ISSETUGID 1
338#define HAVE_LUTIMES 1
339#define HAVE_MALLOC_USABLE_SIZE 1
341#define HAVE_MEMALIGN 1
343#define HAVE_MEMRCHR 1
351#define HAVE_POSIX_FADVISE 1
352#define HAVE_POSIX_MEMALIGN 1
356#define HAVE_QSORT_R 1
357#define HAVE_READLINK 1
358#define HAVE_REALPATH 1
360#define HAVE_SCHED_GETAFFINITY 1
361#define HAVE_SEEKDIR 1
362#define HAVE_SETEGID 1
364#define HAVE_SETEUID 1
366#define HAVE_SETGROUPS 1
367#define HAVE_SETPGID 1
368#define HAVE_SETPGRP 1
369#define HAVE_SETREGID 1
370#define HAVE_SETREUID 1
371#define HAVE_SETRLIMIT 1
374#define HAVE_SHUTDOWN 1
375#define HAVE_SIGACTION 1
376#define HAVE_SIGALTSTACK 1
377#define HAVE_SIGPROCMASK 1
380#define HAVE_SYMLINK 1
381#define HAVE_SYSCONF 1
383#define HAVE_TELLDIR 1
386#define HAVE_TRUNCATE 1
387#define HAVE_UNSETENV 1
388#define HAVE_UTIMENSAT 1
391#define HAVE_WAITPID 1
392#define HAVE_CRYPT_H 1
393#define HAVE_STRUCT_CRYPT_DATA_INITIALIZED 1
394#define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
395#define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
396#define HAVE_BUILTIN___BUILTIN_BSWAP16 1
397#define HAVE_BUILTIN___BUILTIN_BSWAP32 1
398#define HAVE_BUILTIN___BUILTIN_BSWAP64 1
399#define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
400#define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
401#define HAVE_BUILTIN___BUILTIN_CLZ 1
402#define HAVE_BUILTIN___BUILTIN_CLZL 1
403#define HAVE_BUILTIN___BUILTIN_CLZLL 1
404#define HAVE_BUILTIN___BUILTIN_CTZ 1
405#define HAVE_BUILTIN___BUILTIN_CTZLL 1
406#define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
407#define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
408#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
409#define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
410#define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
411#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
412#define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
413#define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
414#define HAVE_BUILTIN___BUILTIN_TRAP 1
415#define HAVE_GNU_QSORT_R 1
416#define ATAN2_INF_C99 1
417#define HAVE_CLOCK_GETRES 1
420#define HAVE_TIMER_CREATE 1
421#define HAVE_TIMER_SETTIME 1
422#define HAVE_STRUCT_TM_TM_ZONE 1
423#define HAVE_TM_ZONE 1
424#define HAVE_STRUCT_TM_TM_GMTOFF 1
425#define HAVE_DAYLIGHT 1
426#define NEGATIVE_TIME_T 1
427#define POSIX_SIGNAL 1
429#define RSHIFT(x,y) ((x)>>(int)(y))
430#define HAVE__SC_CLK_TCK 1
431#define STACK_GROW_DIRECTION -1
432#define COROUTINE_H "coroutine/ucontext/Context.h"
434#define _THREAD_SAFE 1
435#define HAVE_LIBPTHREAD 1
436#define HAVE_SCHED_YIELD 1
437#define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
438#define HAVE_PTHREAD_ATTR_GETSTACK 1
439#define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
440#define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
441#define HAVE_PTHREAD_SIGMASK 1
442#define HAVE_PTHREAD_SETNAME_NP 1
443#define HAVE_PTHREAD_GETATTR_NP 1
444#define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(pthread_self(), name)
445#define SET_ANOTHER_THREAD_NAME(thid,name) pthread_setname_np(thid, name)
446#define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t *mc = &(uc)->uc_mcontext
447#define HAVE_GETCONTEXT 1
448#define HAVE_SETCONTEXT 1
449#define DLEXT_MAXLEN 3
451#define LIBDIR_BASENAME "lib"
452#define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat"
453#define HAVE__SETJMP 1
454#define RUBY_SETJMP(env) __builtin_setjmp((env))
455#define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
457#define HAVE_PTHREAD_H 1
458#define RUBY_PLATFORM "x86_64-msys"
459#define RUBY_DEFINES_H 1
460#define HAVE_ATTRIBUTE_ERRORFUNC 1
461#define HAVE_ATTRIBUTE_WARNINGFUNC 1
462#define GCC_VERSION_SINCE(major,minor,patchlevel) ((__GNUC__ > (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ > (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))))
463#define GCC_VERSION_BEFORE(major,minor,patchlevel) ((__GNUC__ < (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ < (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ <= (patchlevel))))))
464#define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
465#define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
466#define COLDFUNC __attribute__((cold))
467#define PRINTF_ARGS(decl,string_index,first_to_check) decl __attribute__((format(printf, string_index, first_to_check)))
468#define RB_GNUC_EXTENSION __extension__
469#define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
472#define __NEWLIB_H__ 1
473#define _NEWLIB_VERSION_H__ 1
474#define _NEWLIB_VERSION "4.1.0"
476#define __NEWLIB_MINOR__ 1
477#define __NEWLIB_PATCHLEVEL__ 0
478#define _WANT_IO_C99_FORMATS 1
479#define _WANT_IO_LONG_LONG 1
480#define _WANT_IO_LONG_DOUBLE 1
481#define _WANT_IO_POS_ARGS 1
482#define _REENT_CHECK_VERIFY 1
485#define _ATEXIT_DYNAMIC_ALLOC 1
486#define _HAVE_LONG_DOUBLE 1
487#define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
488#define _FVWRITE_IN_STREAMIO 1
489#define _FSEEK_OPTIMIZATION 1
490#define _WIDE_ORIENT 1
491#define _UNBUF_STREAM_OPT 1
492#define __SYS_CONFIG_H__
493#define __IEEE_LITTLE_ENDIAN
494#define _SUPPORTS_ERREXCEPT
495#define __OBSOLETE_MATH_DEFAULT 0
496#define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT
497#define _SYS_FEATURES_H
498#define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
499#define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)
501#define _ATFILE_SOURCE 1
502#undef _DEFAULT_SOURCE
503#define _DEFAULT_SOURCE 1
505#define _ISOC99_SOURCE 1
507#define _ISOC11_SOURCE 1
509#define _POSIX_SOURCE 1
510#undef _POSIX_C_SOURCE
511#define _POSIX_C_SOURCE 200809L
513#define _XOPEN_SOURCE 700
514#undef _XOPEN_SOURCE_EXTENDED
515#define _XOPEN_SOURCE_EXTENDED 1
517#define _POSIX_SOURCE 1
518#undef _POSIX_C_SOURCE
519#define _POSIX_C_SOURCE 200809L
521#define _ATFILE_SOURCE 1
522#define __ATFILE_VISIBLE 1
523#define __BSD_VISIBLE 1
524#define __GNU_VISIBLE 1
525#define __ISO_C_VISIBLE 2011
526#define __LARGEFILE_VISIBLE 1
527#define __MISC_VISIBLE 1
528#define __POSIX_VISIBLE 200809
529#define __SVID_VISIBLE 1
530#define __XSI_VISIBLE 700
531#define __SSP_FORTIFY_LEVEL 2
532#define _POSIX_VERSION 200809L
533#define _POSIX2_VERSION 200809L
534#define _XOPEN_VERSION __XSI_VISIBLE
535#define _POSIX_ADVISORY_INFO 200809L
536#define _POSIX_ASYNCHRONOUS_IO 200809L
537#define _POSIX_BARRIERS 200809L
538#define _POSIX_CHOWN_RESTRICTED 1
539#define _POSIX_CLOCK_SELECTION 200809L
540#define _POSIX_CPUTIME 200809L
541#define _POSIX_FSYNC 200809L
542#define _POSIX_IPV6 200809L
543#define _POSIX_JOB_CONTROL 1
544#define _POSIX_MAPPED_FILES 200809L
545#define _POSIX_MEMLOCK_RANGE 200809L
546#define _POSIX_MEMORY_PROTECTION 200809L
547#define _POSIX_MESSAGE_PASSING 200809L
548#define _POSIX_MONOTONIC_CLOCK 200809L
549#define _POSIX_NO_TRUNC 1
550#define _POSIX_PRIORITY_SCHEDULING 200809L
551#define _POSIX_RAW_SOCKETS 200809L
552#define _POSIX_READER_WRITER_LOCKS 200809L
553#define _POSIX_REALTIME_SIGNALS 200809L
554#define _POSIX_REGEXP 1
555#define _POSIX_SAVED_IDS 1
556#define _POSIX_SEMAPHORES 200809L
557#define _POSIX_SHARED_MEMORY_OBJECTS 200809L
558#define _POSIX_SHELL 1
559#define _POSIX_SPAWN 200809L
560#define _POSIX_SPIN_LOCKS 200809L
561#define _POSIX_SYNCHRONIZED_IO 200809L
562#define _POSIX_THREAD_ATTR_STACKADDR 200809L
563#define _POSIX_THREAD_ATTR_STACKSIZE 200809L
564#define _POSIX_THREAD_CPUTIME 200809L
565#define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
566#define _POSIX_THREAD_PROCESS_SHARED 200809L
567#define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
568#define _POSIX_THREADS 200809L
569#define _POSIX_TIMEOUTS 200809L
570#define _POSIX_TIMERS 200809L
571#define _POSIX_VDISABLE '\0'
572#define _POSIX2_C_VERSION _POSIX2_VERSION
573#define _POSIX2_C_BIND _POSIX2_VERSION
574#define _POSIX2_C_DEV _POSIX2_VERSION
575#define _POSIX2_CHAR_TERM _POSIX2_VERSION
576#define _POSIX2_SW_DEV _POSIX2_VERSION
577#define _POSIX2_UPE _POSIX2_VERSION
578#define _POSIX_V6_ILP32_OFF32 -1
579#define _POSIX_V6_ILP32_OFFBIG -1
580#define _POSIX_V6_LP64_OFF64 1
581#define _POSIX_V6_LPBIG_OFFBIG 1
582#define _POSIX_V7_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
583#define _POSIX_V7_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
584#define _POSIX_V7_LP64_OFF64 _POSIX_V6_LP64_OFF64
585#define _POSIX_V7_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
586#define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
587#define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
588#define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
589#define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
590#define _XOPEN_CRYPT 1
591#define _XOPEN_ENH_I18N 1
593#define __STDC_ISO_10646__ 201806L
594#define _POINTER_INT long
596#define __RAND_MAX 0x7fffffff
597#define _CYGWIN_CONFIG_H
598#define __DYNAMIC_REENT__
599#define __SYMBOL_PREFIX
600#define _SYMSTR(x) __SYMBOL_PREFIX #x
601#define __FILENAME_MAX__ 4096
602#define _READ_WRITE_RETURN_TYPE _ssize_t
603#define _READ_WRITE_BUFSIZE_TYPE size_t
604#define __LARGE64_FILES 1
605#define __USE_INTERNAL_STAT64 1
606#define __LINUX_ERRNO_EXTENSIONS__ 1
607#define _MB_EXTENDED_CHARSETS_ALL 1
608#define __HAVE_LOCALE_INFO__ 1
609#define __HAVE_LOCALE_INFO_EXTENDED__ 1
610#define _WANT_C99_TIME_FORMATS 1
611#define _GLIBC_EXTENSION 1
612#define _STDIO_BSD_SEMANTICS 1
613#define __TM_GMTOFF tm_gmtoff
614#define __TM_ZONE tm_zone
615#define _USE_LONG_TIME_T 1
617#define __IMPORT __declspec(dllimport)
618#define DEFAULT_LOCALE "C.UTF-8"
619#define _MB_EXTENDED_CHARSETS_ISO 1
620#define _MB_EXTENDED_CHARSETS_WINDOWS 1
624#define _LONG_DOUBLE long double
625#define _ATTRIBUTE(attrs) __attribute__ (attrs)
626#define _ELIDABLE_INLINE static __inline__
627#define _NOINLINE __attribute__ ((__noinline__))
628#define _NOINLINE_STATIC _NOINLINE static
633#define _MACHINE__DEFAULT_TYPES_H
634#define __EXP(x) __ ##x ##__
635#define __have_longlong64 1
636#define __have_long64 1
639#define ___int8_t_defined 1
642#define ___int16_t_defined 1
645#define ___int32_t_defined 1
648#define ___int64_t_defined 1
651#define ___int_least8_t_defined 1
654#define ___int_least16_t_defined 1
657#define ___int_least32_t_defined 1
660#define ___int_least64_t_defined 1
675#define _SIZE_T_DEFINED_
676#define _SIZE_T_DEFINED
677#define _BSD_SIZE_T_DEFINED_
678#define _SIZE_T_DECLARED
679#define ___int_size_t_h
686#define NULL ((void *)0)
688#define __PMT(args) args
691#define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname
692#define __ptr_t void *
693#define __long_double_t long double
694#define __attribute_malloc__
695#define __attribute_pure__
696#define __attribute_format_strfmon__(a,b)
701#define __has_extension __has_feature
702#define __has_feature(x) 0
705#define __GNUCLIKE_ASM 3
706#define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
707#define __GNUCLIKE___TYPEOF 1
708#define __GNUCLIKE___OFFSETOF 1
709#define __GNUCLIKE___SECTION 1
710#define __GNUCLIKE_CTOR_SECTION_HANDLING 1
711#define __GNUCLIKE_BUILTIN_CONSTANT_P 1
712#define __GNUCLIKE_BUILTIN_VARARGS 1
713#define __GNUCLIKE_BUILTIN_STDARG 1
714#define __GNUCLIKE_BUILTIN_VAALIST 1
715#define __GNUC_VA_LIST_COMPATIBILITY 1
716#define __compiler_membar() __asm __volatile(" " : : : "memory")
717#define __GNUCLIKE_BUILTIN_NEXT_ARG 1
718#define __GNUCLIKE_MATH_BUILTIN_RELOPS
719#define __GNUCLIKE_BUILTIN_MEMCPY 1
720#define __CC_SUPPORTS_INLINE 1
721#define __CC_SUPPORTS___INLINE 1
722#define __CC_SUPPORTS___INLINE__ 1
723#define __CC_SUPPORTS___FUNC__ 1
724#define __CC_SUPPORTS_WARNING 1
725#define __CC_SUPPORTS_VARADIC_XXX 1
726#define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
727#define __P(protos) protos
728#define __CONCAT1(x,y) x ## y
729#define __CONCAT(x,y) __CONCAT1(x,y)
730#define __STRING(x) #x
731#define __XSTRING(x) __STRING(x)
733#define __signed signed
734#define __volatile volatile
735#define __weak_symbol __attribute__((__weak__))
736#define __dead2 __attribute__((__noreturn__))
737#define __pure2 __attribute__((__const__))
738#define __unused __attribute__((__unused__))
739#define __used __attribute__((__used__))
740#define __packed __attribute__((__packed__))
741#define __aligned(x) __attribute__((__aligned__(x)))
742#define __section(x) __attribute__((__section__(x)))
743#define __alloc_size(x) __attribute__((__alloc_size__(x)))
744#define __alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))
745#define __alloc_align(x) __attribute__((__alloc_align__(x)))
746#define __generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)
747#define __min_size(x) static (x)
748#define __malloc_like __attribute__((__malloc__))
749#define __pure __attribute__((__pure__))
750#define __always_inline __inline__ __attribute__((__always_inline__))
751#define __noinline __attribute__ ((__noinline__))
752#define __nonnull(x) __attribute__((__nonnull__ x))
753#define __nonnull_all __attribute__((__nonnull__))
754#define __fastcall __attribute__((__fastcall__))
755#define __result_use_check __attribute__((__warn_unused_result__))
756#define __returns_twice __attribute__((__returns_twice__))
757#define __unreachable() __builtin_unreachable()
758#define __restrict restrict
759#define __predict_true(exp) __builtin_expect((exp), 1)
760#define __predict_false(exp) __builtin_expect((exp), 0)
761#define __null_sentinel __attribute__((__sentinel__))
762#define __exported __attribute__((__visibility__("default")))
764#define __offsetof(type,field) offsetof(type, field)
765#define __rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))
766#define __containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})
767#define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
768#define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
769#define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
770#define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
771#define __strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
772#define __printf0like(fmtarg,firstvararg)
773#define __strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
774#define __weak_reference(sym,alias) __asm__(".stabs \"_" #alias "\",11,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
775#define __warn_references(sym,msg) __asm__(".stabs \"" msg "\",30,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
776#define __FBSDID(s) struct __hack
777#define __RCSID(s) struct __hack
778#define __RCSID_SOURCE(s) struct __hack
779#define __SCCSID(s) struct __hack
780#define __COPYRIGHT(s) struct __hack
781#define __DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))
782#define __DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))
783#define __DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))
786#define _Null_unspecified
787#define __NULLABILITY_PRAGMA_PUSH
788#define __NULLABILITY_PRAGMA_POP
789#define __arg_type_tag(arg_kind,arg_idx,type_tag_idx)
790#define __datatype_type_tag(kind,type)
791#define __lock_annotate(x)
792#define __lockable __lock_annotate(lockable)
793#define __locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))
794#define __locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))
795#define __trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))
796#define __trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))
797#define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
798#define __asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))
799#define __asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))
800#define __requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))
801#define __requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))
802#define __requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))
803#define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
804#define __nosanitizeaddress
805#define __nosanitizethread
806#define __guarded_by(x) __lock_annotate(guarded_by(x))
807#define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))
810#define _ANSI_STDDEF_H
816#define _BSD_PTRDIFF_T_
817#define ___int_ptrdiff_t_h
818#define _GCC_PTRDIFF_T
819#define _PTRDIFF_T_DECLARED
821#undef __need_ptrdiff_t
831#define _WCHAR_T_DEFINED_
832#define _WCHAR_T_DEFINED
834#define ___int_wchar_t_h
835#define __INT_WCHAR_T_H
837#define _WCHAR_T_DECLARED
842#define NULL ((void *)0)
844#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
845#define _GCC_MAX_ALIGN_T
847 long long __max_align_ll
__attribute__((__aligned__(__alignof__(
long long))));
848 long double __max_align_ld
__attribute__((__aligned__(__alignof__(
long double))));
850#define __need___va_list
851#undef __need___va_list
852#define __GNUC_VA_LIST
855#define _VA_LIST_DEFINED
860#undef __need_ptrdiff_t
867#define NULL ((void *)0)
869#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
870#define _MACHINE__TYPES_H
871#define __machine_blkcnt_t_defined
873#define __machine_blksize_t_defined
875#define __machine_dev_t_defined
877#define __machine_fsblkcnt_t_defined
879#define __machine_fsfilcnt_t_defined
881#define __machine_uid_t_defined
883#define __machine_gid_t_defined
885#define __machine_ino_t_defined
887#define __machine_key_t_defined
889#define __machine_sa_family_t_defined
891#define __machine_socklen_t_defined
904#define unsigned signed
914 unsigned char __wchb[4];
918#define _CLOCK_T_ unsigned long
922#define _CLOCKID_T_ unsigned long
924#define _TIMER_T_ unsigned long
936#define _LOCK_RECURSIVE_T _LOCK_T
937#define _LOCK_T_RECURSIVE_INITIALIZER ((_LOCK_T)18)
938#define _LOCK_T_INITIALIZER ((_LOCK_T)19)
939#define __LOCK_INIT(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_INITIALIZER;
940#define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_RECURSIVE_INITIALIZER;
941#define __lock_init(__lock) __cygwin_lock_init(&__lock)
942#define __lock_init_recursive(__lock) __cygwin_lock_init_recursive(&__lock)
943#define __lock_close(__lock) __cygwin_lock_fini(&__lock)
944#define __lock_close_recursive(__lock) __cygwin_lock_fini(&__lock)
945#define __lock_acquire(__lock) __cygwin_lock_lock(&__lock)
946#define __lock_acquire_recursive(__lock) __cygwin_lock_lock(&__lock)
947#define __lock_try_acquire(lock) __cygwin_lock_trylock(&__lock)
948#define __lock_try_acquire_recursive(lock) __cygwin_lock_trylock(&__lock)
949#define __lock_release(__lock) __cygwin_lock_unlock(&__lock)
950#define __lock_release_recursive(__lock) __cygwin_lock_unlock(&__lock)
978#define _ATEXIT_SIZE 32
991#define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
992#define _REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT,
997#define _REENT_SMALL_CHECK_INIT(ptr)
1064#define _RAND48_SEED_0 (0x330e)
1065#define _RAND48_SEED_1 (0xabcd)
1066#define _RAND48_SEED_2 (0x1234)
1067#define _RAND48_MULT_0 (0xe66d)
1068#define _RAND48_MULT_1 (0xdeec)
1069#define _RAND48_MULT_2 (0x0005)
1070#define _RAND48_ADD (0x000b)
1076#define _REENT_EMERGENCY_SIZE 25
1077#define _REENT_ASCTIME_SIZE 26
1078#define _REENT_SIGNAL_SIZE 24
1132#define _REENT_STDIO_STREAM(var,index) &(var)->__sf[index]
1133#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} }
1134#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; }
1135#define _REENT_CHECK_RAND48(ptr)
1136#define _REENT_CHECK_MP(ptr)
1137#define _REENT_CHECK_TM(ptr)
1138#define _REENT_CHECK_ASCTIME_BUF(ptr)
1139#define _REENT_CHECK_EMERGENCY(ptr)
1140#define _REENT_CHECK_MISC(ptr)
1141#define _REENT_CHECK_SIGNAL_BUF(ptr)
1142#define _REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)
1143#define _REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)
1144#define _REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)
1145#define _REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)
1146#define _REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)
1147#define _REENT_MP_RESULT(ptr) ((ptr)->_result)
1148#define _REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)
1149#define _REENT_MP_P5S(ptr) ((ptr)->_p5s)
1150#define _REENT_MP_FREELIST(ptr) ((ptr)->_freelist)
1151#define _REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)
1152#define _REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)
1153#define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
1154#define _REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)
1155#define _REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)
1156#define _REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)
1157#define _REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)
1158#define _REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)
1159#define _REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)
1160#define _REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)
1161#define _REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)
1162#define _REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)
1163#define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)
1164#define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)
1165#define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))
1166#define _REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }
1167#define _Kmax (sizeof (size_t) << 3)
1168#define __ATTRIBUTE_IMPURE_PTR__
1173#define _REENT (__getreent())
1174#define _GLOBAL_REENT _global_impure_ptr
1175#define _GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)
1181#define __BIT_TYPES_DEFINED__ 1
1183#define _SYS__STDINT_H
1185#define _INT8_T_DECLARED
1187#define _UINT8_T_DECLARED
1188#define __int8_t_defined 1
1190#define _INT16_T_DECLARED
1192#define _UINT16_T_DECLARED
1193#define __int16_t_defined 1
1195#define _INT32_T_DECLARED
1197#define _UINT32_T_DECLARED
1198#define __int32_t_defined 1
1200#define _INT64_T_DECLARED
1202#define _UINT64_T_DECLARED
1203#define __int64_t_defined 1
1205#define _INTMAX_T_DECLARED
1207#define _UINTMAX_T_DECLARED
1209#define _INTPTR_T_DECLARED
1211#define _UINTPTR_T_DECLARED
1212#define __MACHINE_ENDIAN_H__
1213#define _BITS_ENDIAN_H_
1214#define __BIG_ENDIAN 4321
1215#define __LITTLE_ENDIAN 1234
1216#define __BYTE_ORDER __LITTLE_ENDIAN
1217#define _LITTLE_ENDIAN __LITTLE_ENDIAN
1218#define _BIG_ENDIAN __BIG_ENDIAN
1219#define _PDP_ENDIAN __PDP_ENDIAN
1220#define _BYTE_ORDER __BYTE_ORDER
1221#define __machine_host_to_from_network_defined
1227 __asm__(
"bswap %0" :
"=r" (_x) :
"0" (_x));
1238#define __htonl(_x) __ntohl(_x)
1239#define __htons(_x) __ntohs(_x)
1240#define _QUAD_HIGHWORD 1
1241#define _QUAD_LOWWORD 0
1242#define LITTLE_ENDIAN _LITTLE_ENDIAN
1243#define BIG_ENDIAN _BIG_ENDIAN
1244#define PDP_ENDIAN _PDP_ENDIAN
1245#define BYTE_ORDER _BYTE_ORDER
1246#define __bswap16(_x) __builtin_bswap16(_x)
1247#define __bswap32(_x) __builtin_bswap32(_x)
1248#define __bswap64(_x) __builtin_bswap64(_x)
1249#define _SYS_SELECT_H
1250#define _SYS__SIGSET_H_
1252#define _SYS__TIMEVAL_H_
1254#define _SUSECONDS_T_DECLARED
1256#define __time_t_defined
1257#define _TIME_T_DECLARED
1258#define _TIMEVAL_DEFINED
1263#define _SYS_TIMESPEC_H_
1264#define _SYS__TIMESPEC_H_
1269#define TIMEVAL_TO_TIMESPEC(tv,ts) do { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; } while (0)
1270#define TIMESPEC_TO_TIMEVAL(tv,ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0)
1275#define _SIGSET_T_DECLARED
1277#define _SYS_TYPES_FD_SET
1278#define FD_SETSIZE 64
1281#define _NFDBITS ((int)sizeof(__fd_mask) * 8)
1282#define NFDBITS _NFDBITS
1283#define _howmany(x,y) (((x) + ((y) - 1)) / (y))
1287#define fds_bits __fds_bits
1288#define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS))
1289#define FD_CLR(n,p) ((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n))
1290#define FD_COPY(f,t) (void)(*(t) = *(f))
1291#define FD_ISSET(n,p) (((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0)
1292#define FD_SET(n,p) ((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n))
1293#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)
1298#define physadr physadr_t
1301#define _IN_ADDR_T_DECLARED
1303#define _IN_PORT_T_DECLARED
1306#define __u_char_defined
1308#define __u_short_defined
1310#define __u_int_defined
1312#define __u_long_defined
1313#define _BSDTYPES_DEFINED
1318#define _BLKCNT_T_DECLARED
1320#define _BLKSIZE_T_DECLARED
1322#define __clock_t_defined
1323#define _CLOCK_T_DECLARED
1325#define __daddr_t_defined
1327#define __caddr_t_defined
1330#define _FSBLKCNT_T_DECLARED
1332#define _ID_T_DECLARED
1334#define _INO_T_DECLARED
1336#define _OFF_T_DECLARED
1338#define _DEV_T_DECLARED
1340#define _UID_T_DECLARED
1342#define _GID_T_DECLARED
1344#define _PID_T_DECLARED
1346#define _KEY_T_DECLARED
1348#define _SSIZE_T_DECLARED
1350#define _MODE_T_DECLARED
1352#define _NLINK_T_DECLARED
1354#define __clockid_t_defined
1355#define _CLOCKID_T_DECLARED
1357#define __timer_t_defined
1358#define _TIMER_T_DECLARED
1360#define _USECONDS_T_DECLARED
1362#define _SYS__PTHREADTYPES_H_
1363#define _SYS_CPUSET_H_
1365#define __CPU_SETSIZE 1024
1366#define __NCPUBITS (8 * sizeof (__cpu_mask))
1367#define __CPU_GROUPMAX (__CPU_SETSIZE / __NCPUBITS)
1368#define __CPUELT(cpu) ((cpu) / __NCPUBITS)
1369#define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
1375#define CPU_ALLOC_SIZE(num) ((num+__NCPUBITS-1) / __NCPUBITS) * sizeof (__cpu_mask)
1376#define CPU_ALLOC(num) __builtin_malloc (CPU_ALLOC_SIZE(num))
1377#define CPU_FREE(set) __builtin_free (set)
1378#define CPU_ZERO_S(siz,set) __builtin_memset (set, 0, siz)
1379#define CPU_SET_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu);
1380#define CPU_CLR_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu));
1381#define CPU_ISSET_S(cpu,siz,set) ({int res = 0; if (cpu < 8 * siz) res = !!((set)->__bits[__CPUELT(cpu)] & __CPUMASK(cpu)); res;})
1382#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;})
1383#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];
1384#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];
1385#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];
1386#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;})
1387#define CPU_ZERO(set) CPU_ZERO_S(sizeof (cpu_set_t), set)
1388#define CPU_SET(cpu,set) CPU_SET_S(cpu, sizeof (cpu_set_t), set)
1389#define CPU_CLR(cpu,set) CPU_CLR_S(cpu, sizeof (cpu_set_t), set)
1390#define CPU_ISSET(cpu,set) CPU_ISSET_S(cpu, sizeof (cpu_set_t), set)
1391#define CPU_COUNT(set) CPU_COUNT_S(sizeof (cpu_set_t), set)
1392#define CPU_AND(dst,src1,src2) CPU_AND_S(sizeof (cpu_set_t), dst, src1, src2)
1393#define CPU_OR(dst,src1,src2) CPU_OR_S(sizeof (cpu_set_t), dst, src1, src2)
1394#define CPU_XOR(dst,src1,src2) CPU_XOR_S(sizeof (cpu_set_t), dst, src1, src2)
1395#define CPU_EQUAL(src1,src2) CPU_EQUAL_S(sizeof (cpu_set_t), src1, src2)
1396#define CPU_SETSIZE __CPU_SETSIZE
1416#define __LONG_LONG_PAIR(HI,LO) LO, HI
1417#define _BITS_BYTESWAP_H
1418static __inline
unsigned short
1419__bswap_16 (
unsigned short __x)
1421 return (__x >> 8) | (__x << 8);
1423static __inline
unsigned int
1424__bswap_32 (
unsigned int __x)
1426 return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
1428static __inline
unsigned long long
1429__bswap_64 (
unsigned long long __x)
1431 return (((
unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
1433#define htobe16(x) __bswap_16(x)
1434#define htobe32(x) __bswap_32(x)
1435#define htobe64(x) __bswap_64(x)
1436#define be16toh(x) __bswap_16(x)
1437#define be32toh(x) __bswap_32(x)
1438#define be64toh(x) __bswap_64(x)
1439#define htole16(x) (x)
1440#define htole32(x) (x)
1441#define htole64(x) (x)
1442#define le16toh(x) (x)
1443#define le32toh(x) (x)
1444#define le64toh(x) (x)
1445#define _WORDSIZE_H 1
1446#define __WORDSIZE 64
1447#define __WORDSIZE_COMPAT32 1
1448#define __timespec_t_defined
1450#define __timestruc_t_defined
1460#define __BIT_TYPES_DEFINED__ 1
1461#define __vm_offset_t_defined
1463#define __vm_size_t_defined
1465#define __vm_object_t_defined
1467#define __addr_t_defined
1469#define _SYS_SYSMACROS_H
1470static __inline__
int gnu_dev_major(
dev_t);
1471static __inline__
int gnu_dev_minor(
dev_t);
1472static __inline__
dev_t gnu_dev_makedev(
int,
int);
1473static __inline__
int
1474gnu_dev_major(
dev_t dev)
1476 return (
int)(((dev) >> 16) & 0xffff);
1478static __inline__
int
1479gnu_dev_minor(
dev_t dev)
1481 return (
int)((dev) & 0xffff);
1483static __inline__
dev_t
1484gnu_dev_makedev(
int maj,
int min)
1486 return (((maj) << 16) | ((min) & 0xffff));
1488#define major(dev) gnu_dev_major(dev)
1489#define minor(dev) gnu_dev_minor(dev)
1490#define makedev(maj,min) gnu_dev_makedev(maj, min)
1491#undef __need_inttypes
1494#define __FILE_defined
1496#define _SYS_STDIO_H_
1497#define _flockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_lock ((_LOCK_T *)&(fp)->_lock); })
1498#define _ftrylockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __cygwin_lock_trylock ((_LOCK_T *)&(fp)->_lock))
1499#define _funlockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_unlock ((_LOCK_T *)&(fp)->_lock); })
1504#define __SLBF 0x0001
1505#define __SNBF 0x0002
1509#define __SEOF 0x0020
1510#define __SERR 0x0040
1511#define __SMBF 0x0080
1512#define __SAPP 0x0100
1513#define __SSTR 0x0200
1514#define __SOPT 0x0400
1515#define __SNPT 0x0800
1516#define __SOFF 0x1000
1517#define __SORD 0x2000
1518#define __SCLE 0x4000
1519#define __SL64 0x8000
1520#define __SNLK 0x0001
1521#define __SWID 0x2000
1528#define FILENAME_MAX __FILENAME_MAX__
1529#define L_tmpnam FILENAME_MAX
1530#define P_tmpdir "/tmp"
1535#define stdin (_REENT->_stdin)
1536#define stdout (_REENT->_stdout)
1537#define stderr (_REENT->_stderr)
1538#define _stdin_r(x) ((x)->_stdin)
1539#define _stdout_r(x) ((x)->_stdout)
1540#define _stderr_r(x) ((x)->_stderr)
1541#define __VALIST __gnuc_va_list
1822 int (*__readfn)(
void *__c,
char *
__buf,
1824 int (*__writefn)(
void *__c,
const char *
__buf,
1827 int (*__closefn)(
void *__c));
1829 int (*__readfn)(
void *__c,
char *
__buf,
1831 int (*__writefn)(
void *__c,
const char *
__buf,
1834 int (*__closefn)(
void *__c));
1835#define fropen(__cookie,__fn) funopen(__cookie, __fn, (int (*)())0, (fpos_t (*)())0, (int (*)())0)
1836#define fwopen(__cookie,__fn) funopen(__cookie, (int (*)())0, __fn, (fpos_t (*)())0, (int (*)())0)
1854#define __sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
1855static __inline__
int __sgetc_r(
struct _reent *__ptr,
FILE *__p);
1856static __inline__
int __sgetc_r(
struct _reent *__ptr,
FILE *__p)
1858 int __c = (--(__p)->_r < 0 ?
__srget_r(__ptr, __p) : (
int)(*(__p)->_p++));
1859 if ((__p->
_flags & 0x4000) && (__c ==
'\r'))
1861 int __c2 = (--(__p)->_r < 0 ?
__srget_r(__ptr, __p) : (
int)(*(__p)->_p++));
1869static __inline__
int __sputc_r(
struct _reent *_ptr,
int _c,
FILE *_p) {
1870 if ((_p->
_flags & 0x4000) && _c ==
'\n')
1871 __sputc_r (_ptr,
'\r', _p);
1872 if (--_p->
_w >= 0 || (_p->
_w >= _p->
_lbfsize && (
char)_c !=
'\n'))
1873 return (*_p->
_p++ = _c);
1877#define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))
1878#define __sferror(p) ((int)(((p)->_flags & __SERR) != 0))
1879#define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
1880#define __sfileno(p) ((p)->_file)
1881#define feof(p) __sfeof(p)
1882#define ferror(p) __sferror(p)
1883#define clearerr(p) __sclearerr(p)
1884#define feof_unlocked(p) __sfeof(p)
1885#define ferror_unlocked(p) __sferror(p)
1886#define clearerr_unlocked(p) __sclearerr(p)
1888_getchar_unlocked(
void)
1892 return (__sgetc_r(_ptr, ((_ptr)->
_stdin)));
1895_putchar_unlocked(
int _c)
1899 return (__sputc_r(_ptr, _c, ((_ptr)->
_stdout)));
1901#define getchar_unlocked() _getchar_unlocked()
1902#define putchar_unlocked(_c) _putchar_unlocked(_c)
1903#define fast_putc(x,p) (--(p)->_w < 0 ? __swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
1907#define _SSP_STDIO_H_
1909#define __ssp_real_(fun) __ssp_real_ ## fun
1910#define __ssp_real(fun) __ssp_real_(fun)
1911#define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
1912#define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1)
1913#define __ssp_bos0(ptr) __builtin_object_size(ptr, 0)
1914#define __ssp_check(buf,len,bos) if (bos(buf) != (size_t)-1 && len > bos(buf)) __chk_fail()
1915#define __ssp_decl(rtype,fun,args) rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); __ssp_inline rtype fun args
1916#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; }
1917#define __ssp_redirect(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos)
1918#define __ssp_redirect0(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos0)
1919#define __ssp_overlap(a,b,l) (((a) <= (b) && (b) < (a) + (l)) || ((b) <= (a) && (a) < (b) + (l)))
1938#define sprintf(str,...) __builtin___sprintf_chk(str, 0, __ssp_bos(str), __VA_ARGS__)
1939#define vsprintf(str,fmt,ap) __builtin___vsprintf_chk(str, 0, __ssp_bos(str), fmt, ap)
1940#define snprintf(str,len,...) __builtin___snprintf_chk(str, len, 0, __ssp_bos(str), __VA_ARGS__)
1941#define vsnprintf(str,len,fmt,ap) __builtin___vsnprintf_chk(str, len, 0, __ssp_bos(str), fmt, ap)
1942#define gets(str) __gets_chk(str, __ssp_bos(str))
1967#define __need_size_t
1969#undef __need_ptrdiff_t
1971#undef __need_wchar_t
1973#define NULL ((void *)0)
1975#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
1977#define _CLOCKS_PER_SEC_ 1000
1978#define CLOCKS_PER_SEC _CLOCKS_PER_SEC_
1979#define CLK_TCK CLOCKS_PER_SEC
1980#define _SYS__LOCALE_H
2030#define tzname _tzname
2031#define _CYGWIN_TIME_H
2035#define TIMER_RELTIME 0
2040#define _SYS_SIGNAL_H
2042#define _SYS__INTSUP_H
2043#define __STDINT_EXP(x) __ ##x ##__
2068#define _INTPTR_EQ_LONG
2077#define __LEAST8 "hh"
2078#define __LEAST16 "h"
2080#define __LEAST64 "l"
2099#define __int_least8_t_defined 1
2102#define __int_least16_t_defined 1
2105#define __int_least32_t_defined 1
2108#define __int_least64_t_defined 1
2111#define __int_fast8_t_defined 1
2114#define __int_fast16_t_defined 1
2117#define __int_fast32_t_defined 1
2120#define __int_fast64_t_defined 1
2121#define INTPTR_MIN (-__INTPTR_MAX__ - 1)
2122#define INTPTR_MAX (__INTPTR_MAX__)
2123#define UINTPTR_MAX (__UINTPTR_MAX__)
2124#define INT8_MIN (-__INT8_MAX__ - 1)
2125#define INT8_MAX (__INT8_MAX__)
2126#define UINT8_MAX (__UINT8_MAX__)
2127#define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
2128#define INT_LEAST8_MAX (__INT_LEAST8_MAX__)
2129#define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)
2130#define INT16_MIN (-__INT16_MAX__ - 1)
2131#define INT16_MAX (__INT16_MAX__)
2132#define UINT16_MAX (__UINT16_MAX__)
2133#define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
2134#define INT_LEAST16_MAX (__INT_LEAST16_MAX__)
2135#define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)
2136#define INT32_MIN (-__INT32_MAX__ - 1)
2137#define INT32_MAX (__INT32_MAX__)
2138#define UINT32_MAX (__UINT32_MAX__)
2139#define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
2140#define INT_LEAST32_MAX (__INT_LEAST32_MAX__)
2141#define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)
2142#define INT64_MIN (-__INT64_MAX__ - 1)
2143#define INT64_MAX (__INT64_MAX__)
2144#define UINT64_MAX (__UINT64_MAX__)
2145#define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
2146#define INT_LEAST64_MAX (__INT_LEAST64_MAX__)
2147#define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)
2148#define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
2149#define INT_FAST8_MAX (__INT_FAST8_MAX__)
2150#define UINT_FAST8_MAX (__UINT_FAST8_MAX__)
2151#define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
2152#define INT_FAST16_MAX (__INT_FAST16_MAX__)
2153#define UINT_FAST16_MAX (__UINT_FAST16_MAX__)
2154#define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
2155#define INT_FAST32_MAX (__INT_FAST32_MAX__)
2156#define UINT_FAST32_MAX (__UINT_FAST32_MAX__)
2157#define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
2158#define INT_FAST64_MAX (__INT_FAST64_MAX__)
2159#define UINT_FAST64_MAX (__UINT_FAST64_MAX__)
2160#define INTMAX_MAX (__INTMAX_MAX__)
2161#define INTMAX_MIN (-INTMAX_MAX - 1)
2162#define UINTMAX_MAX (__UINTMAX_MAX__)
2163#define SIZE_MAX (__SIZE_MAX__)
2164#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
2165#define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))
2166#define PTRDIFF_MAX (__PTRDIFF_MAX__)
2167#define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
2168#define WCHAR_MIN (__WCHAR_MIN__)
2169#define WCHAR_MAX (__WCHAR_MAX__)
2170#define WINT_MAX (__WINT_MAX__)
2171#define WINT_MIN (__WINT_MIN__)
2172#define INT8_C(x) __INT8_C(x)
2173#define UINT8_C(x) __UINT8_C(x)
2174#define INT16_C(x) __INT16_C(x)
2175#define UINT16_C(x) __UINT16_C(x)
2176#define INT32_C(x) __INT32_C(x)
2177#define UINT32_C(x) __UINT32_C(x)
2178#define INT64_C(x) __INT64_C(x)
2179#define UINT64_C(x) __UINT64_C(x)
2180#define INTMAX_C(x) __INTMAX_C(x)
2181#define UINTMAX_C(x) __UINTMAX_C(x)
2182#define _GCC_WRAP_STDINT_H
2183#define _CYGWIN_SIGNAL_H
2257#define __COPY_CONTEXT_SIZE 816
2288#define __SI_PAD_SIZE 32
2300 __extension__
struct
2307 __extension__
struct
2313 __extension__
struct
2359#define SI_USER SI_USER
2360#define SI_ASYNCIO SI_ASYNCIO
2361#define SI_MESGQ SI_MESGQ
2362#define SI_TIMER SI_TIMER
2363#define SI_QUEUE SI_QUEUE
2364#define SI_KERNEL SI_KERNEL
2365#define ILL_ILLOPC ILL_ILLOPC
2366#define ILL_ILLOPN ILL_ILLOPN
2367#define ILL_ILLADR ILL_ILLADR
2368#define ILL_ILLTRP ILL_ILLTRP
2369#define ILL_PRVOPC ILL_PRVOPC
2370#define ILL_PRVREG ILL_PRVREG
2371#define ILL_COPROC ILL_COPROC
2372#define ILL_BADSTK ILL_BADSTK
2373#define FPE_INTDIV FPE_INTDIV
2374#define FPE_INTOVF FPE_INTOVF
2375#define FPE_FLTDIV FPE_FLTDIV
2376#define FPE_FLTOVF FPE_FLTOVF
2377#define FPE_FLTUND FPE_FLTUND
2378#define FPE_FLTRES FPE_FLTRES
2379#define FPE_FLTINV FPE_FLTINV
2380#define FPE_FLTSUB FPE_FLTSUB
2381#define SEGV_MAPERR SEGV_MAPERR
2382#define SEGV_ACCERR SEGV_ACCERR
2383#define BUS_ADRALN BUS_ADRALN
2384#define BUS_ADRERR BUS_ADRERR
2385#define BUS_OBJERR BUS_OBJERR
2386#define CLD_EXITED CLD_EXITED
2387#define CLD_KILLED CLD_KILLED
2388#define CLD_DUMPED CLD_DUMPED
2389#define CLD_TRAPPED CLD_TRAPPED
2390#define CLD_STOPPED CLD_STOPPED
2391#define CLD_CONTINUED CLD_CONTINUED
2398#define SIGEV_SIGNAL SIGEV_SIGNAL
2399#define SIGEV_NONE SIGEV_NONE
2400#define SIGEV_THREAD SIGEV_THREAD
2412#define SA_NOCLDSTOP 1
2414#define SA_RESTART 0x10000000
2415#define SA_ONSTACK 0x20000000
2416#define SA_NODEFER 0x40000000
2417#define SA_RESETHAND 0x80000000
2418#define SA_ONESHOT SA_RESETHAND
2419#define SA_NOMASK SA_NODEFER
2420#define _SA_INTERNAL_MASK 0xf000
2422#define MINSIGSTKSZ 8192
2424#define SIGSTKSZ 32768
2431#define SIGIOT SIGABRT
2450#define SIGPOLL SIGIO
2457#define SIGPWR SIGLOST
2463#define SIGRTMAX (_NSIG - 1)
2464#define SIG_HOLD ((_sig_func_ptr)2)
2474extern const char __attribute__((dllimport)) *sys_sigabbrev[];
2476#define SS_ONSTACK 0x1
2477#define SS_DISABLE 0x2
2483#define SIG_SETMASK 0
2485#define SIG_UNBLOCK 2
2505#define SIG2STR_MAX (sizeof("RTMAX+") + sizeof("4294967295") - 1)
2508#define _SYS_UCONTEXT_H_
2510typedef __attribute__ ((__aligned__ (16))) struct __ucontext {
2512 struct __ucontext *uc_link;
2515 unsigned long int uc_flags;
2521#define SIG_DFL ((_sig_func_ptr)0)
2522#define SIG_IGN ((_sig_func_ptr)1)
2523#define SIG_ERR ((_sig_func_ptr)-1)
2546#define CLOCK_ENABLED 1
2547#define CLOCK_DISABLED 0
2548#define CLOCK_ALLOWED 1
2549#define CLOCK_DISALLOWED 0
2550#define TIMER_ABSTIME 4
2551#define CLOCK_REALTIME_COARSE ((clockid_t) 0)
2552#define CLOCK_REALTIME ((clockid_t) 1)
2553#define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2)
2554#define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3)
2555#define CLOCK_MONOTONIC ((clockid_t) 4)
2556#define CLOCK_MONOTONIC_RAW ((clockid_t) 5)
2557#define CLOCK_MONOTONIC_COARSE ((clockid_t) 6)
2558#define CLOCK_BOOTTIME ((clockid_t) 7)
2559#define CLOCK_REALTIME_ALARM ((clockid_t) 8)
2560#define CLOCK_BOOTTIME_ALARM ((clockid_t) 9)
2564#define _CYGWIN_STAT_H
2582#define st_atime st_atim.tv_sec
2583#define st_mtime st_mtim.tv_sec
2584#define st_ctime st_ctim.tv_sec
2585#define st_birthtime st_birthtim.tv_sec
2586#define S_TYPEISMQ(buf) ((void)(buf)->st_mode,0)
2587#define S_TYPEISSEM(buf) ((void)(buf)->st_mode,0)
2588#define S_TYPEISSHM(buf) ((void)(buf)->st_mode,0)
2589#define _IFMT 0170000
2590#define _IFDIR 0040000
2591#define _IFCHR 0020000
2592#define _IFBLK 0060000
2593#define _IFREG 0100000
2594#define _IFLNK 0120000
2595#define _IFSOCK 0140000
2596#define _IFIFO 0010000
2597#define S_BLKSIZE 1024
2598#define S_ISUID 0004000
2599#define S_ISGID 0002000
2600#define S_ISVTX 0001000
2601#define S_IREAD 0000400
2602#define S_IWRITE 0000200
2603#define S_IEXEC 0000100
2604#define S_ENFMT 0002000
2606#define S_IFDIR _IFDIR
2607#define S_IFCHR _IFCHR
2608#define S_IFBLK _IFBLK
2609#define S_IFREG _IFREG
2610#define S_IFLNK _IFLNK
2611#define S_IFSOCK _IFSOCK
2612#define S_IFIFO _IFIFO
2613#define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
2614#define S_IRUSR 0000400
2615#define S_IWUSR 0000200
2616#define S_IXUSR 0000100
2617#define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
2618#define S_IRGRP 0000040
2619#define S_IWGRP 0000020
2620#define S_IXGRP 0000010
2621#define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
2622#define S_IROTH 0000004
2623#define S_IWOTH 0000002
2624#define S_IXOTH 0000001
2625#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
2626#define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
2627#define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
2628#define S_ISBLK(m) (((m)&_IFMT) == _IFBLK)
2629#define S_ISCHR(m) (((m)&_IFMT) == _IFCHR)
2630#define S_ISDIR(m) (((m)&_IFMT) == _IFDIR)
2631#define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
2632#define S_ISREG(m) (((m)&_IFMT) == _IFREG)
2633#define S_ISLNK(m) (((m)&_IFMT) == _IFLNK)
2634#define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
2635#define UTIME_NOW -2L
2636#define UTIME_OMIT -1L
2654#define __need_size_t
2655#define __need_wchar_t
2657#undef __need_ptrdiff_t
2659#undef __need_wchar_t
2661#define NULL ((void *)0)
2663#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2664#define _MACHSTDLIB_H_
2666#define _NEWLIB_ALLOCA_H
2668#define alloca(size) __builtin_alloca(size)
2669#define _CYGWIN_STDLIB_H
2670#define _CYGWIN_WAIT_H
2671#define WAIT_ANY (pid_t)-1
2672#define WAIT_MYPGRP (pid_t)0
2676#define __W_CONTINUED 0xffff
2677#define WIFEXITED(_w) (((_w) & 0xff) == 0)
2678#define WIFSIGNALED(_w) (((_w) & 0x7f) > 0 && (((_w) & 0x7f) < 0x7f))
2679#define WIFSTOPPED(_w) (((_w) & 0xff) == 0x7f)
2680#define WIFCONTINUED(_w) (((_w) & 0xffff) == __W_CONTINUED)
2681#define WEXITSTATUS(_w) (((_w) >> 8) & 0xff)
2682#define WTERMSIG(_w) ((_w) & 0x7f)
2683#define WSTOPSIG WEXITSTATUS
2684#define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & 0x80))
2699#define _malloc_r(r,s) malloc (s)
2701#define _free_r(r,p) free (p)
2703#define _realloc_r(r,p,s) realloc (p, s)
2705#define _calloc_r(r,s1,s2) calloc (s1, s2);
2707#define _memalign_r(r,s1,s2) memalign (s1, s2);
2709#define _mallinfo_r(r) mallinfo ()
2710#undef _malloc_stats_r
2711#define _malloc_stats_r(r) malloc_stats ()
2713#define _mallopt_r(i1,i2) mallopt (i1, i2)
2714#undef _malloc_usable_size_r
2715#define _malloc_usable_size_r(r,p) malloc_usable_size (p)
2717#define _valloc_r(r,s) valloc (s)
2719#define _pvalloc_r(r,s) pvalloc (s)
2720#undef _malloc_trim_r
2721#define _malloc_trim_r(r,s) malloc_trim (s)
2723#define _mstats_r(r,p) mstats (p)
2741#define __compar_fn_t_defined
2743#define EXIT_FAILURE 1
2744#define EXIT_SUCCESS 0
2745#define RAND_MAX __RAND_MAX
2747#define MB_CUR_MAX __locale_mb_cur_max()
2795char *
mktemp (
char *)
__attribute__ ((__deprecated__(
"the use of `mktemp' is dangerous; use `mkstemp' instead")));
2814#define strtodf strtof
2833int on_exit (
void (*__func)(
int,
void *),
void *__arg);
2838int setenv (
const char *__string,
const char *__value,
int __overwrite);
2839int _setenv_r (
struct _reent *,
const char *__string,
const char *__value,
int __overwrite);
2843char *
utoa (
unsigned,
char *,
int);
2891#define _SSP_STDLIB_H_
2895 if (
__buf != ((
void *)0))
2902 if (
__buf != ((
void *)0))
2908#define __need_size_t
2910#undef __need_ptrdiff_t
2912#undef __need_wchar_t
2914#define NULL ((void *)0)
2916#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2920void bcopy(
const void *,
void *,
size_t);
2936#define _SSP_STRINGS_H_
2937#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))
2938#define bzero(dst,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : __memset_ichk(dst, 0, len))
2942int memcmp (
const void *,
const void *,
size_t);
2944void *
memmove (
void *,
const void *,
size_t);
2947char *
strchr (
const char *,
int);
2958char *
strrchr (
const char *,
int);
2960char *
strstr (
const char *,
const char *);
2971void *
memmem (
const void *,
size_t,
const void *,
size_t);
2984size_t strlcat (
char *,
const char *,
size_t);
2985size_t strlcpy (
char *,
const char *,
size_t);
2994#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);}))
2995#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);}))
2996#define basename basename
2999#define _SSP_STRING_H_
3011#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))
3012#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))
3013#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)); }
3014#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)); }
3015#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)); }
3017extern __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)); }
3018extern __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)); }
3019extern __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)); }
3020extern __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)); }
3022extern __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)); }
3025extern __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)); }
3026extern __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)); }
3028#define memcpy(dst,src,len) __ssp_bos_check3(memcpy, dst, src, len)
3029#define memmove(dst,src,len) __ssp_bos_check3(memmove, dst, src, len)
3030#define mempcpy(dst,src,len) __ssp_bos_check3(mempcpy, dst, src, len)
3031#define memset(dst,val,len) __ssp_bos_check3(memset, dst, val, len)
3032#define stpcpy(dst,src) __ssp_bos_check2(stpcpy, dst, src)
3033#define stpncpy(dst,src,len) __ssp_bos_check3(stpncpy, dst, src, len)
3034#define strcpy(dst,src) __ssp_bos_check2(strcpy, dst, src)
3035#define strcat(dst,src) __ssp_bos_check2(strcat, dst, src)
3036#define strncpy(dst,src,len) __ssp_bos_check3(strncpy, dst, src, len)
3037#define strncat(dst,src,len) __ssp_bos_check3(strncat, dst, src, len)
3039#define __need_wchar_t
3040#undef __need_ptrdiff_t
3042#undef __need_wchar_t
3044#define NULL ((void *)0)
3046#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3047#define __STRINGIFY(a) #a
3048#define __PRI8(x) __INT8 __STRINGIFY(x)
3049#define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x)
3050#define __PRI8FAST(x) __FAST8 __STRINGIFY(x)
3051#define __SCN8(x) __INT8 __STRINGIFY(x)
3052#define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x)
3053#define __SCN8FAST(x) __FAST8 __STRINGIFY(x)
3054#define PRId8 __PRI8(d)
3055#define PRIi8 __PRI8(i)
3056#define PRIo8 __PRI8(o)
3057#define PRIu8 __PRI8(u)
3058#define PRIx8 __PRI8(x)
3059#define PRIX8 __PRI8(X)
3060#define SCNd8 __SCN8(d)
3061#define SCNi8 __SCN8(i)
3062#define SCNo8 __SCN8(o)
3063#define SCNu8 __SCN8(u)
3064#define SCNx8 __SCN8(x)
3065#define PRIdLEAST8 __PRI8LEAST(d)
3066#define PRIiLEAST8 __PRI8LEAST(i)
3067#define PRIoLEAST8 __PRI8LEAST(o)
3068#define PRIuLEAST8 __PRI8LEAST(u)
3069#define PRIxLEAST8 __PRI8LEAST(x)
3070#define PRIXLEAST8 __PRI8LEAST(X)
3071#define SCNdLEAST8 __SCN8LEAST(d)
3072#define SCNiLEAST8 __SCN8LEAST(i)
3073#define SCNoLEAST8 __SCN8LEAST(o)
3074#define SCNuLEAST8 __SCN8LEAST(u)
3075#define SCNxLEAST8 __SCN8LEAST(x)
3076#define PRIdFAST8 __PRI8FAST(d)
3077#define PRIiFAST8 __PRI8FAST(i)
3078#define PRIoFAST8 __PRI8FAST(o)
3079#define PRIuFAST8 __PRI8FAST(u)
3080#define PRIxFAST8 __PRI8FAST(x)
3081#define PRIXFAST8 __PRI8FAST(X)
3082#define SCNdFAST8 __SCN8FAST(d)
3083#define SCNiFAST8 __SCN8FAST(i)
3084#define SCNoFAST8 __SCN8FAST(o)
3085#define SCNuFAST8 __SCN8FAST(u)
3086#define SCNxFAST8 __SCN8FAST(x)
3087#define __PRI16(x) __INT16 __STRINGIFY(x)
3088#define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x)
3089#define __PRI16FAST(x) __FAST16 __STRINGIFY(x)
3090#define __SCN16(x) __INT16 __STRINGIFY(x)
3091#define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x)
3092#define __SCN16FAST(x) __FAST16 __STRINGIFY(x)
3093#define PRId16 __PRI16(d)
3094#define PRIi16 __PRI16(i)
3095#define PRIo16 __PRI16(o)
3096#define PRIu16 __PRI16(u)
3097#define PRIx16 __PRI16(x)
3098#define PRIX16 __PRI16(X)
3099#define SCNd16 __SCN16(d)
3100#define SCNi16 __SCN16(i)
3101#define SCNo16 __SCN16(o)
3102#define SCNu16 __SCN16(u)
3103#define SCNx16 __SCN16(x)
3104#define PRIdLEAST16 __PRI16LEAST(d)
3105#define PRIiLEAST16 __PRI16LEAST(i)
3106#define PRIoLEAST16 __PRI16LEAST(o)
3107#define PRIuLEAST16 __PRI16LEAST(u)
3108#define PRIxLEAST16 __PRI16LEAST(x)
3109#define PRIXLEAST16 __PRI16LEAST(X)
3110#define SCNdLEAST16 __SCN16LEAST(d)
3111#define SCNiLEAST16 __SCN16LEAST(i)
3112#define SCNoLEAST16 __SCN16LEAST(o)
3113#define SCNuLEAST16 __SCN16LEAST(u)
3114#define SCNxLEAST16 __SCN16LEAST(x)
3115#define PRIdFAST16 __PRI16FAST(d)
3116#define PRIiFAST16 __PRI16FAST(i)
3117#define PRIoFAST16 __PRI16FAST(o)
3118#define PRIuFAST16 __PRI16FAST(u)
3119#define PRIxFAST16 __PRI16FAST(x)
3120#define PRIXFAST16 __PRI16FAST(X)
3121#define SCNdFAST16 __SCN16FAST(d)
3122#define SCNiFAST16 __SCN16FAST(i)
3123#define SCNoFAST16 __SCN16FAST(o)
3124#define SCNuFAST16 __SCN16FAST(u)
3125#define SCNxFAST16 __SCN16FAST(x)
3126#define __PRI32(x) __INT32 __STRINGIFY(x)
3127#define __SCN32(x) __INT32 __STRINGIFY(x)
3128#define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x)
3129#define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x)
3130#define __PRI32FAST(x) __FAST32 __STRINGIFY(x)
3131#define __SCN32FAST(x) __FAST32 __STRINGIFY(x)
3132#define PRId32 __PRI32(d)
3133#define PRIi32 __PRI32(i)
3134#define PRIo32 __PRI32(o)
3135#define PRIu32 __PRI32(u)
3136#define PRIx32 __PRI32(x)
3137#define PRIX32 __PRI32(X)
3138#define SCNd32 __SCN32(d)
3139#define SCNi32 __SCN32(i)
3140#define SCNo32 __SCN32(o)
3141#define SCNu32 __SCN32(u)
3142#define SCNx32 __SCN32(x)
3143#define PRIdLEAST32 __PRI32LEAST(d)
3144#define PRIiLEAST32 __PRI32LEAST(i)
3145#define PRIoLEAST32 __PRI32LEAST(o)
3146#define PRIuLEAST32 __PRI32LEAST(u)
3147#define PRIxLEAST32 __PRI32LEAST(x)
3148#define PRIXLEAST32 __PRI32LEAST(X)
3149#define SCNdLEAST32 __SCN32LEAST(d)
3150#define SCNiLEAST32 __SCN32LEAST(i)
3151#define SCNoLEAST32 __SCN32LEAST(o)
3152#define SCNuLEAST32 __SCN32LEAST(u)
3153#define SCNxLEAST32 __SCN32LEAST(x)
3154#define PRIdFAST32 __PRI32FAST(d)
3155#define PRIiFAST32 __PRI32FAST(i)
3156#define PRIoFAST32 __PRI32FAST(o)
3157#define PRIuFAST32 __PRI32FAST(u)
3158#define PRIxFAST32 __PRI32FAST(x)
3159#define PRIXFAST32 __PRI32FAST(X)
3160#define SCNdFAST32 __SCN32FAST(d)
3161#define SCNiFAST32 __SCN32FAST(i)
3162#define SCNoFAST32 __SCN32FAST(o)
3163#define SCNuFAST32 __SCN32FAST(u)
3164#define SCNxFAST32 __SCN32FAST(x)
3165#define __PRI64(x) __INT64 __STRINGIFY(x)
3166#define __SCN64(x) __INT64 __STRINGIFY(x)
3167#define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x)
3168#define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x)
3169#define __PRI64FAST(x) __FAST64 __STRINGIFY(x)
3170#define __SCN64FAST(x) __FAST64 __STRINGIFY(x)
3171#define PRId64 __PRI64(d)
3172#define PRIi64 __PRI64(i)
3173#define PRIo64 __PRI64(o)
3174#define PRIu64 __PRI64(u)
3175#define PRIx64 __PRI64(x)
3176#define PRIX64 __PRI64(X)
3177#define SCNd64 __SCN64(d)
3178#define SCNi64 __SCN64(i)
3179#define SCNo64 __SCN64(o)
3180#define SCNu64 __SCN64(u)
3181#define SCNx64 __SCN64(x)
3182#define PRIdLEAST64 __PRI64LEAST(d)
3183#define PRIiLEAST64 __PRI64LEAST(i)
3184#define PRIoLEAST64 __PRI64LEAST(o)
3185#define PRIuLEAST64 __PRI64LEAST(u)
3186#define PRIxLEAST64 __PRI64LEAST(x)
3187#define PRIXLEAST64 __PRI64LEAST(X)
3188#define SCNdLEAST64 __SCN64LEAST(d)
3189#define SCNiLEAST64 __SCN64LEAST(i)
3190#define SCNoLEAST64 __SCN64LEAST(o)
3191#define SCNuLEAST64 __SCN64LEAST(u)
3192#define SCNxLEAST64 __SCN64LEAST(x)
3193#define PRIdFAST64 __PRI64FAST(d)
3194#define PRIiFAST64 __PRI64FAST(i)
3195#define PRIoFAST64 __PRI64FAST(o)
3196#define PRIuFAST64 __PRI64FAST(u)
3197#define PRIxFAST64 __PRI64FAST(x)
3198#define PRIXFAST64 __PRI64FAST(X)
3199#define SCNdFAST64 __SCN64FAST(d)
3200#define SCNiFAST64 __SCN64FAST(i)
3201#define SCNoFAST64 __SCN64FAST(o)
3202#define SCNuFAST64 __SCN64FAST(u)
3203#define SCNxFAST64 __SCN64FAST(x)
3204#define __PRIMAX(x) __STRINGIFY(l ##x)
3205#define __SCNMAX(x) __STRINGIFY(l ##x)
3206#define PRIdMAX __PRIMAX(d)
3207#define PRIiMAX __PRIMAX(i)
3208#define PRIoMAX __PRIMAX(o)
3209#define PRIuMAX __PRIMAX(u)
3210#define PRIxMAX __PRIMAX(x)
3211#define PRIXMAX __PRIMAX(X)
3212#define SCNdMAX __SCNMAX(d)
3213#define SCNiMAX __SCNMAX(i)
3214#define SCNoMAX __SCNMAX(o)
3215#define SCNuMAX __SCNMAX(u)
3216#define SCNxMAX __SCNMAX(x)
3217#define __PRIPTR(x) __STRINGIFY(l ##x)
3218#define __SCNPTR(x) __STRINGIFY(l ##x)
3219#define PRIdPTR __PRIPTR(d)
3220#define PRIiPTR __PRIPTR(i)
3221#define PRIoPTR __PRIPTR(o)
3222#define PRIuPTR __PRIPTR(u)
3223#define PRIxPTR __PRIPTR(x)
3224#define PRIXPTR __PRIPTR(X)
3225#define SCNdPTR __SCNPTR(d)
3226#define SCNiPTR __SCNPTR(i)
3227#define SCNoPTR __SCNPTR(o)
3228#define SCNuPTR __SCNPTR(u)
3229#define SCNxPTR __SCNPTR(x)
3250#define alignas _Alignas
3251#define alignof _Alignof
3252#define __alignas_is_defined 1
3253#define __alignof_is_defined 1
3255#define _SYS_UNISTD_H
3256#define __need_size_t
3257#define __need_ptrdiff_t
3258#undef __need_ptrdiff_t
3260#undef __need_wchar_t
3262#define NULL ((void *)0)
3264#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3275char *
crypt (
const char *__key,
const char *__salt);
3278int dup2 (
int __fildes,
int __fildes2);
3279int dup3 (
int __fildes,
int __fildes2,
int flags);
3286int execlp (
const char *__file,
const char *, ...);
3287int execlpe (
const char *__file,
const char *, ...);
3289int execve (
const char *
__path,
char *
const __argv[],
char *
const __envp[]);
3290int execvp (
const char *__file,
char *
const __argv[]);
3291int execvpe (
const char *__file,
char *
const __argv[],
char *
const __envp[]);
3297int fexecve (
int __fd,
char *
const __argv[],
char *
const __envp[]);
3324int iruserok (
unsigned long raddr,
int superuser,
const char *ruser,
const char *luser);
3328int link (
const char *__path1,
const char *__path2);
3329int linkat (
int __dirfd1,
const char *__path1,
int __dirfd2,
const char *__path2,
int __flags);
3348int ruserok (
const char *rhost,
int superuser,
const char *ruser,
const char *luser);
3373#define __UNISTD_GETOPT__
3380int getopt (
int,
char *
const *,
const char *);
3381#undef __UNISTD_GETOPT__
3392int symlink (
const char *__name1,
const char *__name2);
3404#define STDIN_FILENO 0
3405#define STDOUT_FILENO 1
3406#define STDERR_FILENO 2
3407#define _SC_ARG_MAX 0
3408#define _SC_CHILD_MAX 1
3409#define _SC_CLK_TCK 2
3410#define _SC_NGROUPS_MAX 3
3411#define _SC_OPEN_MAX 4
3412#define _SC_JOB_CONTROL 5
3413#define _SC_SAVED_IDS 6
3414#define _SC_VERSION 7
3415#define _SC_PAGESIZE 8
3416#define _SC_PAGE_SIZE _SC_PAGESIZE
3417#define _SC_NPROCESSORS_CONF 9
3418#define _SC_NPROCESSORS_ONLN 10
3419#define _SC_PHYS_PAGES 11
3420#define _SC_AVPHYS_PAGES 12
3421#define _SC_MQ_OPEN_MAX 13
3422#define _SC_MQ_PRIO_MAX 14
3423#define _SC_RTSIG_MAX 15
3424#define _SC_SEM_NSEMS_MAX 16
3425#define _SC_SEM_VALUE_MAX 17
3426#define _SC_SIGQUEUE_MAX 18
3427#define _SC_TIMER_MAX 19
3428#define _SC_TZNAME_MAX 20
3429#define _SC_ASYNCHRONOUS_IO 21
3431#define _SC_MAPPED_FILES 23
3432#define _SC_MEMLOCK 24
3433#define _SC_MEMLOCK_RANGE 25
3434#define _SC_MEMORY_PROTECTION 26
3435#define _SC_MESSAGE_PASSING 27
3436#define _SC_PRIORITIZED_IO 28
3437#define _SC_REALTIME_SIGNALS 29
3438#define _SC_SEMAPHORES 30
3439#define _SC_SHARED_MEMORY_OBJECTS 31
3440#define _SC_SYNCHRONIZED_IO 32
3441#define _SC_TIMERS 33
3442#define _SC_AIO_LISTIO_MAX 34
3443#define _SC_AIO_MAX 35
3444#define _SC_AIO_PRIO_DELTA_MAX 36
3445#define _SC_DELAYTIMER_MAX 37
3446#define _SC_THREAD_KEYS_MAX 38
3447#define _SC_THREAD_STACK_MIN 39
3448#define _SC_THREAD_THREADS_MAX 40
3449#define _SC_TTY_NAME_MAX 41
3450#define _SC_THREADS 42
3451#define _SC_THREAD_ATTR_STACKADDR 43
3452#define _SC_THREAD_ATTR_STACKSIZE 44
3453#define _SC_THREAD_PRIORITY_SCHEDULING 45
3454#define _SC_THREAD_PRIO_INHERIT 46
3455#define _SC_THREAD_PRIO_PROTECT 47
3456#define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
3457#define _SC_THREAD_PROCESS_SHARED 48
3458#define _SC_THREAD_SAFE_FUNCTIONS 49
3459#define _SC_GETGR_R_SIZE_MAX 50
3460#define _SC_GETPW_R_SIZE_MAX 51
3461#define _SC_LOGIN_NAME_MAX 52
3462#define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
3463#define _SC_ADVISORY_INFO 54
3464#define _SC_ATEXIT_MAX 55
3465#define _SC_BARRIERS 56
3466#define _SC_BC_BASE_MAX 57
3467#define _SC_BC_DIM_MAX 58
3468#define _SC_BC_SCALE_MAX 59
3469#define _SC_BC_STRING_MAX 60
3470#define _SC_CLOCK_SELECTION 61
3471#define _SC_COLL_WEIGHTS_MAX 62
3472#define _SC_CPUTIME 63
3473#define _SC_EXPR_NEST_MAX 64
3474#define _SC_HOST_NAME_MAX 65
3475#define _SC_IOV_MAX 66
3477#define _SC_LINE_MAX 68
3478#define _SC_MONOTONIC_CLOCK 69
3479#define _SC_RAW_SOCKETS 70
3480#define _SC_READER_WRITER_LOCKS 71
3481#define _SC_REGEXP 72
3482#define _SC_RE_DUP_MAX 73
3485#define _SC_SPIN_LOCKS 76
3486#define _SC_SPORADIC_SERVER 77
3487#define _SC_SS_REPL_MAX 78
3488#define _SC_SYMLOOP_MAX 79
3489#define _SC_THREAD_CPUTIME 80
3490#define _SC_THREAD_SPORADIC_SERVER 81
3491#define _SC_TIMEOUTS 82
3493#define _SC_TRACE_EVENT_FILTER 84
3494#define _SC_TRACE_EVENT_NAME_MAX 85
3495#define _SC_TRACE_INHERIT 86
3496#define _SC_TRACE_LOG 87
3497#define _SC_TRACE_NAME_MAX 88
3498#define _SC_TRACE_SYS_MAX 89
3499#define _SC_TRACE_USER_EVENT_MAX 90
3500#define _SC_TYPED_MEMORY_OBJECTS 91
3501#define _SC_V7_ILP32_OFF32 92
3502#define _SC_V6_ILP32_OFF32 _SC_V7_ILP32_OFF32
3503#define _SC_XBS5_ILP32_OFF32 _SC_V7_ILP32_OFF32
3504#define _SC_V7_ILP32_OFFBIG 93
3505#define _SC_V6_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3506#define _SC_XBS5_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3507#define _SC_V7_LP64_OFF64 94
3508#define _SC_V6_LP64_OFF64 _SC_V7_LP64_OFF64
3509#define _SC_XBS5_LP64_OFF64 _SC_V7_LP64_OFF64
3510#define _SC_V7_LPBIG_OFFBIG 95
3511#define _SC_V6_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3512#define _SC_XBS5_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3513#define _SC_XOPEN_CRYPT 96
3514#define _SC_XOPEN_ENH_I18N 97
3515#define _SC_XOPEN_LEGACY 98
3516#define _SC_XOPEN_REALTIME 99
3517#define _SC_STREAM_MAX 100
3518#define _SC_PRIORITY_SCHEDULING 101
3519#define _SC_XOPEN_REALTIME_THREADS 102
3520#define _SC_XOPEN_SHM 103
3521#define _SC_XOPEN_STREAMS 104
3522#define _SC_XOPEN_UNIX 105
3523#define _SC_XOPEN_VERSION 106
3524#define _SC_2_CHAR_TERM 107
3525#define _SC_2_C_BIND 108
3526#define _SC_2_C_DEV 109
3527#define _SC_2_FORT_DEV 110
3528#define _SC_2_FORT_RUN 111
3529#define _SC_2_LOCALEDEF 112
3530#define _SC_2_PBS 113
3531#define _SC_2_PBS_ACCOUNTING 114
3532#define _SC_2_PBS_CHECKPOINT 115
3533#define _SC_2_PBS_LOCATE 116
3534#define _SC_2_PBS_MESSAGE 117
3535#define _SC_2_PBS_TRACK 118
3536#define _SC_2_SW_DEV 119
3537#define _SC_2_UPE 120
3538#define _SC_2_VERSION 121
3539#define _SC_THREAD_ROBUST_PRIO_INHERIT 122
3540#define _SC_THREAD_ROBUST_PRIO_PROTECT 123
3541#define _SC_XOPEN_UUCP 124
3542#define _SC_LEVEL1_ICACHE_SIZE 125
3543#define _SC_LEVEL1_ICACHE_ASSOC 126
3544#define _SC_LEVEL1_ICACHE_LINESIZE 127
3545#define _SC_LEVEL1_DCACHE_SIZE 128
3546#define _SC_LEVEL1_DCACHE_ASSOC 129
3547#define _SC_LEVEL1_DCACHE_LINESIZE 130
3548#define _SC_LEVEL2_CACHE_SIZE 131
3549#define _SC_LEVEL2_CACHE_ASSOC 132
3550#define _SC_LEVEL2_CACHE_LINESIZE 133
3551#define _SC_LEVEL3_CACHE_SIZE 134
3552#define _SC_LEVEL3_CACHE_ASSOC 135
3553#define _SC_LEVEL3_CACHE_LINESIZE 136
3554#define _SC_LEVEL4_CACHE_SIZE 137
3555#define _SC_LEVEL4_CACHE_ASSOC 138
3556#define _SC_LEVEL4_CACHE_LINESIZE 139
3557#define _SC_POSIX_26_VERSION 140
3558#define _PC_LINK_MAX 0
3559#define _PC_MAX_CANON 1
3560#define _PC_MAX_INPUT 2
3561#define _PC_NAME_MAX 3
3562#define _PC_PATH_MAX 4
3563#define _PC_PIPE_BUF 5
3564#define _PC_CHOWN_RESTRICTED 6
3565#define _PC_NO_TRUNC 7
3566#define _PC_VDISABLE 8
3567#define _PC_ASYNC_IO 9
3568#define _PC_PRIO_IO 10
3569#define _PC_SYNC_IO 11
3570#define _PC_FILESIZEBITS 12
3571#define _PC_2_SYMLINKS 13
3572#define _PC_SYMLINK_MAX 14
3573#define _PC_ALLOC_SIZE_MIN 15
3574#define _PC_REC_INCR_XFER_SIZE 16
3575#define _PC_REC_MAX_XFER_SIZE 17
3576#define _PC_REC_MIN_XFER_SIZE 18
3577#define _PC_REC_XFER_ALIGN 19
3578#define _PC_TIMESTAMP_RESOLUTION 20
3579#define _PC_POSIX_PERMISSIONS 90
3580#define _PC_POSIX_SECURITY 91
3581#define _PC_CASE_INSENSITIVE 92
3583#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1
3584#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3585#define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3586#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 2
3587#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3588#define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3589#define _CS_POSIX_V7_ILP32_OFF32_LIBS 3
3590#define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3591#define _CS_XBS5_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3592#define _CS_XBS5_ILP32_OFF32_LINTFLAGS 4
3593#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 5
3594#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3595#define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3596#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6
3597#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3598#define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3599#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 7
3600#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3601#define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3602#define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 8
3603#define _CS_POSIX_V7_LP64_OFF64_CFLAGS 9
3604#define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3605#define _CS_XBS5_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3606#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 10
3607#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3608#define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3609#define _CS_POSIX_V7_LP64_OFF64_LIBS 11
3610#define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3611#define _CS_XBS5_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3612#define _CS_XBS5_LP64_OFF64_LINTFLAGS 12
3613#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 13
3614#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3615#define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3616#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 14
3617#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3618#define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3619#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 15
3620#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3621#define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3622#define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 16
3623#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 17
3624#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3625#define _CS_XBS5_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3626#define _CS_POSIX_V7_THREADS_CFLAGS 18
3627#define _CS_POSIX_V7_THREADS_LDFLAGS 19
3628#define _CS_V7_ENV 20
3629#define _CS_V6_ENV _CS_V7_ENV
3630#define _CS_LFS_CFLAGS 21
3631#define _CS_LFS_LDFLAGS 22
3632#define _CS_LFS_LIBS 23
3633#define _CS_LFS_LINTFLAGS 24
3634#define _SSP_UNISTD_H_
3646ssize_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); };
3649ssize_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); };
3652#define RUBY_MISSING_H 1
3655#define _M_LN2 0.693147180559945309417
3656#define HUGE_VAL (__builtin_huge_val())
3657#define HUGE_VALF (__builtin_huge_valf())
3658#define HUGE_VALL (__builtin_huge_vall())
3659#define INFINITY (__builtin_inff())
3660#define NAN (__builtin_nanf(""))
3665extern double tanh (
double);
3667extern double modf (
double,
double *);
3674extern double cosh (
double);
3675extern double sinh (
double);
3680extern double pow (
double,
double);
3682extern double fmod (
double,
double);
3683extern int finite (
double);
3690extern int isinf (
double);
3691extern int isnan (
double);
3692#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
3693#define __TMP_FLT_EVAL_METHOD
3696#undef FLT_EVAL_METHOD
3698#define FP_INFINITE 1
3700#define FP_SUBNORMAL 3
3702#define FP_ILOGB0 (-__INT_MAX__)
3703#define FP_ILOGBNAN __INT_MAX__
3705#define MATH_ERREXCEPT 2
3706#define _MATH_ERRHANDLING_ERRNO MATH_ERRNO
3707#define _MATH_ERRHANDLING_ERREXCEPT MATH_ERREXCEPT
3708#define math_errhandling (_MATH_ERRHANDLING_ERRNO | _MATH_ERRHANDLING_ERREXCEPT)
3717#define fpclassify(__x) (__builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, __x))
3718#define isfinite(__x) (__builtin_isfinite (__x))
3719#define isinf(__x) (__builtin_isinf_sign (__x))
3720#define isnan(__x) (__builtin_isnan (__x))
3721#define isnormal(__x) (__builtin_isnormal (__x))
3722#define signbit(__x) ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : (sizeof(__x) == sizeof(double)) ? __builtin_signbit (__x) : __builtin_signbitl(__x))
3723#define isgreater(__x,__y) (__builtin_isgreater (__x, __y))
3724#define isgreaterequal(__x,__y) (__builtin_isgreaterequal (__x, __y))
3725#define isless(__x,__y) (__builtin_isless (__x, __y))
3726#define islessequal(__x,__y) (__builtin_islessequal (__x, __y))
3727#define islessgreater(__x,__y) (__builtin_islessgreater (__x, __y))
3728#define isunordered(__x,__y) (__builtin_isunordered (__x, __y))
3730extern double nan (
const char *);
3734extern double asinh (
double);
3735extern double cbrt (
double);
3736extern double nextafter (
double,
double);
3741extern double tgamma (
double);
3745extern double round (
double);
3750extern double fdim (
double,
double);
3751extern double fmax (
double,
double);
3752extern double fmin (
double,
double);
3753extern double fma (
double,
double,
double);
3756extern double acosh (
double);
3757extern double atanh (
double);
3761extern double erf (
double);
3762extern double erfc (
double);
3763extern double log2 (
double);
3764#define log2(x) (log (x) / _M_LN2)
3765extern double hypot (
double,
double);
3802extern float fmaf (
float,
float,
float);
3825extern long double cosl (
long double);
3826extern long double sinl (
long double);
3827extern long double tanl (
long double);
3829extern long double frexpl (
long double,
int *);
3830extern long double modfl (
long double,
long double *);
3838extern long double atan2l (
long double,
long double);
3841extern long double expl (
long double);
3843extern long double logl (
long double);
3845extern long double powl (
long double,
long double);
3847extern long double fmodl (
long double,
long double);
3848extern long double hypotl (
long double,
long double);
3850extern long double nanl (
const char *);
3872extern long double remquol (
long double,
long double,
int *);
3873extern long double fdiml (
long double,
long double);
3874extern long double fmaxl (
long double,
long double);
3875extern long double fminl (
long double,
long double);
3876extern long double fmal (
long double,
long double,
long double);
3881extern long double erfl (
long double);
3883extern double drem (
double,
double);
3885extern float dreml (
long double,
long double);
3887extern double lgamma_r (
double,
int *);
3890extern double y0 (
double);
3891extern double y1 (
double);
3892extern double yn (
int,
double);
3893extern double j0 (
double);
3894extern double j1 (
double);
3895extern double jn (
int,
double);
3902extern void sincos (
double,
double *,
double *);
3904extern void sincosl (
long double,
long double *,
long double *);
3911#define signgam (*__signgam())
3913#define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
3914#define MAXFLOAT 3.40282347e+38F
3915#define M_E 2.7182818284590452354
3916#define M_LOG2E 1.4426950408889634074
3917#define M_LOG10E 0.43429448190325182765
3919#define M_LN10 2.30258509299404568402
3920#define M_PI 3.14159265358979323846
3921#define M_PI_2 1.57079632679489661923
3922#define M_PI_4 0.78539816339744830962
3923#define M_1_PI 0.31830988618379067154
3924#define M_2_PI 0.63661977236758134308
3925#define M_2_SQRTPI 1.12837916709551257390
3926#define M_SQRT2 1.41421356237309504880
3927#define M_SQRT1_2 0.70710678118654752440
3928#define M_TWOPI (M_PI * 2.0)
3929#define M_3PI_4 2.3561944901923448370E0
3930#define M_SQRTPI 1.77245385090551602792981
3931#define M_LN2LO 1.9082149292705877000E-10
3932#define M_LN2HI 6.9314718036912381649E-1
3933#define M_SQRT3 1.73205080756887719000
3934#define M_IVLN10 0.43429448190325182765
3935#define M_LOG2_E _M_LN2
3936#define M_INVLN2 1.4426950408889633870E0
3939#define RUBY_EXTERN extern
3941#pragma GCC visibility push(default)
3945#pragma GCC visibility pop
3951#define __(args) args
3954#pragma GCC visibility push(default)
3956#define xmalloc ruby_xmalloc
3957#define xmalloc2 ruby_xmalloc2
3958#define xcalloc ruby_xcalloc
3959#define xrealloc ruby_xrealloc
3960#define xrealloc2 ruby_xrealloc2
3961#define xfree ruby_xfree
3962#define RUBY_ATTR_ALLOC_SIZE(params) __attribute__ ((alloc_size params))
3963#define RUBY_ATTR_MALLOC __attribute__((__malloc__))
3964#define RUBY_ATTR_RETURNS_NONNULL __attribute__((__returns_nonnull__))
3971#define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
3972#define STRINGIZE(expr) STRINGIZE0(expr)
3973#define STRINGIZE0(expr) #expr
3974#define HAVE_TRUE_LONG_LONG 1
3975#define LONG_LONG long long
3980#define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
3981#define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
3982#define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
3983#define RUBY_EXTERN extern
3984#define EXTERN _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); RUBY_EXTERN
3985#define RUBY_MBCHAR_MAXSIZE INT_MAX
3986#define FLUSH_REGISTER_WINDOWS ((void)0)
3988#define PATH_SEP_CHAR PATH_SEP[0]
3989#define PATH_ENV "PATH"
3990#define CASEFOLD_FILESYSTEM 0
3991#define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
3992#define UNALIGNED_WORD_ACCESS 1
3993#define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
3994#define NORETURN_STYLE_NEW 1
3996#pragma GCC visibility pop
3998#define RUBY_ASSERT_H
4000#define RUBY_ASSERT_FAIL(expr) rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
4001#define RUBY_ASSERT_MESG(expr,mesg) ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
4002#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)))
4003#define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
4004#define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
4005#define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
4007#define RUBY_NDEBUG 0
4008#define ASSUME(x) (RB_LIKELY(!!(x)) ? (void)0 : UNREACHABLE)
4009#define UNREACHABLE_RETURN(val) UNREACHABLE
4010#define RUBY_MACRO_SELECT(base,n) TOKEN_PASTE(base, n)
4012#define _ANSI_STDARG_H_
4013#undef __need___va_list
4014#define va_start(v,l) __builtin_va_start(v,l)
4015#define va_end(v) __builtin_va_end(v)
4016#define va_arg(v,l) __builtin_va_arg(v,l)
4017#define va_copy(d,s) __builtin_va_copy(d,s)
4018#define __va_copy(d,s) __builtin_va_copy(d,s)
4024#pragma GCC visibility push(default)
4028#define SIGNED_VALUE long
4029#define SIZEOF_VALUE SIZEOF_LONG
4030#define PRI_VALUE_PREFIX "l"
4035#define PRI_INT_PREFIX ""
4036#define PRI_LONG_PREFIX "l"
4037#define PRI_SHORT_PREFIX "h"
4038#define RUBY_PRI_VALUE_MARK "\v"
4039#define PRIdVALUE PRI_VALUE_PREFIX"d"
4040#define PRIoVALUE PRI_VALUE_PREFIX"o"
4041#define PRIuVALUE PRI_VALUE_PREFIX"u"
4042#define PRIxVALUE PRI_VALUE_PREFIX"x"
4043#define PRIXVALUE PRI_VALUE_PREFIX"X"
4044#define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
4045#define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
4046#define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
4047#define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
4048#define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
4049#define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
4050#define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
4051#define PRIdSIZE PRI_SIZE_PREFIX"d"
4052#define PRIiSIZE PRI_SIZE_PREFIX"i"
4053#define PRIoSIZE PRI_SIZE_PREFIX"o"
4054#define PRIuSIZE PRI_SIZE_PREFIX"u"
4055#define PRIxSIZE PRI_SIZE_PREFIX"x"
4056#define PRIXSIZE PRI_SIZE_PREFIX"X"
4057#define _GCC_LIMITS_H_
4058#define _GCC_NEXT_LIMITS_H
4060#define _CYGWIN_LIMITS_H__
4061#define __AIO_LISTIO_MAX 32
4063#define __AIO_PRIO_DELTA_MAX 0
4064#define __ARG_MAX 32000
4065#define __ATEXIT_MAX 32
4066#define __CHILD_MAX 256
4067#define __DELAYTIMER_MAX __INT_MAX__
4068#define __HOST_NAME_MAX 255
4069#define __IOV_MAX 1024
4070#define __LOGIN_NAME_MAX 256
4071#define __MQ_OPEN_MAX 256
4072#define __MQ_PRIO_MAX INT_MAX
4073#define __OPEN_MAX 3200
4074#define __PAGESIZE 65536
4075#define __PTHREAD_DESTRUCTOR_ITERATIONS 4
4076#define __PTHREAD_KEYS_MAX 1024
4077#define __PTHREAD_STACK_MIN 65536
4078#define __RTSIG_MAX 33
4079#define __SEM_VALUE_MAX 1147483648
4080#define __SIGQUEUE_MAX 32
4081#define __STREAM_MAX 20
4082#define __SYMLOOP_MAX 10
4083#define __TIMER_MAX 32
4084#define __TTY_NAME_MAX 32
4085#define __FILESIZEBITS 64
4086#define __LINK_MAX 1024
4087#define __MAX_CANON 255
4088#define __MAX_INPUT 255
4089#define __NAME_MAX 255
4090#define __PATH_MAX 4096
4091#define __PIPE_BUF 4096
4093#define _MACH_MACHLIMITS_H_
4095#define CHAR_BIT __CHAR_BIT__
4097#define LONG_BIT (__SIZEOF_LONG__ * __CHAR_BIT__)
4099#define WORD_BIT (__SIZEOF_INT__ * __CHAR_BIT__)
4102#define SCHAR_MIN (-128)
4104#define SCHAR_MAX 127
4106#define UCHAR_MAX 255
4108#define CHAR_MIN (-128)
4112#define SHRT_MIN (-32768)
4114#define SHRT_MAX 32767
4116#define USHRT_MAX 65535
4118#define INT_MIN (-INT_MAX-1)
4120#define INT_MAX __INT_MAX__
4122#define UINT_MAX (INT_MAX * 2U + 1)
4124#define LONG_MIN (-LONG_MAX-1L)
4126#define LONG_MAX __LONG_MAX__
4128#define ULONG_MAX (LONG_MAX * 2UL + 1)
4130#define LONG_LONG_MIN (-LONG_LONG_MAX-1)
4132#define LONG_LONG_MAX __LONG_LONG_MAX__
4133#undef ULONG_LONG_MAX
4134#define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
4136#define LLONG_MIN (-LLONG_MAX-1)
4138#define LLONG_MAX __LONG_LONG_MAX__
4140#define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
4142#define SSIZE_MAX (__LONG_MAX__)
4143#define AIO_LISTIO_MAX __AIO_LISTIO_MAX
4144#define AIO_MAX __AIO_MAX
4145#define AIO_PRIO_DELTA_MAX __AIO_PRIO_DELTA_MAX
4147#define ARG_MAX __ARG_MAX
4149#define ATEXIT_MAX __ATEXIT_MAX
4151#define CHILD_MAX __CHILD_MAX
4152#undef DELAYTIMER_MAX
4153#define DELAYTIMER_MAX __DELAYTIMER_MAX
4155#define HOST_NAME_MAX __HOST_NAME_MAX
4157#define IOV_MAX __IOV_MAX
4158#undef LOGIN_NAME_MAX
4159#define LOGIN_NAME_MAX __LOGIN_NAME_MAX
4161#define MQ_OPEN_MAX __MQ_OPEN_MAX
4163#define MQ_PRIO_MAX __MQ_PRIO_MAX
4165#define OPEN_MAX __OPEN_MAX
4167#define PAGESIZE __PAGESIZE
4169#define PAGE_SIZE PAGESIZE
4170#undef PTHREAD_DESTRUCTOR_ITERATIONS
4171#define PTHREAD_DESTRUCTOR_ITERATIONS __PTHREAD_DESTRUCTOR_ITERATIONS
4172#undef PTHREAD_KEYS_MAX
4173#define PTHREAD_KEYS_MAX __PTHREAD_KEYS_MAX
4174#undef PTHREAD_STACK_MIN
4175#define PTHREAD_STACK_MIN __PTHREAD_STACK_MIN
4176#undef PTHREAD_THREADS_MAX
4178#define RTSIG_MAX __RTSIG_MAX
4181#define SEM_VALUE_MAX __SEM_VALUE_MAX
4183#define SIGQUEUE_MAX __SIGQUEUE_MAX
4186#define STREAM_MAX __STREAM_MAX
4188#define SYMLOOP_MAX __SYMLOOP_MAX
4190#define TIMER_MAX __TIMER_MAX
4191#undef TRACE_EVENT_NAME_MAX
4192#undef TRACE_NAME_MAX
4194#undef TRACE_USER_EVENT_MAX
4196#define TTY_NAME_MAX __TTY_NAME_MAX
4199#define FILESIZEBITS __FILESIZEBITS
4201#define LINK_MAX __LINK_MAX
4203#define MAX_CANON __MAX_CANON
4205#define MAX_INPUT __MAX_INPUT
4207#define NAME_MAX __NAME_MAX
4209#define PATH_MAX __PATH_MAX
4211#define PIPE_BUF __PIPE_BUF
4212#undef POSIX_ALLOC_SIZE_MIN
4213#undef POSIX_REC_INCR_XFER_SIZE
4214#undef POSIX_REC_MAX_XFER_SIZE
4215#undef POSIX_REC_MIN_XFER_SIZE
4216#undef POSIX_REC_XFER_ALIGN
4218#define SYMLINK_MAX (PATH_MAX - 1)
4220#define BC_BASE_MAX 99
4222#define BC_DIM_MAX 2048
4224#define BC_SCALE_MAX 99
4226#define BC_STRING_MAX 1000
4227#undef CHARCLASS_NAME_MAX
4228#undef COLL_WEIGHTS_MAX
4230#define EXPR_NEST_MAX 32
4232#define LINE_MAX 2048
4234#define NGROUPS_MAX 1024
4236#define RE_DUP_MAX 255
4237#define _POSIX_CLOCKRES_MIN 20000000
4238#define _POSIX_AIO_LISTIO_MAX 2
4239#define _POSIX_AIO_MAX 1
4240#define _POSIX_ARG_MAX 4096
4241#define _POSIX_CHILD_MAX 25
4242#define _POSIX_DELAYTIMER_MAX 32
4243#define _POSIX_HOST_NAME_MAX 255
4244#define _POSIX_LINK_MAX 8
4245#define _POSIX_LOGIN_NAME_MAX 9
4246#define _POSIX_MAX_CANON 255
4247#define _POSIX_MAX_INPUT 255
4248#define _POSIX_MQ_OPEN_MAX 8
4249#define _POSIX_MQ_PRIO_MAX 32
4250#define _POSIX_NAME_MAX 14
4251#define _POSIX_NGROUPS_MAX 8
4252#define _POSIX_OPEN_MAX 20
4253#define _POSIX_PATH_MAX 256
4254#define _POSIX_PIPE_BUF 512
4255#define _POSIX_RE_DUP_MAX 255
4256#define _POSIX_RTSIG_MAX 8
4257#define _POSIX_SEM_NSEMS_MAX 256
4258#define _POSIX_SEM_VALUE_MAX 32767
4259#define _POSIX_SIGQUEUE_MAX 32
4260#define _POSIX_SSIZE_MAX 32767
4261#define _POSIX_STREAM_MAX 8
4262#define _POSIX_SS_REPL_MAX 4
4263#define _POSIX_SYMLINK_MAX 255
4264#define _POSIX_SYMLOOP_MAX 8
4265#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
4266#define _POSIX_THREAD_KEYS_MAX 128
4267#define _POSIX_THREAD_THREADS_MAX 64
4268#define _POSIX_TIMER_MAX 32
4269#define _POSIX_TRACE_EVENT_NAME_MAX 30
4270#define _POSIX_TRACE_NAME_MAX 8
4271#define _POSIX_TRACE_SYS_MAX 8
4272#define _POSIX_TRACE_USER_EVENT_MAX 32
4273#define _POSIX_TTY_NAME_MAX 9
4274#define _POSIX_TZNAME_MAX 6
4275#define _POSIX2_BC_BASE_MAX 99
4276#define _POSIX2_BC_DIM_MAX 2048
4277#define _POSIX2_BC_SCALE_MAX 99
4278#define _POSIX2_BC_STRING_MAX 1000
4279#define _POSIX2_COLL_WEIGHTS_MAX 2
4280#define _POSIX2_EXPR_NEST_MAX 32
4281#define _POSIX2_LINE_MAX 2048
4282#define _POSIX2_RE_DUP_MAX 255
4283#define _XOPEN_IOV_MAX 16
4284#define _XOPEN_NAME_MAX 255
4285#define _XOPEN_PATH_MAX 1024
4287#define NL_LANGMAX 14
4288#define NL_MSGMAX 32767
4289#define NL_SETMAX 255
4290#define NL_TEXTMAX _POSIX2_LINE_MAX
4293#undef _GCC_NEXT_LIMITS_H
4294#define RUBY_FIXNUM_MAX (LONG_MAX>>1)
4295#define RUBY_FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
4296#define FIXNUM_MAX RUBY_FIXNUM_MAX
4297#define FIXNUM_MIN RUBY_FIXNUM_MIN
4298#define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)
4299#define INT2FIX(i) RB_INT2FIX(i)
4300#define RB_LONG2FIX(i) RB_INT2FIX(i)
4301#define LONG2FIX(i) RB_INT2FIX(i)
4302#define rb_fix_new(v) RB_INT2FIX(v)
4304#define rb_int_new(v) rb_int2inum(v)
4306#define rb_uint_new(v) rb_uint2inum(v)
4308#define LL2NUM(v) rb_ll2inum(v)
4310#define ULL2NUM(v) rb_ull2inum(v)
4311#define SIZET2NUM(v) ULONG2NUM(v)
4312#define SSIZET2NUM(v) LONG2NUM(v)
4315rb_long2int_inline(
long n)
4322#define rb_long2int(n) rb_long2int_inline(n)
4323#define RB_FIX2LONG(x) ((long)RSHIFT((SIGNED_VALUE)(x),1))
4327 return ((
long)(((
long)(x))>>(
int)(1)));
4329#define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
4330static inline unsigned long
4331rb_fix2ulong(
VALUE x)
4333 return ((
unsigned long)((
long)(((
long)(x))>>(
int)(1))));
4335#define RB_FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&RUBY_FIXNUM_FLAG)
4336#define RB_POSFIXABLE(f) ((f) < RUBY_FIXNUM_MAX+1)
4337#define RB_NEGFIXABLE(f) ((f) >= RUBY_FIXNUM_MIN)
4338#define RB_FIXABLE(f) (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f))
4339#define FIX2LONG(x) RB_FIX2LONG(x)
4340#define FIX2ULONG(x) RB_FIX2ULONG(x)
4341#define FIXNUM_P(f) RB_FIXNUM_P(f)
4342#define POSFIXABLE(f) RB_POSFIXABLE(f)
4343#define NEGFIXABLE(f) RB_NEGFIXABLE(f)
4344#define FIXABLE(f) RB_FIXABLE(f)
4345#define RB_IMMEDIATE_P(x) ((VALUE)(x) & RUBY_IMMEDIATE_MASK)
4346#define IMMEDIATE_P(x) RB_IMMEDIATE_P(x)
4349#define RB_STATIC_SYM_P(x) (((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)
4350#define RB_DYNAMIC_SYM_P(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) == (RUBY_T_SYMBOL))
4351#define RB_SYMBOL_P(x) (RB_STATIC_SYM_P(x)||RB_DYNAMIC_SYM_P(x))
4352#define RB_ID2SYM(x) (rb_id2sym(x))
4353#define RB_SYM2ID(x) (rb_sym2id(x))
4354#define STATIC_SYM_P(x) RB_STATIC_SYM_P(x)
4355#define DYNAMIC_SYM_P(x) RB_DYNAMIC_SYM_P(x)
4356#define SYMBOL_P(x) RB_SYMBOL_P(x)
4357#define ID2SYM(x) RB_ID2SYM(x)
4358#define SYM2ID(x) RB_SYM2ID(x)
4360#define RB_FLONUM_P(x) ((((int)(SIGNED_VALUE)(x))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)
4361#define FLONUM_P(x) RB_FLONUM_P(x)
4362#define USE_SYMBOL_AS_METHOD_NAME 1
4375#define RUBY_Qfalse ((VALUE)RUBY_Qfalse)
4376#define RUBY_Qtrue ((VALUE)RUBY_Qtrue)
4377#define RUBY_Qnil ((VALUE)RUBY_Qnil)
4378#define RUBY_Qundef ((VALUE)RUBY_Qundef)
4379#define Qfalse RUBY_Qfalse
4380#define Qtrue RUBY_Qtrue
4381#define Qnil RUBY_Qnil
4382#define Qundef RUBY_Qundef
4383#define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
4384#define FIXNUM_FLAG RUBY_FIXNUM_FLAG
4385#define FLONUM_MASK RUBY_FLONUM_MASK
4386#define FLONUM_FLAG RUBY_FLONUM_FLAG
4387#define SYMBOL_FLAG RUBY_SYMBOL_FLAG
4388#define RB_TEST(v) !(((VALUE)(v) & (VALUE)~RUBY_Qnil) == 0)
4389#define RB_NIL_P(v) !((VALUE)(v) != RUBY_Qnil)
4390#define RTEST(v) RB_TEST(v)
4391#define NIL_P(v) RB_NIL_P(v)
4392#define CLASS_OF(v) rb_class_of((VALUE)(v))
4423#define T_NONE RUBY_T_NONE
4424#define T_NIL RUBY_T_NIL
4425#define T_OBJECT RUBY_T_OBJECT
4426#define T_CLASS RUBY_T_CLASS
4427#define T_ICLASS RUBY_T_ICLASS
4428#define T_MODULE RUBY_T_MODULE
4429#define T_FLOAT RUBY_T_FLOAT
4430#define T_STRING RUBY_T_STRING
4431#define T_REGEXP RUBY_T_REGEXP
4432#define T_ARRAY RUBY_T_ARRAY
4433#define T_HASH RUBY_T_HASH
4434#define T_STRUCT RUBY_T_STRUCT
4435#define T_BIGNUM RUBY_T_BIGNUM
4436#define T_FILE RUBY_T_FILE
4437#define T_FIXNUM RUBY_T_FIXNUM
4438#define T_TRUE RUBY_T_TRUE
4439#define T_FALSE RUBY_T_FALSE
4440#define T_DATA RUBY_T_DATA
4441#define T_MATCH RUBY_T_MATCH
4442#define T_SYMBOL RUBY_T_SYMBOL
4443#define T_RATIONAL RUBY_T_RATIONAL
4444#define T_COMPLEX RUBY_T_COMPLEX
4445#define T_IMEMO RUBY_T_IMEMO
4446#define T_UNDEF RUBY_T_UNDEF
4447#define T_NODE RUBY_T_NODE
4448#define T_ZOMBIE RUBY_T_ZOMBIE
4449#define T_MOVED RUBY_T_MOVED
4450#define T_MASK RUBY_T_MASK
4451#define RB_BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK)
4452#define BUILTIN_TYPE(x) RB_BUILTIN_TYPE(x)
4453static inline int rb_type(
VALUE obj);
4454#define TYPE(x) rb_type((VALUE)(x))
4455#define RB_FLOAT_TYPE_P(obj) ( RB_FLONUM_P(obj) || (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT))
4456#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)))
4457#define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
4458#define RB_UNUSED_VAR(x) x __attribute__ ((unused))
4460#define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
4465#define StringValue(v) rb_string_value(&(v))
4466#define StringValuePtr(v) rb_string_value_ptr(&(v))
4467#define StringValueCStr(v) rb_string_value_cstr(&(v))
4469#define SafeStringValue(v) StringValue(v)
4471#define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
4473#define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v);} while (0)
4476#define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
4478#define FilePathStringValue(v) ((v) = rb_get_path(v))
4479#define RUBY_SAFE_LEVEL_MAX 1
4485#define ruby_safe_level_2_warning() ruby_safe_level_2_error()
4486#define RUBY_SAFE_LEVEL_INVALID_P(level) __extension__( __builtin_choose_expr( __builtin_constant_p(level), ((level) < 0 || RUBY_SAFE_LEVEL_MAX < (level)), 0))
4487#define RUBY_SAFE_LEVEL_CHECK(level,type) __extension__(__builtin_choose_expr(RUBY_SAFE_LEVEL_INVALID_P(level), ruby_safe_level_2_ ##type(), (level)))
4488#define rb_secure(level) rb_secure(RUBY_SAFE_LEVEL_CHECK(level, warning))
4489#define rb_set_safe_level(level) rb_set_safe_level(RUBY_SAFE_LEVEL_CHECK(level, error))
4498rb_num2long_inline(
VALUE x)
4501 return ((
long)(((
long)(x))>>(
int)(1)));
4505#define RB_NUM2LONG(x) rb_num2long_inline(x)
4506#define NUM2LONG(x) RB_NUM2LONG(x)
4507static inline unsigned long
4508rb_num2ulong_inline(
VALUE x)
4511 return ((
unsigned long)((
long)(((
long)(x))>>(
int)(1))));
4515#define RB_NUM2ULONG(x) rb_num2ulong_inline(x)
4516#define NUM2ULONG(x) RB_NUM2ULONG(x)
4519#define RB_FIX2INT(x) ((int)rb_fix2int((VALUE)(x)))
4521rb_num2int_inline(
VALUE x)
4528#define RB_NUM2INT(x) rb_num2int_inline(x)
4529unsigned long rb_num2uint(
VALUE);
4530#define RB_NUM2UINT(x) ((unsigned int)rb_num2uint(x))
4531unsigned long rb_fix2uint(
VALUE);
4532#define RB_FIX2UINT(x) ((unsigned int)rb_fix2uint(x))
4533#define NUM2INT(x) RB_NUM2INT(x)
4534#define NUM2UINT(x) RB_NUM2UINT(x)
4535#define FIX2INT(x) RB_FIX2INT(x)
4536#define FIX2UINT(x) RB_FIX2UINT(x)
4541#define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
4542#define FIX2SHORT(x) RB_FIX2SHORT(x)
4544rb_num2short_inline(
VALUE x)
4551#define RB_NUM2SHORT(x) rb_num2short_inline(x)
4552#define RB_NUM2USHORT(x) rb_num2ushort(x)
4553#define NUM2SHORT(x) RB_NUM2SHORT(x)
4554#define NUM2USHORT(x) RB_NUM2USHORT(x)
4555long long rb_num2ll(
VALUE);
4556unsigned long long rb_num2ull(
VALUE);
4557static inline long long
4558rb_num2ll_inline(
VALUE x)
4561 return ((
long)(((
long)(x))>>(
int)(1)));
4563 return rb_num2ll(x);
4565#define RB_NUM2LL(x) rb_num2ll_inline(x)
4566#define RB_NUM2ULL(x) rb_num2ull(x)
4567#define NUM2LL(x) RB_NUM2LL(x)
4568#define NUM2ULL(x) RB_NUM2ULL(x)
4569#define NUM2SIZET(x) NUM2ULONG(x)
4570#define NUM2SSIZET(x) NUM2LONG(x)
4572#define NUM2DBL(x) rb_num2dbl((VALUE)(x))
4578#define RB_NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
4579#define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
4580#define NEWOBJ(obj,type) RB_NEWOBJ(obj,type)
4581#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
4582#define OBJSETUP(obj,c,t) rb_obj_setup(obj, c, t)
4583#define CLONESETUP(clone,obj) rb_clone_setup(clone,obj)
4584#define DUPSETUP(dup,obj) rb_dup_setup(dup,obj)
4587#define RGENGC_WB_PROTECTED_ARRAY 1
4588#define RGENGC_WB_PROTECTED_HASH 1
4589#define RGENGC_WB_PROTECTED_STRUCT 1
4590#define RGENGC_WB_PROTECTED_STRING 1
4591#define RGENGC_WB_PROTECTED_OBJECT 1
4592#define RGENGC_WB_PROTECTED_REGEXP 1
4593#define RGENGC_WB_PROTECTED_CLASS 1
4594#define RGENGC_WB_PROTECTED_FLOAT 1
4595#define RGENGC_WB_PROTECTED_COMPLEX 1
4596#define RGENGC_WB_PROTECTED_RATIONAL 1
4597#define RGENGC_WB_PROTECTED_BIGNUM 1
4598#define RGENGC_WB_PROTECTED_NODE_CREF 1
4612#define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
4643#define RB_OBJ_WB_UNPROTECT_FOR(type,obj) __extension__( __builtin_choose_expr( RGENGC_WB_PROTECTED_ ##type, OBJ_WB_UNPROTECT((VALUE)(obj)), ((VALUE)(obj))))
4644#define RBASIC_CLASS(obj) (RBASIC(obj)->klass)
4645#define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
4649#define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
4650#define ROBJECT_EMBED ROBJECT_EMBED
4657 struct RBasic
basic;
4667#define ROBJECT_NUMIV(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ROBJECT(o)->as.heap.numiv)
4668#define ROBJECT_IVPTR(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT(o)->as.ary : ROBJECT(o)->as.heap.ivptr)
4669#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)
4670#define RCLASS_SUPER(c) rb_class_get_superclass(c)
4671#define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m)
4672#define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
4673#define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
4674#define RMODULE_SUPER(m) RCLASS_SUPER(m)
4675#define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
4676#define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
4677#define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
4687#define RFLOAT_VALUE(v) rb_float_value(v)
4688#define DBL2NUM(dbl) rb_float_new(dbl)
4689#define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
4690#define ELTS_SHARED RUBY_ELTS_SHARED
4691#define RSTRING_NOEMBED RSTRING_NOEMBED
4692#define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
4693#define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
4694#define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
4695#define RSTRING_FSTR RSTRING_FSTR
4699 RUBY_FL_USER5|RUBY_FL_USER6),
4706 struct RBasic
basic;
4719#define RSTRING_EMBED_LEN(str) (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))
4720#define RSTRING_LEN(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING_EMBED_LEN(str) : RSTRING(str)->as.heap.len)
4721#define RSTRING_PTR(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING(str)->as.ary : RSTRING(str)->as.heap.ptr)
4722#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))
4723#define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str))
4724#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))
4725#define USE_TRANSIENT_HEAP 1
4732#define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
4735#define RARRAY_EMBED_FLAG (VALUE)RARRAY_EMBED_FLAG
4736#define RARRAY_EMBED_LEN_MASK (VALUE)RARRAY_EMBED_LEN_MASK
4737#define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
4738#define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
4740 struct RBasic
basic;
4754#define RARRAY_EMBED_LEN(a) (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT))
4755#define RARRAY_LEN(a) rb_array_len(a)
4756#define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary))
4757#define RARRAY_CONST_PTR(a) rb_array_const_ptr(a)
4758#define RARRAY_CONST_PTR_TRANSIENT(a) rb_array_const_ptr_transient(a)
4759#define RARRAY_TRANSIENT_P(ary) FL_TEST_RAW((ary), RARRAY_TRANSIENT_FLAG)
4760#define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
4761#define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
4762#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)
4763#define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
4764#define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
4765#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)
4766#define RARRAY_AREF(a,i) (RARRAY_CONST_PTR_TRANSIENT(a)[i])
4767#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)
4768#define RARRAY_PTR(a) ((VALUE *)RARRAY_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(ARRAY, a)))
4770 struct RBasic
basic;
4775#define RREGEXP_PTR(r) (RREGEXP(r)->ptr)
4776#define RREGEXP_SRC(r) (RREGEXP(r)->src)
4777#define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src)
4778#define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
4779#define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src)
4781#define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
4782#define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
4783#define RHASH_IFNONE(h) rb_hash_ifnone(h)
4784#define RHASH_SIZE(h) rb_hash_size_num(h)
4785#define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
4786#define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
4788 struct RBasic
basic;
4792 struct RBasic
basic;
4811#define HAVE_TYPE_RB_DATA_TYPE_T 1
4812#define HAVE_RB_DATA_TYPE_T_FUNCTION 1
4813#define HAVE_RB_DATA_TYPE_T_PARENT 1
4815 struct RBasic
basic;
4820#define DATA_PTR(dta) (RDATA(dta)->data)
4821#define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1)
4822#define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type)
4823#define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
4825#define RUBY_UNTYPED_DATA_WARNING 1
4833#define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t))
4834#define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1)
4835#define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0)
4836#define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
4837#define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
4838#define RUBY_TYPED_FREE_IMMEDIATELY 1
4839#define RUBY_TYPED_WB_PROTECTED RUBY_FL_WB_PROTECTED
4840#define RUBY_TYPED_PROMOTED1 RUBY_FL_PROMOTED1
4841#define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free))
4842#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));
4843#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; })
4844#define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
4845#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));
4846#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; })
4847#define Data_Get_Struct(obj,type,sval) ((sval) = (type*)rb_data_object_get(obj))
4848#define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = (type*)rb_check_typeddata((obj), (data_type)))
4849#define RSTRUCT_LEN(st) NUM2LONG(rb_struct_size(st))
4850#define RSTRUCT_PTR(st) rb_struct_ptr(st)
4851#define RSTRUCT_SET(st,idx,v) rb_struct_aset(st, INT2NUM(idx), (v))
4852#define RSTRUCT_GET(st,idx) rb_struct_aref(st, INT2NUM(idx))
4854#define RBIGNUM_SIGN(b) (rb_big_sign(b))
4855#define RBIGNUM_POSITIVE_P(b) (RBIGNUM_SIGN(b)!=0)
4856#define RBIGNUM_NEGATIVE_P(b) (RBIGNUM_SIGN(b)==0)
4857#define R_CAST(st) (struct st*)
4858#define RMOVED(obj) (R_CAST(RMoved)(obj))
4859#define RBASIC(obj) (R_CAST(RBasic)(obj))
4860#define ROBJECT(obj) (R_CAST(RObject)(obj))
4861#define RCLASS(obj) (R_CAST(RClass)(obj))
4862#define RMODULE(obj) RCLASS(obj)
4863#define RSTRING(obj) (R_CAST(RString)(obj))
4864#define RREGEXP(obj) (R_CAST(RRegexp)(obj))
4865#define RARRAY(obj) (R_CAST(RArray)(obj))
4866#define RDATA(obj) (R_CAST(RData)(obj))
4867#define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj))
4868#define RFILE(obj) (R_CAST(RFile)(obj))
4869#define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON)
4870#define FL_WB_PROTECTED ((VALUE)RUBY_FL_WB_PROTECTED)
4871#define FL_PROMOTED0 ((VALUE)RUBY_FL_PROMOTED0)
4872#define FL_PROMOTED1 ((VALUE)RUBY_FL_PROMOTED1)
4873#define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE)
4874#define FL_TAINT ((VALUE)RUBY_FL_TAINT)
4875#define FL_UNTRUSTED ((VALUE)RUBY_FL_UNTRUSTED)
4876#define FL_SEEN_OBJ_ID ((VALUE)RUBY_FL_SEEN_OBJ_ID)
4877#define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR)
4878#define FL_FREEZE ((VALUE)RUBY_FL_FREEZE)
4879#define FL_USHIFT ((VALUE)RUBY_FL_USHIFT)
4880#define FL_USER0 ((VALUE)RUBY_FL_USER0)
4881#define FL_USER1 ((VALUE)RUBY_FL_USER1)
4882#define FL_USER2 ((VALUE)RUBY_FL_USER2)
4883#define FL_USER3 ((VALUE)RUBY_FL_USER3)
4884#define FL_USER4 ((VALUE)RUBY_FL_USER4)
4885#define FL_USER5 ((VALUE)RUBY_FL_USER5)
4886#define FL_USER6 ((VALUE)RUBY_FL_USER6)
4887#define FL_USER7 ((VALUE)RUBY_FL_USER7)
4888#define FL_USER8 ((VALUE)RUBY_FL_USER8)
4889#define FL_USER9 ((VALUE)RUBY_FL_USER9)
4890#define FL_USER10 ((VALUE)RUBY_FL_USER10)
4891#define FL_USER11 ((VALUE)RUBY_FL_USER11)
4892#define FL_USER12 ((VALUE)RUBY_FL_USER12)
4893#define FL_USER13 ((VALUE)RUBY_FL_USER13)
4894#define FL_USER14 ((VALUE)RUBY_FL_USER14)
4895#define FL_USER15 ((VALUE)RUBY_FL_USER15)
4896#define FL_USER16 ((VALUE)RUBY_FL_USER16)
4897#define FL_USER17 ((VALUE)RUBY_FL_USER17)
4898#define FL_USER18 ((VALUE)RUBY_FL_USER18)
4899#define FL_USER19 ((VALUE)(unsigned int)RUBY_FL_USER19)
4900#define RB_SPECIAL_CONST_P(x) (RB_IMMEDIATE_P(x) || !RB_TEST(x))
4901#define SPECIAL_CONST_P(x) RB_SPECIAL_CONST_P(x)
4902#define RB_FL_ABLE(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) != RUBY_T_NODE)
4903#define RB_FL_TEST_RAW(x,f) (RBASIC(x)->flags&(f))
4904#define RB_FL_TEST(x,f) (RB_FL_ABLE(x)?RB_FL_TEST_RAW((x),(f)):0)
4905#define RB_FL_ANY_RAW(x,f) RB_FL_TEST_RAW((x),(f))
4906#define RB_FL_ANY(x,f) RB_FL_TEST((x),(f))
4907#define RB_FL_ALL_RAW(x,f) (RB_FL_TEST_RAW((x),(f)) == (f))
4908#define RB_FL_ALL(x,f) (RB_FL_TEST((x),(f)) == (f))
4909#define RB_FL_SET_RAW(x,f) (void)(RBASIC(x)->flags |= (f))
4910#define RB_FL_SET(x,f) (RB_FL_ABLE(x) ? RB_FL_SET_RAW(x, f) : (void)0)
4911#define RB_FL_UNSET_RAW(x,f) (void)(RBASIC(x)->flags &= ~(VALUE)(f))
4912#define RB_FL_UNSET(x,f) (RB_FL_ABLE(x) ? RB_FL_UNSET_RAW(x, f) : (void)0)
4913#define RB_FL_REVERSE_RAW(x,f) (void)(RBASIC(x)->flags ^= (f))
4914#define RB_FL_REVERSE(x,f) (RB_FL_ABLE(x) ? RB_FL_REVERSE_RAW(x, f) : (void)0)
4915#define RB_OBJ_TAINTABLE(x) (RB_FL_ABLE(x) && RB_BUILTIN_TYPE(x) != RUBY_T_BIGNUM && RB_BUILTIN_TYPE(x) != RUBY_T_FLOAT)
4916#define RB_OBJ_TAINTED_RAW(x) RB_FL_TEST_RAW(x, RUBY_FL_TAINT)
4917#define RB_OBJ_TAINTED(x) (!!RB_FL_TEST((x), RUBY_FL_TAINT))
4918#define RB_OBJ_TAINT_RAW(x) RB_FL_SET_RAW(x, RUBY_FL_TAINT)
4919#define RB_OBJ_TAINT(x) (RB_OBJ_TAINTABLE(x) ? RB_OBJ_TAINT_RAW(x) : (void)0)
4920#define RB_OBJ_UNTRUSTED(x) RB_OBJ_TAINTED(x)
4921#define RB_OBJ_UNTRUST(x) RB_OBJ_TAINT(x)
4922#define RB_OBJ_INFECT_RAW(x,s) RB_FL_SET_RAW(x, RB_OBJ_TAINTED_RAW(s))
4923#define RB_OBJ_INFECT(x,s) ( (RB_OBJ_TAINTABLE(x) && RB_FL_ABLE(s)) ? RB_OBJ_INFECT_RAW(x, s) : (void)0)
4924#define RB_OBJ_FROZEN_RAW(x) (RBASIC(x)->flags&RUBY_FL_FREEZE)
4925#define RB_OBJ_FROZEN(x) (!RB_FL_ABLE(x) || RB_OBJ_FROZEN_RAW(x))
4926#define RB_OBJ_FREEZE_RAW(x) (void)(RBASIC(x)->flags |= RUBY_FL_FREEZE)
4927#define RB_OBJ_FREEZE(x) rb_obj_freeze_inline((VALUE)x)
4928#define FL_ABLE(x) RB_FL_ABLE(x)
4929#define FL_TEST_RAW(x,f) RB_FL_TEST_RAW(x,f)
4930#define FL_TEST(x,f) RB_FL_TEST(x,f)
4931#define FL_ANY_RAW(x,f) RB_FL_ANY_RAW(x,f)
4932#define FL_ANY(x,f) RB_FL_ANY(x,f)
4933#define FL_ALL_RAW(x,f) RB_FL_ALL_RAW(x,f)
4934#define FL_ALL(x,f) RB_FL_ALL(x,f)
4935#define FL_SET_RAW(x,f) RB_FL_SET_RAW(x,f)
4936#define FL_SET(x,f) RB_FL_SET(x,f)
4937#define FL_UNSET_RAW(x,f) RB_FL_UNSET_RAW(x,f)
4938#define FL_UNSET(x,f) RB_FL_UNSET(x,f)
4939#define FL_REVERSE_RAW(x,f) RB_FL_REVERSE_RAW(x,f)
4940#define FL_REVERSE(x,f) RB_FL_REVERSE(x,f)
4941#define OBJ_TAINTABLE(x) RB_OBJ_TAINTABLE(x)
4942#define OBJ_TAINTED_RAW(x) RB_OBJ_TAINTED_RAW(x)
4943#define OBJ_TAINTED(x) RB_OBJ_TAINTED(x)
4944#define OBJ_TAINT_RAW(x) RB_OBJ_TAINT_RAW(x)
4945#define OBJ_TAINT(x) RB_OBJ_TAINT(x)
4946#define OBJ_UNTRUSTED(x) RB_OBJ_UNTRUSTED(x)
4947#define OBJ_UNTRUST(x) RB_OBJ_UNTRUST(x)
4948#define OBJ_INFECT_RAW(x,s) RB_OBJ_INFECT_RAW(x,s)
4949#define OBJ_INFECT(x,s) RB_OBJ_INFECT(x,s)
4950#define OBJ_FROZEN_RAW(x) RB_OBJ_FROZEN_RAW(x)
4951#define OBJ_FROZEN(x) RB_OBJ_FROZEN(x)
4952#define OBJ_FREEZE_RAW(x) RB_OBJ_FREEZE_RAW(x)
4953#define OBJ_FREEZE(x) RB_OBJ_FREEZE(x)
4956rb_obj_freeze_inline(
VALUE x)
4965#define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
4967static inline void *rb_data_object_get_warning(
VALUE)
__attribute__((warning(
"untyped Data is unsafe; use TypedData instead")));
4973#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)))
4978 return ((
struct RData *)
obj)->data;
4981rb_data_object_get_warning(
VALUE obj)
5009#define rb_data_object_wrap_0 rb_data_object_wrap
5010#define rb_data_object_wrap_1 rb_data_object_wrap_warning
5011#define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_, RUBY_UNTYPED_DATA_WARNING)
5012#define rb_data_object_get_0 rb_data_object_get
5013#define rb_data_object_get_1 rb_data_object_get_warning
5014#define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_, RUBY_UNTYPED_DATA_WARNING)
5015#define rb_data_object_make_0 rb_data_object_make
5016#define rb_data_object_make_1 rb_data_object_make_warning
5017#define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_, RUBY_UNTYPED_DATA_WARNING)
5018#define RB_OBJ_PROMOTED_RAW(x) RB_FL_ALL_RAW(x, RUBY_FL_PROMOTED)
5019#define RB_OBJ_PROMOTED(x) (RB_SPECIAL_CONST_P(x) ? 0 : RB_OBJ_PROMOTED_RAW(x))
5020#define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
5023#define OBJ_PROMOTED_RAW(x) RB_OBJ_PROMOTED_RAW(x)
5024#define OBJ_PROMOTED(x) RB_OBJ_PROMOTED(x)
5025#define OBJ_WB_UNPROTECT(x) RB_OBJ_WB_UNPROTECT(x)
5026#define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
5027#define RB_OBJ_WRITTEN(a,oldv,b) rb_obj_written((VALUE)(a), (VALUE)(oldv), (VALUE)(b), __FILE__, __LINE__)
5028#define USE_RGENGC_LOGGING_WB_UNPROTECT 0
5050#define RUBY_INTEGER_UNIFICATION 1
5051#define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
5059#define RB_INT2NUM(v) RB_INT2FIX((int)(v))
5060#define RB_UINT2NUM(v) RB_LONG2FIX((unsigned int)(v))
5061#define INT2NUM(x) RB_INT2NUM(x)
5062#define UINT2NUM(x) RB_UINT2NUM(x)
5064rb_long2num_inline(
long v)
5066 if ((((
v) < (0x7fffffffffffffffL>>1)+1) && ((
v) >= (((
long)(-0x7fffffffffffffffL -1L))>>(
int)(1)))))
5071#define RB_LONG2NUM(x) rb_long2num_inline(x)
5073rb_ulong2num_inline(
unsigned long v)
5075 if (((
v) < (0x7fffffffffffffffL>>1)+1))
5080#define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
5082rb_num2char_inline(
VALUE x)
5087 return (
char)(rb_num2int_inline(x) & 0xff);
5089#define RB_NUM2CHR(x) rb_num2char_inline(x)
5090#define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
5091#define LONG2NUM(x) RB_LONG2NUM(x)
5092#define ULONG2NUM(x) RB_ULONG2NUM(x)
5093#define USHORT2NUM(x) RB_INT2FIX(x)
5094#define NUM2CHR(x) RB_NUM2CHR(x)
5095#define CHR2FIX(x) RB_CHR2FIX(x)
5096#define RB_ST2FIX(h) RB_LONG2FIX((long)(h))
5097#define ST2FIX(h) RB_ST2FIX(h)
5098#define RB_ALLOC_N(type,n) ((type*)ruby_xmalloc2((size_t)(n),sizeof(type)))
5099#define RB_ALLOC(type) ((type*)ruby_xmalloc(sizeof(type)))
5100#define RB_ZALLOC_N(type,n) ((type*)ruby_xcalloc((size_t)(n),sizeof(type)))
5101#define RB_ZALLOC(type) (RB_ZALLOC_N(type,1))
5102#define RB_REALLOC_N(var,type,n) ((var)=(type*)ruby_xrealloc2((char*)(var),(size_t)(n),sizeof(type)))
5103#define ALLOC_N(type,n) RB_ALLOC_N(type,n)
5104#define ALLOC(type) RB_ALLOC(type)
5105#define ZALLOC_N(type,n) RB_ZALLOC_N(type,n)
5106#define ZALLOC(type) RB_ZALLOC(type)
5107#define REALLOC_N(var,type,n) RB_REALLOC_N(var,type,n)
5108#define ALLOCA_N(type,n) (type*)__builtin_alloca_with_align((sizeof(type)*(n)), RUBY_ALIGNOF(type) * CHAR_BIT)
5113#define DSIZE_T uint128_t
5115rb_mul_size_overflow(
size_t a,
size_t b,
size_t max,
size_t *c)
5118 unsigned __int128 c2 = (
unsigned __int128)a * (
unsigned __int128)b;
5119 if (c2 > max)
return 1;
5124rb_alloc_tmp_buffer2(
volatile VALUE *store,
long count,
size_t elsize)
5127 if (elsize ==
sizeof(
VALUE)) {
5133 size_t size, max = 0x7fffffffffffffffL -
sizeof(
VALUE) + 1;
5141#define RUBY_ALLOCV_LIMIT 1024
5142#define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
5143#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))))
5144#define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
5145#define ALLOCV(v,n) RB_ALLOCV(v, n)
5146#define ALLOCV_N(type,v,n) RB_ALLOCV_N(type, v, n)
5147#define ALLOCV_END(v) RB_ALLOCV_END(v)
5148#define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(size_t)(n))
5149#define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n))
5150#define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n))
5151#define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n))
5203#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;
5204#define RUBY_CONST_ID_CACHE(result,str) { RUBY_CONST_ID_CACHE_NB(result, str) }
5205#define RUBY_CONST_ID(var,str) do RUBY_CONST_ID_CACHE((var) =, (str)) while (0)
5206#define CONST_ID_CACHE(result,str) RUBY_CONST_ID_CACHE(result, str)
5207#define CONST_ID(var,str) RUBY_CONST_ID(var, str)
5208#define rb_intern(str) (__builtin_constant_p(str) ? __extension__ ({RUBY_CONST_ID_CACHE_NB((ID), (str))}) : rb_intern(str))
5209#define rb_intern_const(str) (__builtin_constant_p(str) ? __extension__ (rb_intern2((str), (long)strlen(str))) : (rb_intern)(str))
5210#define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
5211#define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
5212__attribute__ ((__error__ (
" argument length doesn't match")))
int rb_varargs_bad_length(
int,
int);
5213#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))
5225#define rb_funcall2 rb_funcallv
5226#define rb_funcall3 rb_funcallv_public
5232#define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
5233#define RB_SCAN_ARGS_KEYWORDS 1
5234#define RB_SCAN_ARGS_EMPTY_KEYWORDS 2
5235#define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
5242#define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
5250#define ruby_verbose (*rb_ruby_verbose_ptr())
5251#define ruby_debug (*rb_ruby_debug_ptr())
5253#define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
5254#define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
5280#define RB_BLOCK_CALL_FUNC_STRICT 1
5281#define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
5282#define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
5293#define RB_NO_KEYWORDS 0
5294#define RB_PASS_KEYWORDS 1
5295#define RB_PASS_EMPTY_KEYWORDS 2
5296#define RB_PASS_CALLED_KEYWORDS 3
5407 return ((
struct RBasic*)(
obj))->klass;
5425#define rb_type_p(obj,type) __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : rb_type(obj) == (type))
5426#define rb_special_const_p(obj) __extension__ ({ VALUE special_const_obj = (obj); (int)(RB_SPECIAL_CONST_P(special_const_obj) ? RUBY_Qtrue : RUBY_Qfalse); })
5427#define RUBY_INTERN_H 1
5430#pragma GCC visibility push(default)
5433#define ST_DATA_T_DEFINED
5436#define MAX_ST_INDEX_VAL (~(st_index_t) 0)
5440#define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
5445#define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
5446#define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
5458#define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
5461#define st_init_table rb_st_init_table
5463#define st_init_table_with_size rb_st_init_table_with_size
5465#define st_init_numtable rb_st_init_numtable
5467#define st_init_numtable_with_size rb_st_init_numtable_with_size
5469#define st_init_strtable rb_st_init_strtable
5471#define st_init_strtable_with_size rb_st_init_strtable_with_size
5473#define st_init_strcasetable rb_st_init_strcasetable
5475#define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
5477#define st_delete rb_st_delete
5479#define st_delete_safe rb_st_delete_safe
5481#define st_shift rb_st_shift
5483#define st_insert rb_st_insert
5485#define st_insert2 rb_st_insert2
5487#define st_lookup rb_st_lookup
5489#define st_get_key rb_st_get_key
5492#define st_update rb_st_update
5496#define st_foreach_with_replace rb_st_foreach_with_replace
5498#define st_foreach rb_st_foreach
5500#define st_foreach_check rb_st_foreach_check
5502#define st_keys rb_st_keys
5504#define st_keys_check rb_st_keys_check
5506#define st_values rb_st_values
5508#define st_values_check rb_st_values_check
5510#define st_add_direct rb_st_add_direct
5512#define st_free_table rb_st_free_table
5514#define st_cleanup_safe rb_st_cleanup_safe
5516#define st_clear rb_st_clear
5518#define st_copy rb_st_copy
5520#define st_numcmp rb_st_numcmp
5522#define st_numhash rb_st_numhash
5524#define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
5526#define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
5527#define st_strcasecmp rb_st_locale_insensitive_strcasecmp
5528#define st_strncasecmp rb_st_locale_insensitive_strncasecmp
5530#define st_memsize rb_st_memsize
5532#define st_hash rb_st_hash
5534#define st_hash_uint32 rb_st_hash_uint32
5536#define st_hash_uint rb_st_hash_uint
5538#define st_hash_end rb_st_hash_end
5540#define st_hash_start(h) ((st_index_t)(h))
5543#pragma GCC visibility pop
5545#define MJIT_STATIC static
5547#pragma GCC visibility push(default)
5549#define UNLIMITED_ARGUMENTS (-1)
5593#define rb_ary_new2 rb_ary_new_capa
5594#define rb_ary_new3 rb_ary_new_from_args
5595#define rb_ary_new4 rb_ary_new_from_values
5608#define rb_big2int(x) rb_big2long(x)
5610#define rb_big2uint(x) rb_big2ulong(x)
5634#define INTEGER_PACK_MSWORD_FIRST 0x01
5635#define INTEGER_PACK_LSWORD_FIRST 0x02
5636#define INTEGER_PACK_MSBYTE_FIRST 0x10
5637#define INTEGER_PACK_LSBYTE_FIRST 0x20
5638#define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
5639#define INTEGER_PACK_2COMP 0x80
5640#define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
5641#define INTEGER_PACK_FORCE_BIGNUM 0x100
5642#define INTEGER_PACK_NEGATIVE 0x200
5643#define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
5644#define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
5645int rb_integer_pack(
VALUE val,
void *words,
size_t numwords,
size_t wordsize,
size_t nails,
int flags);
5651#define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
5652#define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
5654#define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
5655#define rb_rational_new2(x,y) rb_rational_new((x), (y))
5657#define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
5658#define rb_Rational2(x,y) rb_Rational((x), (y))
5664#define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
5665#define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
5667#define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
5668#define rb_complex_new2(x,y) rb_complex_new((x), (y))
5683#define rb_complex_add rb_complex_plus
5684#define rb_complex_sub rb_complex_minus
5685#define rb_complex_nagate rb_complex_uminus
5687#define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
5688#define rb_Complex2(x,y) rb_Complex((x), (y))
5727#define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
5728#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))
5729#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)
5730#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)
5731#define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
5732#define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
5743#define rb_exc_new2 rb_exc_new_cstr
5744#define rb_exc_new3 rb_exc_new_str
5756#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)
5757#define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
5759#define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
5760#define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
5769 if ((
argc < min) || (max != (-1) &&
argc > max))
5773#define rb_check_arity rb_check_arity
5788#define rb_fd_ptr(f) ((f)->fdset)
5789#define rb_fd_max(f) ((f)->maxfd)
5796#define HAVE_RB_DEFINE_ALLOC_FUNC 1
5918#define st_foreach_safe rb_st_foreach_safe
5943#define rb_defout rb_stdout
5978#define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
5985#define RB_NUM_COERCE_FUNCS_NEED_OPID 1
6067#define rb_memcmp memcmp
6077#define HAVE_RB_REG_NEW_STR 1
6085#define rb_argv rb_get_argv()
6091#define posix_signal ruby_posix_signal
6139#define rb_str_dup_frozen rb_str_new_frozen
6161#define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
6162#define rb_hash_uint(h,i) st_hash_uint((h), (i))
6163#define rb_hash_end(h) st_hash_end(h)
6185#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)) )
6186#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) )
6187#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)) )
6188#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)) )
6189#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) )
6190#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) )
6191#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) )
6192#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) )
6193#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) )
6194#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) )
6195#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)) )
6196#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)) )
6197#define rb_str_new2 rb_str_new_cstr
6198#define rb_str_new3 rb_str_new_shared
6199#define rb_str_new4 rb_str_new_frozen
6200#define rb_str_new5 rb_str_new_with_class
6201#define rb_tainted_str_new2 rb_tainted_str_new_cstr
6202#define rb_str_buf_new2 rb_str_buf_new_cstr
6203#define rb_usascii_str_new2 rb_usascii_str_new_cstr
6204#define rb_str_buf_cat rb_str_cat
6205#define rb_str_buf_cat2 rb_str_cat_cstr
6206#define rb_str_cat2 rb_str_cat_cstr
6207#define rb_strlen_lit(str) (sizeof(str "") - 1)
6208#define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
6209#define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
6210#define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
6211#define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
6212#define rb_str_new_literal(str) rb_str_new_lit(str)
6213#define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
6214#define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
6215#define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
6234#define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
6235#define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
6306#pragma GCC visibility pop
6308#define rb_f_notimplement_p(f) __builtin_types_compatible_p(__typeof__(f),__typeof__(rb_f_notimplement))
6324rb_array_len(
VALUE a)
6329#define FIX_CONST_VALUE_PTR(x) (x)
6330static inline const VALUE *
6331rb_array_const_ptr_transient(
VALUE a)
6335static inline const VALUE *
6336rb_array_const_ptr(
VALUE a)
6342 return rb_array_const_ptr_transient(a);
6344static inline VALUE *
6345rb_array_ptr_use_start(
VALUE a,
int allow_transient)
6348 if (!allow_transient) {
6354 (
void)allow_transient;
6358rb_array_ptr_use_end(
VALUE a,
int allow_transient)
6362 (
void)allow_transient;
6365#define HAVE_NATIVETHREAD
6367#define RUBY_EVENT_NONE 0x0000
6368#define RUBY_EVENT_LINE 0x0001
6369#define RUBY_EVENT_CLASS 0x0002
6370#define RUBY_EVENT_END 0x0004
6371#define RUBY_EVENT_CALL 0x0008
6372#define RUBY_EVENT_RETURN 0x0010
6373#define RUBY_EVENT_C_CALL 0x0020
6374#define RUBY_EVENT_C_RETURN 0x0040
6375#define RUBY_EVENT_RAISE 0x0080
6376#define RUBY_EVENT_ALL 0x00ff
6377#define RUBY_EVENT_B_CALL 0x0100
6378#define RUBY_EVENT_B_RETURN 0x0200
6379#define RUBY_EVENT_THREAD_BEGIN 0x0400
6380#define RUBY_EVENT_THREAD_END 0x0800
6381#define RUBY_EVENT_FIBER_SWITCH 0x1000
6382#define RUBY_EVENT_SCRIPT_COMPILED 0x2000
6383#define RUBY_EVENT_TRACEPOINT_ALL 0xffff
6384#define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
6385#define RUBY_INTERNAL_EVENT_SWITCH 0x040000
6386#define RUBY_EVENT_SWITCH 0x040000
6387#define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
6388#define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
6389#define RUBY_INTERNAL_EVENT_GC_START 0x400000
6390#define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
6391#define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
6392#define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
6393#define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
6394#define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
6395#define RUBY_INTERNAL_EVENT_MASK 0xffff0000
6398#define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
6401static inline int rb_isascii(
int c){
return '\0' <= c && c <=
'\x7f'; }
6402static inline int rb_isupper(
int c){
return 'A' <= c && c <=
'Z'; }
6403static inline int rb_islower(
int c){
return 'a' <= c && c <=
'z'; }
6404static inline int rb_isalpha(
int c){
return rb_isupper(c) || rb_islower(c); }
6405static inline int rb_isdigit(
int c){
return '0' <= c && c <=
'9'; }
6406static inline int rb_isalnum(
int c){
return rb_isalpha(c) || rb_isdigit(c); }
6407static inline int rb_isxdigit(
int c){
return rb_isdigit(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f'); }
6408static inline int rb_isblank(
int c){
return c ==
' ' || c ==
'\t'; }
6409static inline int rb_isspace(
int c){
return c ==
' ' || (
'\t' <= c && c <=
'\r'); }
6410static inline int rb_iscntrl(
int c){
return (
'\0' <= c && c <
' ') || c ==
'\x7f'; }
6411static inline int rb_isprint(
int c){
return ' ' <= c && c <=
'\x7e'; }
6412static inline int rb_ispunct(
int c){
return !rb_isalnum(c); }
6413static inline int rb_isgraph(
int c){
return '!' <= c && c <=
'\x7e'; }
6414static inline int rb_tolower(
int c) {
return rb_isupper(c) ? (c|0x20) : c; }
6415static inline int rb_toupper(
int c) {
return rb_islower(c) ? (c&0x5f) : c; }
6416#define ISASCII(c) rb_isascii(c)
6417#define ISPRINT(c) rb_isprint(c)
6418#define ISGRAPH(c) rb_isgraph(c)
6419#define ISSPACE(c) rb_isspace(c)
6420#define ISUPPER(c) rb_isupper(c)
6421#define ISLOWER(c) rb_islower(c)
6422#define ISALNUM(c) rb_isalnum(c)
6423#define ISALPHA(c) rb_isalpha(c)
6424#define ISDIGIT(c) rb_isdigit(c)
6425#define ISXDIGIT(c) rb_isxdigit(c)
6426#define ISBLANK(c) rb_isblank(c)
6427#define ISCNTRL(c) rb_iscntrl(c)
6428#define ISPUNCT(c) rb_ispunct(c)
6429#define TOUPPER(c) rb_toupper(c)
6430#define TOLOWER(c) rb_tolower(c)
6433#define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
6434#define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
6436#define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
6437#define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
6441#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__))
6443__attribute__ ((__error__ ("variable argument length doesn't match")))
void rb_scan_args_length_mismatch(
const char*,
int);
6444#define rb_scan_args_isdigit(c) ((unsigned char)((c)-'0')<10)
6445#define rb_scan_args_count_end(fmt,ofs,vari) (fmt[ofs] ? -1 : (vari))
6446#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))
6447#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))
6448#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')))
6449#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))
6450#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'))
6451#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'))
6452#define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
6453#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)
6456rb_scan_args_lead_p(
const char *
fmt)
6458 return ((
unsigned char)((
fmt[0])-
'0')<10);
6460__attribute__ ((__always_inline__))
static int rb_scan_args_n_lead(
const char *
fmt);
6462rb_scan_args_n_lead(
const char *
fmt)
6464 return (rb_scan_args_lead_p(
fmt) ?
fmt[0]-
'0' : 0);
6466__attribute__ ((__always_inline__))
static int rb_scan_args_opt_p(
const char *
fmt);
6468rb_scan_args_opt_p(
const char *
fmt)
6470 return (rb_scan_args_lead_p(
fmt) && ((
unsigned char)((
fmt[1])-
'0')<10));
6472__attribute__ ((__always_inline__))
static int rb_scan_args_n_opt(
const char *
fmt);
6474rb_scan_args_n_opt(
const char *
fmt)
6476 return (rb_scan_args_opt_p(
fmt) ?
fmt[1]-
'0' : 0);
6478__attribute__ ((__always_inline__))
static int rb_scan_args_var_idx(
const char *
fmt);
6480rb_scan_args_var_idx(
const char *
fmt)
6482 return (!rb_scan_args_lead_p(
fmt) ? 0 : !((
unsigned char)((
fmt[1])-
'0')<10) ? 1 : 2);
6484__attribute__ ((__always_inline__))
static int rb_scan_args_f_var(
const char *
fmt);
6486rb_scan_args_f_var(
const char *
fmt)
6488 return (
fmt[rb_scan_args_var_idx(
fmt)]==
'*');
6490__attribute__ ((__always_inline__))
static int rb_scan_args_trail_idx(
const char *
fmt);
6492rb_scan_args_trail_idx(
const char *
fmt)
6494 const int idx = rb_scan_args_var_idx(
fmt);
6495 return idx+(
fmt[idx]==
'*');
6497__attribute__ ((__always_inline__))
static int rb_scan_args_n_trail(
const char *
fmt);
6499rb_scan_args_n_trail(
const char *
fmt)
6501 const int idx = rb_scan_args_trail_idx(
fmt);
6502 return (((
unsigned char)((
fmt[idx])-
'0')<10) ?
fmt[idx]-
'0' : 0);
6504__attribute__ ((__always_inline__))
static int rb_scan_args_hash_idx(
const char *
fmt);
6506rb_scan_args_hash_idx(
const char *
fmt)
6508 const int idx = rb_scan_args_trail_idx(
fmt);
6509 return idx+((
unsigned char)((
fmt[idx])-
'0')<10);
6511__attribute__ ((__always_inline__))
static int rb_scan_args_f_hash(
const char *
fmt);
6513rb_scan_args_f_hash(
const char *
fmt)
6515 return (
fmt[rb_scan_args_hash_idx(
fmt)]==
':');
6517__attribute__ ((__always_inline__))
static int rb_scan_args_block_idx(
const char *
fmt);
6519rb_scan_args_block_idx(
const char *
fmt)
6521 const int idx = rb_scan_args_hash_idx(
fmt);
6522 return idx+(
fmt[idx]==
':');
6524__attribute__ ((__always_inline__))
static int rb_scan_args_f_block(
const char *
fmt);
6526rb_scan_args_f_block(
const char *
fmt)
6528 return (
fmt[rb_scan_args_block_idx(
fmt)]==
'&');
6530#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)
6531__attribute__ ((__always_inline__))
static 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);
6538 int i, argi = 0, vari = 0, last_idx = -1;
6542 int empty_keyword_given = 0;
6543 VALUE tmp_buffer = 0;
6544 if (!keyword_given) {
6547 if (
argc > 0 && !(
f_hash && empty_keyword_given)) {
6550 if (keyword_given) {
6552 rb_warn(
"Keyword flag set when calling rb_scan_args, but last entry is not a hash");
6560 rb_warn(
"The last argument is nil, treating as empty keywords");
6569 if (!(last_hash = hash)) {
6570 if (!keyword_given) {
6571 rb_warn(
"Using the last argument as keyword parameters is deprecated");
6576 rb_warn(
"The last argument is split into positional and keyword parameters");
6577 last_idx =
argc - 1;
6582 else if (
f_hash && keyword_given && n_mand ==
argc) {
6583 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
6586 if (
f_hash && n_mand > 0 && n_mand ==
argc+1 && empty_keyword_given) {
6592 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
6594 if (
argc < n_mand) {
6599 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6605 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6629 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6634 if (var) *var = hash;
6653#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); })
6654#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); })
6655#define RUBY_SUBST_H 1
6658#define snprintf ruby_snprintf
6659#define vsnprintf ruby_vsnprintf
6667#define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
6686#pragma GCC visibility pop
6688#define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
6693#define __bool_true_false_are_defined 1
6694#define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
6695#define LIKELY(x) RB_LIKELY(x)
6696#define UNLIKELY(x) RB_UNLIKELY(x)
6697#define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE("address", NOINLINE(x))
6699#define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
6700#define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
6701#define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
6702#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
6703#define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
6704#define STATIC_ASSERT(name,expr) _Static_assert(expr, #name ": " #expr)
6705#define SIGNED_INTEGER_TYPE_P(int_type) (0 > ((int_type)0)-1)
6706#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))
6707#define SIGNED_INTEGER_MIN(sint_type) (-SIGNED_INTEGER_MAX(sint_type)-1)
6708#define UNSIGNED_INTEGER_MAX(uint_type) (~(uint_type)0)
6709#define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
6710#define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
6711#define TIMET_MAX_PLUS_ONE (2*(double)(TIMET_MAX/2+1))
6712#define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
6713#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)))
6714#define MUL_OVERFLOW_FIXNUM_P(a,b) ({ struct { long fixnum : SIZEOF_LONG * CHAR_BIT - 1; } c; __builtin_mul_overflow_p((a), (b), c.fixnum); })
6715#define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6716#define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6717#define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
6718#define swap16(x) __builtin_bswap16(x)
6719#define swap32(x) __builtin_bswap32(x)
6720#define swap64(x) __builtin_bswap64(x)
6721static inline unsigned int
6722nlz_int(
unsigned int x)
6724 if (x == 0)
return 4 * 8;
6725 return (
unsigned int)__builtin_clz(x);
6727static inline unsigned int
6728nlz_long(
unsigned long x)
6730 if (x == 0)
return 8 * 8;
6731 return (
unsigned int)__builtin_clzl(x);
6733static inline unsigned int
6734nlz_long_long(
unsigned long long x)
6736 if (x == 0)
return 8 * 8;
6737 return (
unsigned int)__builtin_clzll(x);
6739static inline unsigned int
6740nlz_int128(
unsigned __int128 x)
6742 unsigned __int128 y;
6743 unsigned int n = 128;
6744 y = x >> 64;
if (y) {
n -= 64; x = y;}
6745 y = x >> 32;
if (y) {
n -= 32; x = y;}
6746 y = x >> 16;
if (y) {
n -= 16; x = y;}
6747 y = x >> 8;
if (y) {
n -= 8; x = y;}
6748 y = x >> 4;
if (y) {
n -= 4; x = y;}
6749 y = x >> 2;
if (y) {
n -= 2; x = y;}
6750 y = x >> 1;
if (y) {
return n - 2;}
6751 return (
unsigned int)(
n - x);
6753static inline unsigned int
6758static inline unsigned int
6761 return (
unsigned int)__builtin_popcount(x);
6766 return __builtin_popcountll(x);
6771 return rb_popcount64(x);
6776 return __builtin_ctz(x);
6781 return __builtin_ctzll(x);
6786 return ntz_int64(x);
6788#define DLONG int128_t
6789#define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
6792rb_overflowed_fix_to_int(
long x)
6794 return (
long)((
unsigned long)(x >> 1) ^ (1L
U << (8 * 8 - 1)));
6800 if (__builtin_add_overflow((
long)x, (
long)y-1, &lz)) {
6801 return rb_int2big(rb_overflowed_fix_to_int(lz));
6811 if (__builtin_sub_overflow((
long)x, (
long)y-1, &lz)) {
6812 return rb_int2big(rb_overflowed_fix_to_int(lz));
6821 long lx = ((
long)(((
long)(x))>>(
int)(1)));
6822 long ly = ((
long)(((
long)(y))>>(
int)(1)));
6823 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));
6828 long x = ((
long)(((
long)(a))>>(
int)(1)));
6829 long y = ((
long)(((
long)(b))>>(
int)(1)));
6831 if (x == (((
long)(-0x7fffffffffffffffL -1L))>>(
int)(1)) && y == -1) {
6832 if (divp) *divp = rb_long2num_inline(-(((
long)(-0x7fffffffffffffffL -1L))>>(
int)(1)));
6838 if (y > 0 ? mod < 0 : mod > 0) {
6849 rb_fix_divmod_fix(x, y, &
div, ((
void *)0));
6856 rb_fix_divmod_fix(x, y, ((
void *)0), &
mod);
6859#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)))
6860#define BDIGIT unsigned int
6861#define SIZEOF_BDIGIT SIZEOF_INT
6862#define BDIGIT_DBL unsigned LONG_LONG
6863#define BDIGIT_DBL_SIGNED LONG_LONG
6864#define PRI_BDIGIT_PREFIX ""
6865#define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
6866#define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
6867#define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
6868#define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
6869#define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
6870#define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
6871#define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
6872#define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
6873#define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
6874#define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
6875#define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
6876#define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
6877#define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
6878#define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
6879#define BIGNUM_EMBED_LEN_NUMBITS 3
6880#define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
6891#define BIGNUM_SIGN_BIT ((VALUE)FL_USER1)
6892#define BIGNUM_SIGN(b) ((RBASIC(b)->flags & BIGNUM_SIGN_BIT) != 0)
6893#define BIGNUM_SET_SIGN(b,sign) ((sign) ? (RBASIC(b)->flags |= BIGNUM_SIGN_BIT) : (RBASIC(b)->flags &= ~BIGNUM_SIGN_BIT))
6894#define BIGNUM_POSITIVE_P(b) BIGNUM_SIGN(b)
6895#define BIGNUM_NEGATIVE_P(b) (!BIGNUM_SIGN(b))
6896#define BIGNUM_NEGATE(b) (RBASIC(b)->flags ^= BIGNUM_SIGN_BIT)
6897#define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
6898#define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
6899#define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
6900#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)
6901#define BIGNUM_DIGITS(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? RBIGNUM(b)->as.ary : RBIGNUM(b)->as.heap.digits)
6902#define BIGNUM_LENINT(b) rb_long2int(BIGNUM_LEN(b))
6903#define RBIGNUM(obj) (R_CAST(RBignum)(obj))
6909#define RRATIONAL(obj) (R_CAST(RRational)(obj))
6910#define RRATIONAL_SET_NUM(rat,n) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->num,(n))
6911#define RRATIONAL_SET_DEN(rat,d) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->den,(d))
6916#define RFLOAT(obj) (R_CAST(RFloat)(obj))
6922#define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
6923#define RCOMPLEX_SET_REAL(cmp,r) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->real,(r))
6924#define RCOMPLEX_SET_IMAG(cmp,i) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->imag,(i))
6929#define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
6934#define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
6940#define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
6942#define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
6943#define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
6944#define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
6945#define RHASH(obj) (R_CAST(RHash)(obj))
6946#define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
6947#define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
6948#define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
6949#define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
6950#define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
6951#define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
6952#define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
6953#define RHASH_TRANSIENT_P(hash) FL_TEST_RAW((hash), RHASH_TRANSIENT_FLAG)
6954#define RHASH_SET_TRANSIENT_FLAG(h) FL_SET_RAW(h, RHASH_TRANSIENT_FLAG)
6955#define RHASH_UNSET_TRANSIENT_FLAG(h) FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG)
6971#define RHASH_IFNONE(h) (RHASH(h)->ifnone)
6972#define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
6979#define RSTRUCT_EMBED_LEN_MAX RSTRUCT_EMBED_LEN_MAX
6980#define RSTRUCT_EMBED_LEN_MASK RSTRUCT_EMBED_LEN_MASK
6981#define RSTRUCT_EMBED_LEN_SHIFT RSTRUCT_EMBED_LEN_SHIFT
6989#define RSTRUCT_TRANSIENT_P(st) FL_TEST_RAW((obj), RSTRUCT_TRANSIENT_FLAG)
6990#define RSTRUCT_TRANSIENT_SET(st) FL_SET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
6991#define RSTRUCT_TRANSIENT_UNSET(st) FL_UNSET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
7006#define RSTRUCT_EMBED_LEN(st) (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT))
7007#define RSTRUCT_LEN(st) rb_struct_len(st)
7008#define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st))
7009#define RSTRUCT_CONST_PTR(st) rb_struct_const_ptr(st)
7010#define RSTRUCT_PTR(st) ((VALUE *)RSTRUCT_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(STRUCT, st)))
7011#define RSTRUCT_SET(st,idx,v) RB_OBJ_WRITE(st, &RSTRUCT_CONST_PTR(st)[idx], (v))
7012#define RSTRUCT_GET(st,idx) (RSTRUCT_CONST_PTR(st)[idx])
7013#define RSTRUCT(obj) (R_CAST(RStruct)(obj))
7020static inline const VALUE *
7025static inline const VALUE *
7026rb_struct_const_heap_ptr(
VALUE st)
7028 return ((
struct RStruct*)(
st))->as.heap.ptr;
7040#define SERIALT2NUM ULL2NUM
7041#define PRI_SERIALT_PREFIX PRI_LL_PREFIX
7042#define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
7068#define RCLASS_EXT(c) (RCLASS(c)->ptr)
7069#define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
7070#define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
7071#define RCLASS_M_TBL(c) (RCLASS_EXT(c)->m_tbl)
7072#define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
7073#define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
7074#define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
7075#define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
7076#define RCLASS_SERIAL(c) (RCLASS(c)->class_serial)
7077#define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
7078#define RCLASS_CLONED FL_USER6
7079#define RICLASS_IS_ORIGIN FL_USER5
7080#define RCLASS_REFINED_BY_ANY FL_USER7
7108#define IMEMO_DEBUG 0
7129#define IMEMO_MASK 0x0f
7141 return expected_type == (((
struct RBasic*)(
imemo))->flags &
mask);
7148#define IMEMO_FL_USHIFT (FL_USHIFT + 4)
7149#define IMEMO_FL_USER0 FL_USER4
7150#define IMEMO_FL_USER1 FL_USER5
7151#define IMEMO_FL_USER2 FL_USER6
7152#define IMEMO_FL_USER3 FL_USER7
7153#define IMEMO_FL_USER4 FL_USER8
7161#define THROW_DATA_CONSUMED IMEMO_FL_USER0
7169#define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
7180#define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7194#define rb_imemo_tmpbuf_auto_free_pointer() rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0)
7196#define RB_IMEMO_TMPBUF_PTR(v) ((void *)(((const struct rb_imemo_tmpbuf_struct *)(v))->ptr))
7198rb_imemo_tmpbuf_set_ptr(
VALUE v,
void *
ptr)
7203rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(
VALUE str)
7233#define MEMO_V1_SET(m,v) RB_OBJ_WRITE((m), &(m)->v1, (v))
7234#define MEMO_V2_SET(m,v) RB_OBJ_WRITE((m), &(m)->v2, (v))
7235#define MEMO_CAST(m) ((struct MEMO *)m)
7236#define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7237#define roomof(x,y) (((x) + (y) - 1) / (y))
7238#define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
7239#define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
7240#define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
7241#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))
7242#define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
7243#define rb_cFixnum rb_cInteger
7244#define rb_cBignum rb_cInteger
7255#define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
7256#define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
7257#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))))
7258#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))
7267#define ARRAY_DEBUG (0+RUBY_DEBUG)
7268#define RARRAY_PTR_IN_USE_FLAG FL_USER14
7269#define ARY_PTR_USING_P(ary) FL_TEST_RAW((ary), RARRAY_PTR_IN_USE_FLAG)
7270#define RARY_TRANSIENT_SET(ary) FL_SET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7271#define RARY_TRANSIENT_UNSET(ary) FL_UNSET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7283#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); })
7285rb_ary_entry_internal(
VALUE ary,
long offset)
7287 long len = rb_array_len(ary);
7288 const VALUE *
ptr = rb_array_const_ptr_transient(ary);
7294 else if (
len <= offset) {
7302#define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, __func__)
7303#define rp_m(msg,obj) do { fprintf(stderr, "%s", (msg)); rb_obj_info_dump((VALUE)obj); } while (0)
7304#define bp() ruby_debug_breakpoint()
7391#define rb_raise_cstr(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_cstr(mesg)))
7392#define rb_raise_static(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_static(mesg, rb_strlen_lit(mesg))))
7394#define rb_name_err_raise_str(mesg,recv,name) rb_exc_raise(rb_name_err_new(mesg, recv, name))
7395#define rb_name_err_raise(mesg,recv,name) rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
7398#define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
7404#define id_signo ruby_static_id_signo
7405#define id_status ruby_static_id_status
7422#pragma GCC visibility push(default)
7425#pragma GCC visibility pop
7426#define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
7427#define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
7440#define ruby_sized_xrealloc(ptr,new_size,old_size) ruby_xrealloc(ptr, new_size)
7441#define ruby_sized_xrealloc2(ptr,new_count,element_size,old_count) ruby_xrealloc2(ptr, new_count, element_size)
7442#define ruby_sized_xfree(ptr,size) ruby_xfree(ptr)
7443#define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n)
7446#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))
7447#define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
7457#define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
7476#pragma GCC visibility push(default)
7480#pragma GCC visibility pop
7490#define rb_io_fptr_finalize rb_io_fptr_finalize_internal
7510#define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
7511#define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
7512#define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
7513#define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
7514#define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
7515#define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
7522#define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
7523#define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
7524#define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
7568rb_num_compare_with_zero(
VALUE num,
ID mid)
7578rb_num_positive_int_p(
VALUE num)
7587 return ((((
struct RBasic*)(num))->
flags & ((
VALUE)((
VALUE)RUBY_FL_USER1))) != 0);
7592rb_num_negative_int_p(
VALUE num)
7597 return ((
long)(num) < 0);
7601 return (!((((
struct RBasic*)(num))->
flags & ((
VALUE)((
VALUE)RUBY_FL_USER1))) != 0));
7609#define RUBY_BIT_ROTL(v,n) (((v) << (n)) | ((v) >> ((sizeof(v) * 8) - n)))
7610#define RUBY_BIT_ROTR(v,n) (((v) >> (n)) | ((v) << ((sizeof(v) * 8) - n)))
7612rb_float_flonum_value(
VALUE v)
7614 if (
v != (
VALUE)0x8000000000000002) {
7620 t.v = ((((2 - b63) | (
v & ~(
VALUE)0x03)) >> (3)) | (((2 - b63) | (
v & ~(
VALUE)0x03)) << ((
sizeof((2 - b63) | (
v & ~(
VALUE)0x03)) * 8) - 3)));
7626rb_float_noflonum_value(
VALUE v)
7628 return ((
struct RFloat *)
v)->float_value;
7631rb_float_value_inline(
VALUE v)
7634 return rb_float_flonum_value(
v);
7636 return rb_float_noflonum_value(
v);
7639rb_float_new_inline(
double d)
7647 bits = (
int)((
VALUE)(t.v >> 60) & 0x7);
7648 if (t.v != 0x3000000000000000 &&
7649 !((bits-3) & ~0x01)) {
7650 return ((((t.v) << (3)) | ((t.v) >> ((
sizeof(t.v) * 8) - 3))) & ~(
VALUE)0x01) | 0x02;
7652 else if (t.v == (
VALUE)0) {
7653 return 0x8000000000000002;
7657#define rb_float_value(v) rb_float_value_inline(v)
7658#define rb_float_new(d) rb_float_new_inline(d)
7675#define RBASIC_CLEAR_CLASS(obj) memset(&(((struct RBasicRaw *)((VALUE)(obj)))->klass), 0, sizeof(VALUE))
7676#define RBASIC_SET_CLASS_RAW(obj,cls) memcpy(&((struct RBasicRaw *)((VALUE)(obj)))->klass, &(cls), sizeof(VALUE))
7677#define RBASIC_SET_CLASS(obj,cls) do { VALUE _obj_ = (obj); RB_OBJ_WRITE(_obj_, &((struct RBasicRaw *)(_obj_))->klass, cls); } while (0)
7678#define USE_SYMBOL_GC 1
7681#pragma GCC visibility push(default)
7685#pragma GCC visibility pop
7703#define RB_MAX_GROUPS (65536)
7733 unsigned exception : 1;
7750#define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
7752ARGVSTR2ARGC(
VALUE argv_str)
7765#define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
7766#define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
7767#define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
7798#define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
7799#define rb_fstring_literal(str) rb_fstring_lit(str)
7801#define rb_fstring_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_fstring_new((str), (long)strlen(str)) : rb_fstring_cstr(str) )
7806#define QUOTE(str) rb_str_quote_unprintable(str)
7807#define QUOTE_ID(id) rb_id_quote_unprintable(id)
7812#define STR_NOEMBED FL_USER1
7813#define STR_SHARED FL_USER2
7814#define STR_EMBED_P(str) (!FL_TEST_RAW((str), STR_NOEMBED))
7815#define STR_SHARED_P(s) FL_ALL_RAW((s), STR_NOEMBED|ELTS_SHARED)
7816#define is_ascii_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT)
7817#define is_broken_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN)
7827rb_str_eql_internal(
const VALUE str1,
const VALUE str2)
7830 const char *ptr1, *ptr2;
7841#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); })
7847#define COVERAGE_INDEX_LINES 0
7848#define COVERAGE_INDEX_BRANCHES 1
7849#define COVERAGE_TARGET_LINES 1
7850#define COVERAGE_TARGET_BRANCHES 2
7851#define COVERAGE_TARGET_METHODS 4
7852#define COVERAGE_TARGET_ONESHOT_LINES 8
7868char *
ruby_dtoa(
double d_,
int mode,
int ndigits,
int *decpt,
int *sign,
char **rve);
7869char *
ruby_hdtoa(
double d,
const char *xdigs,
int ndigits,
int *decpt,
int *sign,
char **rve);
7870#define ROBJECT_TRANSIENT_FLAG FL_USER13
7871#define ROBJ_TRANSIENT_P(obj) FL_TEST_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7872#define ROBJ_TRANSIENT_SET(obj) FL_SET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7873#define ROBJ_TRANSIENT_UNSET(obj) FL_UNSET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7897static void rb_vm_pop_cfunc_frame(
void);
7902static VALUE ruby_vm_special_exception_copy(
VALUE);
7982#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); })
7983#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); })
7997#pragma GCC visibility push(default)
8033#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)
8039#define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
8079#define RB_OBJ_GC_FLAGS_MAX 6
8086#pragma GCC visibility pop
8088#define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
8089#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)
8090#define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
8091#define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
8092#define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : RB_BUILTIN_TYPE(arg_obj); })
8094#define BITFIELD(type,name,size) type name : size
8095#define COMPILER_WARNING_PUSH _Pragma("GCC diagnostic push")
8096#define COMPILER_WARNING_POP _Pragma("GCC diagnostic pop")
8097#define COMPILER_WARNING_SPECIFIER(kind,msg) GCC diagnostic kind #msg
8098#define COMPILER_WARNING_ERROR(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(error, flag))
8099#define COMPILER_WARNING_IGNORED(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(ignored, flag))
8100#define COMPILER_WARNING_PRAGMA(str) COMPILER_WARNING_PRAGMA_(str)
8101#define COMPILER_WARNING_PRAGMA_(str) _Pragma(#str)
8102#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; })
8103#define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
8105#define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
8108#pragma GCC visibility push(default)
8114#pragma GCC visibility pop
8116#define vm_exec rb_vm_exec
8118#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
8119#define RUBY_MARK_FREE_DEBUG 0
8120#define RUBY_MARK_ENTER(msg)
8121#define RUBY_MARK_LEAVE(msg)
8122#define RUBY_FREE_ENTER(msg)
8123#define RUBY_FREE_LEAVE(msg)
8124#define RUBY_GC_INFO if(0)printf
8125#define RUBY_MARK_NO_PIN_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
8126#define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
8127#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
8128#define STACK_UPPER(x,a,b) (b)
8129#define STACK_GROW_DIR_DETECTION
8130#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
8131#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
8137#pragma GCC visibility push(default)
8147 int (*callback)(
void *start,
void *end,
size_t stride,
void *data),
8150 int (*callback)(
void *,
void *,
size_t,
void *),
8153#pragma GCC visibility pop
8155#define RUBY_VM_CORE_H
8156#define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
8157#define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
8160#define assert RUBY_ASSERT
8161#define VM_ASSERT(expr) ((void)0)
8162#define VM_UNREACHABLE(func) UNREACHABLE
8163#define RUBY_VM_THREAD_MODEL 2
8164#define VM_INSN_INFO_TABLE_IMPL 2
8165#define RUBY_NODE_H 1
8315#define RNODE(obj) (R_CAST(RNode)(obj))
8316#define NODE_FL_NEWLINE (((VALUE)1)<<7)
8317#define NODE_TYPESHIFT 8
8318#define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
8319#define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
8320#define nd_set_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
8321#define NODE_LSHIFT (NODE_TYPESHIFT+7)
8322#define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
8323#define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
8324#define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
8325#define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
8326#define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
8327#define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
8328#define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
8329#define nd_first_loc(n) ((n)->nd_loc.beg_pos)
8330#define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
8331#define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
8332#define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
8333#define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
8334#define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
8335#define nd_last_loc(n) ((n)->nd_loc.end_pos)
8336#define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
8337#define nd_node_id(n) ((n)->node_id)
8338#define nd_set_node_id(n,id) ((n)->node_id = (id))
8339#define nd_head u1.node
8340#define nd_alen u2.argc
8341#define nd_next u3.node
8342#define nd_cond u1.node
8343#define nd_body u2.node
8344#define nd_else u3.node
8345#define nd_resq u2.node
8346#define nd_ensr u3.node
8347#define nd_1st u1.node
8348#define nd_2nd u2.node
8349#define nd_stts u1.node
8350#define nd_entry u3.entry
8352#define nd_cflag u2.id
8353#define nd_cval u3.value
8355#define nd_tbl u1.tbl
8356#define nd_var u1.node
8357#define nd_iter u3.node
8358#define nd_value u2.node
8360#define nd_lit u1.value
8361#define nd_rest u1.id
8362#define nd_opt u1.node
8364#define nd_plen u2.argc
8365#define nd_recv u1.node
8367#define nd_args u3.node
8368#define nd_ainfo u3.args
8369#define nd_defn u3.node
8370#define nd_cpath u1.node
8371#define nd_super u3.node
8372#define nd_beg u1.node
8373#define nd_end u2.node
8374#define nd_state u3.state
8375#define nd_rval u2.value
8376#define nd_nth u2.argc
8378#define nd_alias u1.id
8379#define nd_orig u2.id
8380#define nd_undef u2.node
8381#define nd_brace u2.argc
8382#define nd_pconst u1.node
8383#define nd_pkwargs u2.node
8384#define nd_pkwrestarg u3.node
8385#define nd_apinfo u3.apinfo
8386#define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
8387#define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
8388#define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
8389#define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
8390#define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
8391#define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
8392#define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
8393#define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
8394#define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
8395#define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
8396#define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
8397#define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
8398#define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
8399#define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
8400#define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
8401#define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
8402#define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
8403#define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
8404#define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
8405#define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
8406#define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
8407#define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
8408#define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
8409#define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
8410#define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
8411#define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
8412#define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
8413#define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
8414#define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
8415#define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
8416#define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
8417#define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
8418#define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
8419#define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v),loc)
8420#define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
8421#define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
8422#define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
8423#define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
8424#define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
8425#define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
8426#define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
8427#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)
8428#define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
8429#define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
8430#define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
8431#define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
8432#define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v),loc)
8433#define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
8434#define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
8435#define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
8436#define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
8437#define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
8438#define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
8439#define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
8440#define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
8441#define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
8442#define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
8443#define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
8444#define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
8445#define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
8446#define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
8447#define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
8448#define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
8449#define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
8450#define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
8451#define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
8452#define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
8453#define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
8454#define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
8455#define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
8456#define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
8457#define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
8458#define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
8459#define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
8460#define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
8461#define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
8462#define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
8463#define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
8464#define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
8465#define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
8466#define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
8467#define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
8468#define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
8469#define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
8470#define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
8471#define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
8472#define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
8473#define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
8474#define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
8475#define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
8476#define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
8477#define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
8478#define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
8479#define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
8480#define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
8481#define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
8482#define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
8483#define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
8484#define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
8485#define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
8486#define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
8487#define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
8488#define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
8491#pragma GCC visibility push(default)
8555#pragma GCC visibility pop
8557#define RUBY_VM_OPTS_H
8558#define OPT_TAILCALL_OPTIMIZATION 0
8559#define OPT_PEEPHOLE_OPTIMIZATION 1
8560#define OPT_SPECIALISED_INSTRUCTION 1
8561#define OPT_INLINE_CONST_CACHE 1
8562#define OPT_FROZEN_STRING_LITERAL 0
8563#define OPT_DEBUG_FROZEN_STRING_LITERAL 0
8564#define OPT_THREADED_CODE 0
8565#define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
8566#define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
8567#define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
8568#define OPT_CHECKED_RUN 1
8569#define OPT_INLINE_METHOD_CACHE 1
8570#define OPT_GLOBAL_METHOD_CACHE 1
8571#define OPT_BLOCKINLINING 0
8572#define OPT_IC_FOR_IVAR 1
8573#define OPT_OPERANDS_UNIFICATION 1
8574#define OPT_INSTRUCTIONS_UNIFICATION 0
8575#define OPT_UNIFY_ALL_COMBINATION 0
8576#define OPT_STACK_CACHING 0
8577#define OPT_SUPPORT_JOKE 0
8578#define VM_COLLECT_USAGE_DETAILS 0
8593#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
8594#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
8595#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
8596#define ID_LOCAL RUBY_ID_LOCAL
8597#define ID_INSTANCE RUBY_ID_INSTANCE
8598#define ID_GLOBAL RUBY_ID_GLOBAL
8599#define ID_ATTRSET RUBY_ID_ATTRSET
8600#define ID_CONST RUBY_ID_CONST
8601#define ID_CLASS RUBY_ID_CLASS
8602#define ID_JUNK RUBY_ID_JUNK
8603#define ID_INTERNAL RUBY_ID_INTERNAL
8604#define symIFUNC ID2SYM(idIFUNC)
8605#define symCFUNC ID2SYM(idCFUNC)
8606#define RUBY_TOKEN_DOT2 128
8607#define RUBY_TOKEN_DOT3 129
8608#define RUBY_TOKEN_BDOT2 130
8609#define RUBY_TOKEN_BDOT3 131
8610#define RUBY_TOKEN_UPLUS 132
8611#define RUBY_TOKEN_UMINUS 133
8612#define RUBY_TOKEN_POW 134
8613#define RUBY_TOKEN_CMP 135
8614#define RUBY_TOKEN_LSHFT 136
8615#define RUBY_TOKEN_RSHFT 137
8616#define RUBY_TOKEN_LEQ 138
8617#define RUBY_TOKEN_GEQ 139
8618#define RUBY_TOKEN_EQ 140
8619#define RUBY_TOKEN_EQQ 141
8620#define RUBY_TOKEN_NEQ 142
8621#define RUBY_TOKEN_MATCH 143
8622#define RUBY_TOKEN_NMATCH 144
8623#define RUBY_TOKEN_AREF 145
8624#define RUBY_TOKEN_ASET 146
8625#define RUBY_TOKEN_COLON2 147
8626#define RUBY_TOKEN_ANDOP 148
8627#define RUBY_TOKEN_OROP 149
8628#define RUBY_TOKEN_ANDDOT 150
8629#define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
8630#define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
8631#define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
8632#define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
8633#define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
8634#define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
8635#define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
8636#define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
8771#define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
8837#define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
8838#define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
8842#define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
8843#define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
8844#define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
8848#define RUBY_METHOD_H 1
8849#define END_OF_ENUMERATION(key)
8882#define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
8883#define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
8884#define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
8885#define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
8912 (
src->flags & (((
VALUE)RUBY_FL_USER4)|((
VALUE)RUBY_FL_USER5)|((
VALUE)RUBY_FL_USER6)));
8929#define VM_METHOD_TYPE_MINIMUM_BITS 4
8932#define rb_iseq_t rb_iseq_t
8982#define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
8983#define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
8996#pragma GCC visibility push(default)
9000#pragma GCC visibility pop
9015#define RUBY_ATOMIC_H
9017#define ATOMIC_SET(var,val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
9018#define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
9019#define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
9020#define ATOMIC_OR(var,val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
9021#define ATOMIC_EXCHANGE(var,val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
9022#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; })
9023#define ATOMIC_SIZE_ADD(var,val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
9024#define ATOMIC_SIZE_SUB(var,val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
9025#define RUBY_ATOMIC_GENERIC_MACRO 1
9026#define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
9027#define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
9028#define ATOMIC_SIZE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
9029#define ATOMIC_SIZE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
9030#define ATOMIC_PTR_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
9031#define ATOMIC_PTR_CAS(var,oldval,newval) ATOMIC_CAS(var, oldval, newval)
9032#define ATOMIC_VALUE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
9033#define ATOMIC_VALUE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
9036#define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, __ASSERT_FUNC, #__e))
9037#define __ASSERT_FUNC __func__
9042#define static_assert _Static_assert
9044#define stringify(expr) stringify_1(expr)
9045#define stringify_1(expr) #expr
9046#define CCAN_CONTAINER_OF_H
9047#define CCAN_CHECK_TYPE_H
9048#define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
9049#define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
9050#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))
9051static inline char *container_of_or_null_(
void *member_ptr,
size_t offset)
9053 return member_ptr ? (
char *)member_ptr - offset : ((
void *)0);
9055#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))
9056#define container_off(containing_type,member) offsetof(containing_type, member)
9057#define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
9058#define container_off_var(var,member) container_off(typeof(*var), member)
9067#define LIST_LOC __FILE__ ":" stringify(__LINE__)
9068#define list_debug(h,loc) ((void)loc, h)
9069#define list_debug_node(n,loc) ((void)loc, n)
9070#define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
9071#define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
9072static inline void list_head_init(
struct list_head *
h)
9074 h->n.next =
h->n.prev = &
h->n;
9076static inline void list_node_init(
struct list_node *
n)
9078 n->next =
n->prev =
n;
9080#define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
9081static inline void list_add_after_(
struct list_head *
h,
9084 const char *abortstr)
9090 (
void)((
void)abortstr,
h);
9092#define list_add(h,n) list_add_(h, n, LIST_LOC)
9093static inline void list_add_(
struct list_head *
h,
9095 const char *abortstr)
9097 list_add_after_(
h, &
h->n,
n, abortstr);
9099#define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
9100static inline void list_add_before_(
struct list_head *
h,
9103 const char *abortstr)
9109 (
void)((
void)abortstr,
h);
9111#define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
9112static inline void list_add_tail_(
struct list_head *
h,
9114 const char *abortstr)
9116 list_add_before_(
h, &
h->n,
n, abortstr);
9118#define list_empty(h) list_empty_(h, LIST_LOC)
9119static inline int list_empty_(
const struct list_head *
h,
const char* abortstr)
9121 (
void)((
void)abortstr,
h);
9122 return h->n.next == &
h->n;
9124#define list_empty_nodebug(h) list_empty(h)
9125static inline _Bool list_empty_nocheck(
const struct list_head *
h)
9127 return h->n.next == &
h->n;
9129#define list_del(n) list_del_(n, LIST_LOC)
9130static inline void list_del_(
struct list_node *
n,
const char* abortstr)
9132 (
void)((
void)abortstr,
n);
9133 n->next->prev =
n->prev;
9134 n->prev->next =
n->next;
9136#define list_del_init(n) list_del_init_(n, LIST_LOC)
9137static inline void list_del_init_(
struct list_node *
n,
const char *abortstr)
9139 list_del_(
n, abortstr);
9144 ((!list_empty_(
h,
"../ruby-2.7.6/ccan/list/list.h" ":" "328")) ? (
void)0 :
__assert_func (
"../ruby-2.7.6/ccan/list/list.h", 328, __func__,
"!list_empty(h)"));
9145 list_del_(
n,
"../ruby-2.7.6/ccan/list/list.h" ":" "329");
9147#define list_swap(o,n) list_swap_(o, n, LIST_LOC)
9148static inline void list_swap_(
struct list_node *o,
9150 const char* abortstr)
9152 (
void)((
void)abortstr, o);
9157#define list_entry(n,type,member) container_of(n, type, member)
9158#define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
9159static inline const void *list_top_(
const struct list_head *
h,
size_t off)
9161 if (list_empty_(
h,
"../ruby-2.7.6/ccan/list/list.h" ":" "399"))
9163 return (
const char *)
h->n.next - off;
9165#define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
9166static inline const void *list_pop_(
const struct list_head *
h,
size_t off)
9169 if (list_empty_(
h,
"../ruby-2.7.6/ccan/list/list.h" ":" "425"))
9172 list_del_(
n,
"../ruby-2.7.6/ccan/list/list.h" ":" "428");
9173 return (
const char *)
n - off;
9175#define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
9176static inline const void *list_tail_(
const struct list_head *
h,
size_t off)
9178 if (list_empty_(
h,
"../ruby-2.7.6/ccan/list/list.h" ":" "451"))
9180 return (
const char *)
h->n.prev - off;
9182#define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
9183#define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
9184#define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
9185#define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
9186#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)))
9187#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)))
9188#define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
9189static inline void list_append_list_(
struct list_head *to,
9191 const char *abortstr)
9195 to->
n.
prev = from_tail;
9196 from_tail->
next = &to->
n;
9197 to_tail->
next = &from->
n;
9198 from->
n.
prev = to_tail;
9199 list_del_(&from->
n,
"../ruby-2.7.6/ccan/list/list.h" ":" "600");
9200 list_head_init(from);
9202#define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
9203static inline void list_prepend_list_(
struct list_head *to,
9205 const char *abortstr)
9211 to_head->
prev = from_tail;
9212 from_tail->
next = to_head;
9213 list_del_(&from->
n,
"../ruby-2.7.6/ccan/list/list.h" ":" "632");
9214 list_head_init(from);
9216#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)))
9217#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)))
9218#define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
9219#define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
9220#define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
9221#define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
9222#define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
9223#define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
9224#define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
9225#define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
9226#define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
9227#define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
9228static inline void *list_node_to_off_(
struct list_node *node,
size_t off)
9230 return (
void *)((
char *)node - off);
9232static inline struct list_node *list_node_from_off_(
void *
ptr,
size_t off)
9236#define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
9237#define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
9238#define list_typeof(var) typeof(var)
9239static inline void *list_entry_or_null(
const struct list_head *
h,
9245 return (
char *)
n - off;
9247#define RUBY_THREAD_NATIVE_H 1
9249#define _SYS_SCHED_H_
9250#define SCHED_OTHER 3
9289#define PTHREAD_CANCEL_ASYNCHRONOUS 1
9290#define PTHREAD_CANCEL_ENABLE 0
9291#define PTHREAD_CANCEL_DEFERRED 0
9292#define PTHREAD_CANCEL_DISABLE 1
9293#define PTHREAD_CANCELED ((void *)-1)
9294#define PTHREAD_COND_INITIALIZER (pthread_cond_t)21
9295#define PTHREAD_CREATE_DETACHED 1
9296#define PTHREAD_CREATE_JOINABLE 0
9297#define PTHREAD_EXPLICIT_SCHED 1
9298#define PTHREAD_INHERIT_SCHED 0
9299#define PTHREAD_MUTEX_RECURSIVE 0
9300#define PTHREAD_MUTEX_ERRORCHECK 1
9301#define PTHREAD_MUTEX_NORMAL 2
9302#define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
9303#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP (pthread_mutex_t)18
9304#define PTHREAD_NORMAL_MUTEX_INITIALIZER_NP (pthread_mutex_t)19
9305#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP (pthread_mutex_t)20
9306#define PTHREAD_MUTEX_INITIALIZER PTHREAD_NORMAL_MUTEX_INITIALIZER_NP
9307#define PTHREAD_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, 0 }
9308#define PTHREAD_PROCESS_SHARED 1
9309#define PTHREAD_PROCESS_PRIVATE 0
9310#define PTHREAD_RWLOCK_INITIALIZER (pthread_rwlock_t)22
9311#define PTHREAD_SCOPE_PROCESS 0
9312#define PTHREAD_SCOPE_SYSTEM 1
9313#define PTHREAD_BARRIER_SERIAL_THREAD (-1)
9314int pthread_atfork (
void (*)(
void),
void (*)(
void),
void (*)(
void));
9343#define pthread_cleanup_push(_fn,_arg) { __pthread_cleanup_handler __cleanup_handler = { _fn, _arg, NULL }; _pthread_cleanup_push( &__cleanup_handler );
9344#define pthread_cleanup_pop(_execute) _pthread_cleanup_pop( _execute ); }
9369 void *(*)(
void *),
void *);
9445#pragma GCC visibility push(default)
9453#pragma GCC visibility pop
9455#define RUBY_THREAD_PTHREAD_H
9456#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
9457#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
9494#define _SAVEMASK _JBLEN
9495#define _SIGMASK (_JBLEN+1)
9496#define _CYGWIN_WORKING_SIGSETJMP
9497#define __SIGMASK_FUNC pthread_sigmask
9500#define sigsetjmp(env,savemask) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((*_sjbuf)[_SAVEMASK] = savemask, __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)), setjmp (*_sjbuf)); })
9501#define siglongjmp(env,val) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((((*_sjbuf)[_SAVEMASK]) ? __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0) : 0), longjmp (*_sjbuf, val)); })
9509#define RUBY_NSIG NSIG
9510#define RUBY_SIGCHLD (SIGCLD)
9511#define SIGCHLD_LOSSY (0)
9512#define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
9513#define va_init_list(a,b) va_start((a),(b))
9514#define USE_SIGALTSTACK
9516#define RB_ALTSTACK_INIT(var) var = rb_register_sigaltstack()
9517#define RB_ALTSTACK_FREE(var) xfree(var)
9518#define RB_ALTSTACK(var) var
9534#define TAG_NONE RUBY_TAG_NONE
9535#define TAG_RETURN RUBY_TAG_RETURN
9536#define TAG_BREAK RUBY_TAG_BREAK
9537#define TAG_NEXT RUBY_TAG_NEXT
9538#define TAG_RETRY RUBY_TAG_RETRY
9539#define TAG_REDO RUBY_TAG_REDO
9540#define TAG_RAISE RUBY_TAG_RAISE
9541#define TAG_THROW RUBY_TAG_THROW
9542#define TAG_FATAL RUBY_TAG_FATAL
9543#define TAG_MASK RUBY_TAG_MASK
9588#define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
9589#define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
9598#define PATHOBJ_PATH 0
9599#define PATHOBJ_REALPATH 1
9601pathobj_path(
VALUE pathobj)
9608 return (rb_array_const_ptr_transient(pathobj)[0]);
9612pathobj_realpath(
VALUE pathobj)
9619 return (rb_array_const_ptr_transient(pathobj)[1]);
9658 const struct rb_iseq_param_keyword {
9714#define USE_LAZY_LOAD 0
9765#define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
9842#define RUBY_VM_SIZE_ALIGN 4096
9843#define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9844#define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9845#define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9846#define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9847#define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
9848#define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9849#define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
9850#define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9851#define INTEGER_REDEFINED_OP_FLAG (1 << 0)
9852#define FLOAT_REDEFINED_OP_FLAG (1 << 1)
9853#define STRING_REDEFINED_OP_FLAG (1 << 2)
9854#define ARRAY_REDEFINED_OP_FLAG (1 << 3)
9855#define HASH_REDEFINED_OP_FLAG (1 << 4)
9856#define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
9857#define TIME_REDEFINED_OP_FLAG (1 << 7)
9858#define REGEXP_REDEFINED_OP_FLAG (1 << 8)
9859#define NIL_REDEFINED_OP_FLAG (1 << 9)
9860#define TRUE_REDEFINED_OP_FLAG (1 << 10)
9861#define FALSE_REDEFINED_OP_FLAG (1 << 11)
9862#define PROC_REDEFINED_OP_FLAG (1 << 12)
9863#define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
9864#define VM_DEBUG_BP_CHECK 0
9865#define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
9906rb_thread_ptr(
VALUE thval)
9978#define VM_CORE_H_EC_DEFINED 1
10022 thread_invoke_type_none = 0,
10024 thread_invoke_type_func
10037#define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
10038#define VM_DEFINECLASS_FLAG_SCOPED 0x08
10039#define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
10040#define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
10041#define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
10043#pragma GCC visibility push(default)
10058rb_iseq_new_with_callback_new_callback(
10075#pragma GCC visibility pop
10077#define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
10091#define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
10102#define VM_CHECKMATCH_TYPE_MASK 0x03
10103#define VM_CHECKMATCH_ARRAY 0x04
10119#define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
10120#define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
10121#define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
10122#define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
10123#define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
10124#define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
10125#define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
10126#define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
10127#define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
10128#define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
10129#define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
10130#define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
10151#define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
10152#define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
10153#define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
10154#define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
10155#define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
10179#define VM_ENV_DATA_SIZE ( 3)
10180#define VM_ENV_DATA_INDEX_ME_CREF (-2)
10181#define VM_ENV_DATA_INDEX_SPECVAL (-1)
10182#define VM_ENV_DATA_INDEX_FLAGS ( 0)
10183#define VM_ENV_DATA_INDEX_ENV ( 1)
10184#define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
10185static inline void VM_FORCE_WRITE_SPECIAL_CONST(
const VALUE *
ptr,
VALUE special_const_value);
10187VM_ENV_FLAGS_SET(
const VALUE *ep,
VALUE flag)
10189 VALUE flags = ep[( 0)];
10191 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
10194VM_ENV_FLAGS_UNSET(
const VALUE *ep,
VALUE flag)
10196 VALUE flags = ep[( 0)];
10198 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
10200static inline unsigned long
10201VM_ENV_FLAGS(
const VALUE *ep,
long flag)
10203 VALUE flags = ep[( 0)];
10205 return flags & flag;
10207static inline unsigned long
10252 return !VM_FRAME_CFRAME_P(
cfp);
10254#define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
10255#define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
10256#define VM_BLOCK_HANDLER_NONE 0
10258VM_ENV_LOCAL_P(
const VALUE *ep)
10262static inline const VALUE *
10263VM_ENV_PREV_EP(
const VALUE *ep)
10266 return ((
void *)(((ep[(-1)])) & ~0x03));
10269VM_ENV_BLOCK_HANDLER(
const VALUE *ep)
10275VM_ENV_ESCAPED_P(
const VALUE *ep)
10281VM_ENV_ENVVAL(
const VALUE *ep)
10283 VALUE envval = ep[( 1)];
10289VM_ENV_ENVVAL_PTR(
const VALUE *ep)
10291 return (
const rb_env_t *)VM_ENV_ENVVAL(ep);
10297 env->env_size = env_size;
10307VM_FORCE_WRITE_SPECIAL_CONST(
const VALUE *
ptr,
VALUE special_const_value)
10310 VM_FORCE_WRITE(
ptr, special_const_value);
10316 VM_FORCE_WRITE(&ep[
index],
v);
10323#define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
10324#define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
10325#define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
10334 return !((
void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (
void *)(
cfp));
10419vm_block_type(
const struct rb_block *block)
10421 return block->
type;
10429static inline const struct rb_block *
10430vm_proc_block(
VALUE procval)
10436static inline const VALUE *vm_block_ep(
const struct rb_block *block);
10438vm_proc_iseq(
VALUE procval)
10440 return vm_block_iseq(vm_proc_block(procval));
10442static inline const VALUE *
10443vm_proc_ep(
VALUE procval)
10445 return vm_block_ep(vm_proc_block(procval));
10448vm_block_iseq(
const struct rb_block *block)
10450 switch (vm_block_type(block)) {
10456 __builtin_unreachable();
10457 return ((
void *)0);
10459static inline const VALUE *
10460vm_block_ep(
const struct rb_block *block)
10462 switch (vm_block_type(block)) {
10468 __builtin_unreachable();
10469 return ((
void *)0);
10472vm_block_self(
const struct rb_block *block)
10474 switch (vm_block_type(block)) {
10479 return vm_block_self(vm_proc_block(block->
as.
proc));
10483 __builtin_unreachable();
10505VM_BH_FROM_PROC(
VALUE procval)
10518#define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
10519#define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
10524#pragma GCC visibility push(default)
10531#pragma GCC visibility pop
10563rb_vm_living_threads_init(
rb_vm_t *vm)
10581 list_del_(&th->
vmlt_node,
"../ruby-2.7.6/vm_core.h" ":" "1710");
10594#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)))
10598#define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
10599#define RUBY_CONST_ASSERT(expr) (1/!!(expr))
10600#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))
10601#define WHEN_VM_STACK_OVERFLOWED(cfp,sp,margin) if (LIKELY(!VM_STACK_OVERFLOWED_P(cfp, sp, margin))) {(void)0;} else
10602#define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, sp, margin) vm_stackoverflow()
10603#define CHECK_VM_STACK_OVERFLOW(cfp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, (cfp)->sp, margin) vm_stackoverflow()
10606#pragma GCC visibility push(default)
10614#pragma GCC visibility pop
10616#define GET_VM() rb_current_vm()
10617#define GET_THREAD() rb_current_thread()
10618#define GET_EC() rb_current_execution_context()
10632 return ((
void *)0);
10636rb_current_execution_context(
void)
10641rb_current_thread(
void)
10644 return rb_ec_thread_ptr(ec);
10663 rb_thread_set_current_raw(th);
10672#define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
10673#define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
10674#define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
10675#define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
10676#define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
10677#define RUBY_VM_INTERRUPTED_ANY(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask)
10695#define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
10722#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)
10746#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)
10747#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)
10751 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);
10755#pragma GCC visibility push(default)
10758#define RUBY_EVENT_COVERAGE_LINE 0x010000
10759#define RUBY_EVENT_COVERAGE_BRANCH 0x020000
10766#pragma GCC visibility pop
10768#define RUBY_DEBUG_H
10770#pragma GCC visibility push(default)
10772#define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
10773#define dp(v) ruby_debug_print_value(-1, 0, "", (v))
10774#define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
10775#define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
10783#pragma GCC visibility pop
10785#define RUBY_ISEQ_H 1
10787#define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
10788#define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
10790static inline size_t
10791rb_call_info_kw_arg_bytes(
int keyword_len)
10797#define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
10798#define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
10799#define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
10800#define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
10801#define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
10802#define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
10803#define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
10811static inline VALUE *
10825static inline VALUE *
10831#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)
10832#define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
10833#define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
10834#define ISEQ_TRANSLATED IMEMO_FL_USER3
10835#define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
10836#define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW((iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
10870 return ((
void *)0);
10886iseq_imemo_alloc(
void)
10901#pragma GCC visibility push(default)
10962iseq_catch_table_bytes(
int n)
10966 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (
struct iseq_catch_table,
entries)) / catch_table_entry_size
10968 if (
n > catch_table_entries_max)
rb_fatal(
"too large iseq_catch_table - %d",
n);
10970 n * catch_table_entry_size);
10972#define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
11003#pragma GCC visibility pop
11005#define RUBY_EVAL_INTERN_H
11019#define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
11020#define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
11021#define ruby_setjmp(env) RUBY_SETJMP(env)
11022#define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
11027#define __error_t_defined 1
11028#define _SYS_ERRNO_H_
11029#define errno (*__errno())
11031extern __attribute__((dllimport))
const char *
const _sys_errlist[];
11035extern __attribute__((dllimport))
char *program_invocation_name;
11036extern __attribute__((dllimport))
char *program_invocation_short_name;
11037#define __errno_r(ptr) ((ptr)->_errno)
11090#define EDEADLOCK 56
11104#define EMULTIHOP 74
11119#define ENOTEMPTY 90
11120#define ENAMETOOLONG 91
11122#define EOPNOTSUPP 95
11123#define EPFNOSUPPORT 96
11124#define ECONNRESET 104
11126#define EAFNOSUPPORT 106
11127#define EPROTOTYPE 107
11128#define ENOTSOCK 108
11129#define ENOPROTOOPT 109
11130#define ESHUTDOWN 110
11131#define ECONNREFUSED 111
11132#define EADDRINUSE 112
11133#define ECONNABORTED 113
11134#define ENETUNREACH 114
11135#define ENETDOWN 115
11136#define ETIMEDOUT 116
11137#define EHOSTDOWN 117
11138#define EHOSTUNREACH 118
11139#define EINPROGRESS 119
11140#define EALREADY 120
11141#define EDESTADDRREQ 121
11142#define EMSGSIZE 122
11143#define EPROTONOSUPPORT 123
11144#define ESOCKTNOSUPPORT 124
11145#define EADDRNOTAVAIL 125
11146#define ENETRESET 126
11148#define ENOTCONN 128
11149#define ETOOMANYREFS 129
11150#define EPROCLIM 130
11155#define ENOMEDIUM 135
11156#define ENOSHARE 136
11157#define ECASECLASH 137
11159#define EOVERFLOW 139
11160#define ECANCELED 140
11161#define ENOTRECOVERABLE 141
11162#define EOWNERDEAD 142
11163#define ESTRPIPE 143
11164#define EWOULDBLOCK EAGAIN
11165#define __ELASTERROR 2000
11166#define _SYS_PARAM_H
11168#undef __need_ptrdiff_t
11169#undef __need_size_t
11170#undef __need_wchar_t
11172#define NULL ((void *)0)
11174#define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
11176#define NGROUPS NGROUPS_MAX
11178#define MAXHOSTNAMELEN 128
11179#define MAXPATHLEN PATH_MAX
11180#define MAXSYMLINKS SYMLOOP_MAX
11181#define DEV_BSIZE 1024
11183#define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
11184#define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
11185#define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
11186#define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
11187#define howmany(x,y) (((x)+((y)-1))/(y))
11188#define rounddown(x,y) (((x)/(y))*(y))
11189#define roundup(x,y) ((((x)+((y)-1))/(y))*(y))
11190#define roundup2(x,y) (((x)+((y)-1))&(~((y)-1)))
11191#define powerof2(x) ((((x)-1)&(x))==0)
11192#define MIN(a,b) (((a)<(b))?(a):(b))
11193#define MAX(a,b) (((a)>(b))?(a):(b))
11194#define SAVE_ROOT_JMPBUF_BEFORE_STMT
11195#define SAVE_ROOT_JMPBUF_AFTER_STMT
11196#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)
11197#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;
11198#define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
11199#define EC_TMPPOP_TAG() _ec->tag = _tag.prev
11200#define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
11201#define VAR_FROM_MEMORY(var) (var)
11202#define VAR_INITIALIZED(var) ((void)&(var))
11203#define VAR_NOCLOBBERED(var) var
11216 __builtin_longjmp(((ec->
tag->
buf)),(1));
11218#define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
11219#define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
11220#define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
11221#define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
11222#define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
11226 return cref->
klass;
11247#pragma GCC diagnostic push
11249#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11250 ; typeof(rb_obj_write((
VALUE)(cref), (
VALUE *)(&cref->
refinements), (
VALUE)(refs),
"../ruby-2.7.6/eval_intern.h", 220)) unaligned_member_access_result = (rb_obj_write((
VALUE)(cref), (
VALUE *)(&cref->refinements), (
VALUE)(refs), "../
ruby-2.7.6/eval_intern.
h", 220));
11251#pragma GCC diagnostic pop
11252 ; unaligned_member_access_result; });
11255CREF_PUSHED_BY_EVAL(
const rb_cref_t *cref)
11257 return cref->
flags & ((
VALUE)RUBY_FL_USER5);
11260CREF_PUSHED_BY_EVAL_SET(
rb_cref_t *cref)
11267 return cref->
flags & ((
VALUE)RUBY_FL_USER6);
11284#define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
11285#define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
11286#define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
11287#define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
11310#define CharNext(p) rb_char_next(p)
11311static inline const char *
11312rb_char_next(
const char *p)
11321translit_char(
char *p,
int from,
int to)
11324 if ((
unsigned char)*p == from)
11326 p = rb_char_next(p);
11329#define BUILTIN_H_INCLUDED
11336#define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i }
11347static 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)){}
11348static 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)){}
11349static 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)){}
11350static 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)){}
11351static 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)){}
11352static 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)){}
11353static 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)){}
11367#define DTRACE_PROBES_DISABLED 1
11368#define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
11369#define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11370#define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
11371#define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11372#define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
11373#define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11374#define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
11375#define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11376#define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
11377#define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
11378#define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
11379#define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11380#define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
11381#define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
11382#define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
11383#define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11384#define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
11385#define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
11386#define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
11387#define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
11388#define RUBY_DTRACE_RAISE_ENABLED() 0
11389#define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
11390#define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
11391#define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
11392#define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
11393#define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
11394#define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
11395#define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
11396#define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
11397#define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
11398#define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
11399#define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
11400#define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
11401#define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
11402#define RUBY_DTRACE_PARSE_END_ENABLED() 0
11403#define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
11404#define RUBY_DTRACE_INSN_ENABLED() 0
11405#define RUBY_DTRACE_INSN(insns_name) do {} while (0)
11406#define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
11407#define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
11408#define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
11409#define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
11410#define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
11411#define RUBY_DTRACE_GC_MARK_END() do {} while (0)
11412#define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
11413#define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
11414#define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
11415#define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
11416#define RUBY_DTRACE_METHOD_CACHE_CLEAR_ENABLED() 0
11417#define RUBY_DTRACE_METHOD_CACHE_CLEAR(class,filename,lineno) do {} while (0)
11418#define RUBY_PROBES_HELPER_H
11428#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)
11429#define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
11430#define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
11431#define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
11432#define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
11440 while (!VM_ENV_LOCAL_P(ep)) {
11441 ep = VM_ENV_PREV_EP(ep);
11449 return ((
void *)0);
11453 while (
cfp < eocfp) {
11454 if (
cfp->
ep == ep) {
11459 return ((
void *)0);
11465 return VM_EP_LEP(ep);
11468static inline const VALUE *
11471 return VM_EP_LEP(
cfp->
ep);
11473static inline const VALUE *
11476 return VM_ENV_PREV_EP(
cfp->
ep);
11483 return VM_ENV_BLOCK_HANDLER(ep);
11488 return VM_FRAME_CFRAME_KW_P(
cfp);
11493 return VM_FRAME_CFRAME_EMPTY_KW_P(
cfp);
11498 return VM_CF_BLOCK_HANDLER(
cfp);
11532 int omod_shared = 0;
11539 scope_visi.visi.module_func = module_func;
11540 if (prev_cref != ((
void *)0) && prev_cref != (
void *)1 ) {
11541 refinements = CREF_REFINEMENTS(prev_cref);
11544 CREF_OMOD_SHARED_SET(prev_cref);
11548 if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
11549 if (omod_shared) CREF_OMOD_SHARED_SET(cref);
11555 return vm_cref_new0(
klass, visi, module_func, prev_cref, pushed_by_eval, 0);
11560 return vm_cref_new0(
klass, visi, module_func, prev_cref, pushed_by_eval, 1);
11572 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
11573 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
11578 CREF_REFINEMENTS_SET(new_cref, ref);
11579 CREF_OMOD_SHARED_UNSET(new_cref);
11596 return vm_cref_new_toplevel(rb_current_execution_context());
11599vm_cref_dump(
const char *mesg,
const rb_cref_t *cref)
11601 fprintf(((
__getreent())->_stderr),
"vm_cref_dump: %s (%p)\n", mesg, (
void *)cref);
11604 cref = CREF_NEXT(cref);
11618#pragma GCC diagnostic push
11620#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11622#pragma GCC diagnostic pop
11623 ; unaligned_member_access_result; });
11631#define RUBY_MJIT_H 1
11632#define USE_DEBUG_COUNTER 0
11633#define RUBY_DEBUG_COUNTER_H 1
11635#define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
11812#undef RB_DEBUG_COUNTER
11814#define RB_DEBUG_COUNTER_INC(type) ((void)0)
11815#define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (cond)
11816#define RB_DEBUG_COUNTER_INC_IF(type,cond) (cond)
11819#pragma GCC visibility push(default)
11825#pragma GCC visibility pop
11851#pragma GCC visibility push(default)
11860#pragma GCC visibility pop
11873#define JIT_ISEQ_SIZE_THRESHOLD 1000
11877 return (body->
type == ISEQ_TYPE_METHOD || body->
type == ISEQ_TYPE_BLOCK)
11919 return func(ec, ec->
cfp);
11922#define RUBY_INSNHELPER_H
11924#pragma GCC visibility push(default)
11931#pragma GCC visibility pop
11933#define COLLECT_USAGE_INSN(insn)
11934#define COLLECT_USAGE_OPERAND(insn,n,op)
11935#define COLLECT_USAGE_REGISTER(reg,s)
11936#define PUSH(x) (SET_SV(x), INC_SP(1))
11937#define TOPN(n) (*(GET_SP()-(n)-1))
11938#define POPN(n) (DEC_SP(n))
11939#define POP() (DEC_SP(1))
11940#define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
11941#define VM_REG_CFP (reg_cfp)
11942#define VM_REG_PC (VM_REG_CFP->pc)
11943#define VM_REG_SP (VM_REG_CFP->sp)
11944#define VM_REG_EP (VM_REG_CFP->ep)
11945#define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
11946#define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
11947#define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
11948#define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
11949#define GET_CURRENT_INSN() (*GET_PC())
11950#define GET_OPERAND(n) (GET_PC()[(n)])
11951#define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
11952#define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
11953#define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
11954#define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
11955#define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
11956#define GET_LEP() (VM_EP_LEP(GET_EP()))
11957#define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
11958#define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11959#define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11960#define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11961#define SET_SV(x) (*GET_SP() = (x))
11962#define GET_ISEQ() (GET_CFP()->iseq)
11963#define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
11964#define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
11978#define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
11979#define SETUP_CANARY()
11980#define CHECK_CANARY()
11981#define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
11982#define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
11983#define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
11984#define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
11985#define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
11986#define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
11991 obj->throw_state =
st;
11998 return obj->throw_obj;
12004 return obj->catch_frame;
12010 return obj->throw_state;
12016 return obj->flags & ((
VALUE)RUBY_FL_USER4);
12028 obj->throw_state =
st;
12035 obj->flags |= ((
VALUE)RUBY_FL_USER4);
12038#define IS_ARGS_SPLAT(ci) ((ci)->flag & VM_CALL_ARGS_SPLAT)
12039#define IS_ARGS_KEYWORD(ci) ((ci)->flag & VM_CALL_KWARG)
12040#define IS_ARGS_KW_SPLAT(ci) ((ci)->flag & VM_CALL_KW_SPLAT)
12041#define IS_ARGS_KW_OR_KW_SPLAT(ci) ((ci)->flag & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
12048#define RUBY_VM_EXEC_H
12054#define DEBUG_ENTER_INSN(insn)
12055#define DEBUG_END_INSN()
12056#define throwdebug if(0)printf
12057#define LABEL(x) INSN_LABEL_ ##x
12058#define ELABEL(x) INSN_ELABEL_ ##x
12059#define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
12060#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));
12061#define INSN_DISPATCH_SIG(insn)
12062#define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
12063#define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
12064#define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
12065#define INSN_DISPATCH() TC_DISPATCH(__START__) {
12066#define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
12067#define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
12068#define START_OF_ORIGINAL_INSN(x) start_of_ ##x:
12069#define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
12070#define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
12071#define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
12072#define SCREG(r) (reg_ ##r)
12073#define VM_DEBUG_STACKOVERFLOW 0
12074#define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
12075#define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
12076#define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
12077#define BIN(n) YARVINSN_ ##n
12287#define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
12296#define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
12297#define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
12298#define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
12328ruby_vm_special_exception_copy(
VALUE exc)
12342 mesg = ruby_vm_special_exception_copy(mesg);
12349__attribute__ ((__noreturn__))
static void vm_stackoverflow(
void);
12351vm_stackoverflow(
void)
12353 ec_stack_overflow(rb_current_execution_context(), 1);
12364 ec_stack_overflow(ec, 1);
12366#define vm_check_canary(ec,sp)
12367#define vm_check_frame(a,b,c,d)
12396 *sp++ = cref_or_me;
12409 VALUE flags = ep[( 0)];
12412 rb_vm_check_ints(ec);
12419 vm_pop_frame(ec, ec->
cfp, ec->
cfp->
ep);
12422rb_arity_error_new(
int argc,
int min,
int max)
12424 VALUE err_mess = 0;
12426 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d)",
argc, min);
12428 else if (max == (-1)) {
12429 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d+)",
argc, min);
12432 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d..%d)",
argc, min, max);
12446 VM_FORCE_WRITE(&ep[
index],
v);
12453 VALUE flags = ep[( 0)];
12455 VM_STACK_ENV_WRITE(ep,
index,
v);
12458 vm_env_write_slowpath(ep,
index,
v);
12477 __builtin_unreachable();
12481static inline struct vm_svar *
12485 if (lep && (ec == ((
void *)0) || ec->
root_lep != lep)) {
12492 return (
struct vm_svar *)svar;
12498 if (lep && (ec == ((
void *)0) || ec->
root_lep != lep)) {
12499 vm_env_write(lep, (-2), (
VALUE)svar);
12503#pragma GCC diagnostic push
12505#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12506; typeof(rb_obj_write((
VALUE)(rb_ec_thread_ptr(ec)->
self), (
VALUE *)(&ec->
root_svar), (
VALUE)(svar),
"../ruby-2.7.6/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.6/vm_insnhelper.c", 486));
12507#pragma GCC diagnostic pop
12508; unaligned_member_access_result; });
12514 const struct vm_svar *svar = lep_svar(ec, lep);
12518 return svar->lastline;
12520 return svar->backref;
12522 const VALUE ary = svar->others;
12540 struct vm_svar *svar = lep_svar(ec, lep);
12542 lep_svar_write(ec, lep, svar = svar_new((
VALUE)svar));
12547#pragma GCC diagnostic push
12549#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12550; typeof(rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->lastline), (
VALUE)(val),
"../ruby-2.7.6/vm_insnhelper.c", 532)) unaligned_member_access_result = (rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->
lastline), (
VALUE)(val), "../
ruby-2.7.6/vm_insnhelper.c", 532));
12551#pragma GCC diagnostic pop
12552; unaligned_member_access_result; });
12556#pragma GCC diagnostic push
12558#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12559; typeof(rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->backref), (
VALUE)(val),
"../ruby-2.7.6/vm_insnhelper.c", 535)) unaligned_member_access_result = (rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->
backref), (
VALUE)(val), "../
ruby-2.7.6/vm_insnhelper.c", 535));
12560#pragma GCC diagnostic pop
12561; unaligned_member_access_result; });
12564 VALUE ary = svar->others;
12567#pragma GCC diagnostic push
12569#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12571#pragma GCC diagnostic pop
12572 ; unaligned_member_access_result; });
12583 val = lep_svar_get(ec, lep,
key);
12588 switch (
type >> 1) {
12602 rb_bug(
"unexpected back-ref");
12620 return ((
void *)0);
12626 return ((
void *)0);
12634 while (!VM_ENV_LOCAL_P(ep)) {
12635 if ((
me = check_method_entry(ep[(-2)], 0)) != ((
void *)0))
return me;
12636 ep = VM_ENV_PREV_EP(ep);
12638 return check_method_entry(ep[(-2)], 1);
12647 return ((
void *)0);
12665 return ((
void *)0);
12669vm_env_cref(
const VALUE *ep)
12672 while (!VM_ENV_LOCAL_P(ep)) {
12673 if ((cref = check_cref(ep[(-2)], 0)) != ((
void *)0))
return cref;
12674 ep = VM_ENV_PREV_EP(ep);
12676 return check_cref(ep[(-2)], 1);
12694vm_env_cref_by_cref(
const VALUE *ep)
12696 while (!VM_ENV_LOCAL_P(ep)) {
12697 if (is_cref(ep[(-2)], 0))
return 1;
12698 ep = VM_ENV_PREV_EP(ep);
12700 return is_cref(ep[(-2)], 1);
12711 new_cref = vm_cref_dup(cref);
12714#pragma GCC diagnostic push
12716#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12717 ; typeof(rb_obj_write((
VALUE)(parent), (
VALUE *)(vptr), (
VALUE)(new_cref),
"../ruby-2.7.6/vm_insnhelper.c", 716)) unaligned_member_access_result = (rb_obj_write((
VALUE)(parent), (
VALUE *)(vptr), (
VALUE)(new_cref), "../
ruby-2.7.6/vm_insnhelper.c", 716));
12718#pragma GCC diagnostic pop
12719 ; unaligned_member_access_result; });
12722 VM_FORCE_WRITE(vptr, (
VALUE)new_cref);
12730 rb_bug(
"cref_replace_with_duplicated_cref_each_frame: unreachable");
12738vm_cref_replace_with_duplicated_cref(
const VALUE *ep)
12740 if (vm_env_cref_by_cref(ep)) {
12743 while (!VM_ENV_LOCAL_P(ep)) {
12745 if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((
void *)0)) {
12748 ep = VM_ENV_PREV_EP(ep);
12751 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
12754 rb_bug(
"vm_cref_dup: unreachable");
12758vm_get_cref(
const VALUE *ep)
12761 if (cref != ((
void *)0)) {
12765 rb_bug(
"vm_get_cref: unreachable");
12772 if (
cfp == ((
void *)0)) {
12773 return ((
void *)0);
12775 return vm_get_cref(
cfp->
ep);
12778vm_get_const_key_cref(
const VALUE *ep)
12780 const rb_cref_t *cref = vm_get_cref(ep);
12787 cref = CREF_NEXT(cref);
12789 return ((
void *)0);
12796 if (CREF_CLASS(cref) == old_klass) {
12798 *new_cref_ptr = new_cref;
12801 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref),
METHOD_VISI_UNDEF, 0, cref, 0);
12802 cref = CREF_NEXT(cref);
12803 *new_cref_ptr = new_cref;
12806 *new_cref_ptr = ((
void *)0);
12813 prev_cref = vm_env_cref(ep);
12818 prev_cref = vm_env_cref(
cfp->
ep);
12824vm_get_cbase(
const VALUE *ep)
12826 const rb_cref_t *cref = vm_get_cref(ep);
12829 if ((
klass = CREF_CLASS(cref)) != 0) {
12832 cref = CREF_NEXT(cref);
12837vm_get_const_base(
const VALUE *ep)
12839 const rb_cref_t *cref = vm_get_cref(ep);
12842 if (!CREF_PUSHED_BY_EVAL(cref) &&
12843 (
klass = CREF_CLASS(cref)) != 0) {
12846 cref = CREF_NEXT(cref);
12858vm_ensure_not_refinement_module(
VALUE self)
12861 rb_warn(
"not defined at the refinement, but at the outer class/module");
12878 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
12879 root_cref = CREF_NEXT(root_cref);
12882 while (cref && CREF_NEXT(cref)) {
12883 if (CREF_PUSHED_BY_EVAL(cref)) {
12887 klass = CREF_CLASS(cref);
12889 cref = CREF_NEXT(cref);
12898 if (am ==
klass)
break;
12900 if (is_defined)
return 1;
12903 goto search_continue;
12917 klass = vm_get_iclass(ec->
cfp, CREF_CLASS(root_cref));
12930 vm_check_if_namespace(orig_klass);
12944 rb_bug(
"vm_get_cvar_base: no cref");
12946 while (CREF_NEXT(cref) &&
12948 CREF_PUSHED_BY_EVAL(cref))) {
12949 cref = CREF_NEXT(cref);
12951 if (!CREF_NEXT(cref)) {
12952 rb_warn(
"class variable access from toplevel");
12954 klass = vm_get_iclass(
cfp, CREF_CLASS(cref));
12961vm_search_const_defined_class(
const VALUE cbase,
ID id)
13015 if (
index < numiv) {
13016 val = ivptr[
index];
13065#pragma GCC diagnostic push
13067#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13069#pragma GCC diagnostic pop
13070 ; unaligned_member_access_result; });
13082 else if (
index >= 0x7fffffff) {
13100 return vm_getivar(
obj,
id, ic, ((
void *)0), 0);
13105 vm_setivar(
obj,
id, val, ic, 0, 0);
13126 const int flag,
const VALUE throwobj)
13137 while (base_iseq->
body->
type != ISEQ_TYPE_BLOCK) {
13138 if (escape_cfp->
iseq->
body->
type == ISEQ_TYPE_CLASS) {
13139 escape_cfp = ((escape_cfp)+1);
13140 ep = escape_cfp->
ep;
13141 base_iseq = escape_cfp->
iseq;
13144 ep = VM_ENV_PREV_EP(ep);
13146 escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
13150 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13155 ep = VM_ENV_PREV_EP(ep);
13156 while (escape_cfp < eocfp) {
13157 if (escape_cfp->
ep == ep) {
13163 for (
i=0;
i < ct->
size;
i++) {
13166#pragma GCC diagnostic push
13168#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13169 ; typeof(&(ct)->
entries[
i]) unaligned_member_access_result = (&(ct)->
entries[
i]);
13170#pragma GCC diagnostic pop
13171 ; unaligned_member_access_result; });
13173 entry->
iseq == base_iseq &&
13174 entry->
start < epc && entry->
end >= epc) {
13175 if (entry->
cont == epc) {
13183 escape_cfp = ((escape_cfp)+1);
13191 const VALUE *ep = VM_ENV_PREV_EP(((((
reg_cfp)->ep))));
13192 escape_cfp = rb_vm_search_cf_from_ep(ec,
reg_cfp, ep);
13196 const VALUE *target_lep = VM_EP_LEP(current_ep);
13197 int in_class_frame = 0;
13200 while (escape_cfp < eocfp) {
13201 const VALUE *lep = VM_CF_LEP(escape_cfp);
13205 if (lep == target_lep &&
13206 VM_FRAME_RUBYFRAME_P(escape_cfp) &&
13208 in_class_frame = 1;
13211 if (lep == target_lep) {
13212 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13214 if (in_class_frame) {
13218 const VALUE *tep = current_ep;
13219 while (target_lep != tep) {
13220 if (escape_cfp->
ep == tep) {
13223 tep = VM_ENV_PREV_EP(tep);
13227 else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
13229 case ISEQ_TYPE_TOP:
13230 case ISEQ_TYPE_MAIN:
13232 if (in_class_frame)
goto unexpected_return;
13236 case ISEQ_TYPE_EVAL:
13237 case ISEQ_TYPE_CLASS:
13245 if (escape_cfp->
ep == target_lep && escape_cfp->
iseq->
body->
type == ISEQ_TYPE_METHOD) {
13248 escape_cfp = ((escape_cfp)+1);
13250 unexpected_return:;
13255 rb_bug(
"isns(throw): unsupported throw type");
13258 return (
VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
13267 return vm_throw_start(ec,
reg_cfp, state, flag, throwobj);
13270 return vm_throw_continue(ec, throwobj);
13276 int is_splat = flag & 0x01;
13277 rb_num_t space_size = num + is_splat;
13288 ptr = rb_array_const_ptr_transient(ary);
13291 if (space_size == 0) {
13293 else if (flag & 0x02) {
13296 for (
i=0;
i<num-
len;
i++) {
13300 for (j=0;
i<num;
i++, j++) {
13310 VALUE *bptr = &base[space_size - 1];
13311 for (
i=0;
i<num;
i++) {
13313 for (;
i<num;
i++) {
13329 (*__extension__ ({
volatile VALUE *rb_gc_guarded_ptr = &(ary);
__asm__(
"" : :
"m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
13340 return vm_call_general;
13344 return vm_call_general;
13348 return vm_call_general;
13353 return vm_call_general;
13407 for (;
i > 0;
i--) {
13432 vm_search_method_fastpath(cd,
klass);
13448 vm_search_method(cd, recv);
13449 return check_cfunc(cd->
cc.
me, func);
13454 if (vm_method_cfunc_is(cd, recv, rb_obj_equal)) {
13459#define BUILTIN_CLASS_P(x,k) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == k)
13460#define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
13466 long z = x & y & 1;
13474 long z = ((x ^ 2) | (y ^ 2)) & 3;
13480 if (FIXNUM_2_P(recv,
obj)) {
13481 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 0))) == 0), 1))) != 0) * 2 - 1;
13483 if (FLONUM_2_P(recv,
obj)) {
13484 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 1))) == 0), 1))) != 0) * 2 - 1;
13487 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
13496 switch (comparable_by_identity(recv,
obj)) {
13512 return rb_str_eql_internal(recv,
obj);
13516 return opt_equal_fallback(recv,
obj, cd);
13523 switch (comparable_by_identity(recv,
obj)) {
13542 return opt_equal_fallback(recv,
obj, cd);
13544#undef BUILTIN_CLASS_P
13545#undef EQ_UNREDEFINED_P
13550 return opt_eq_func(obj1,
obj2, &cd);
13556 return opt_eql_func(obj1,
obj2, &cd);
13576 return __extension__({
static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, pattern,
idEqq, 1, &target); });
13580 rb_bug(
"check_match: unreachable");
13583#define CHECK_CMP_NAN(a,b)
13585double_cmp_lt(
double a,
double b)
13591double_cmp_le(
double a,
double b)
13597double_cmp_gt(
double a,
double b)
13603double_cmp_ge(
double a,
double b)
13608static inline VALUE *
13649 return args->
argc + rb_long2int_inline(rb_array_len(args->
rest)) - args->
rest_index;
13657 arg_rest_dup(args);
13670args_reduce(
struct args_info *args,
int over_argc)
13673 const long len = rb_array_len(args->
rest);
13674 if (
len > over_argc) {
13675 arg_rest_dup(args);
13685 args->
argc -= over_argc;
13688args_check_block_arg0(
struct args_info *args)
13691 if (args->
rest && rb_array_len(args->
rest) == 1) {
13692 VALUE arg0 = (rb_array_const_ptr_transient(args->
rest)[0]);
13695 else if (args->
argc == 1) {
13698 args->
argv[0] = arg0;
13714 arg_rest_dup(args);
13717#pragma GCC diagnostic push
13719#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13720 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[--args->
rest_index]), (
VALUE)(_v),
"../ruby-2.7.6/vm_args.c", 154)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[--args->rest_index]), (
VALUE)(_v), "../
ruby-2.7.6/vm_args.c", 154));
13721#pragma GCC diagnostic pop
13722 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
13728 else if (args->
argc > 0) {
13735static inline const VALUE *
13738 return rb_array_const_ptr_transient(args->
rest) + args->
rest_index;
13754#define KW_HASH_HAS_NO_KEYS 0
13755#define KW_HASH_HAS_SYMBOL_KEY 1
13756#define KW_HASH_HAS_OTHER_KEY 2
13757#define KW_HASH_HAS_BOTH_KEYS 3
13762 if ((*(
int*)
arg & 3) == 3) {
13768keyword_hash_symbol_other(
VALUE hash)
13770 int symbol_other = 0;
13772 return symbol_other;
13784keyword_hash_split(
VALUE *kw_hash_ptr,
VALUE *rest_hash_ptr)
13790keyword_hash_p(
VALUE *kw_hash_ptr,
VALUE *rest_hash_ptr,
int check_only_symbol)
13794 if (check_only_symbol) {
13795 switch (keyword_hash_symbol_other(*rest_hash_ptr)) {
13804 keyword_hash_split(kw_hash_ptr, rest_hash_ptr);
13808 *kw_hash_ptr = *rest_hash_ptr;
13818args_pop_keyword_hash(
struct args_info *args,
VALUE *kw_hash_ptr,
int check_only_symbol)
13824 *kw_hash_ptr = args->
argv[args->
argc-1];
13825 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13827 args->
argv[args->
argc-1] = rest_hash;
13836 long len = rb_array_len(args->
rest);
13838 *kw_hash_ptr = (rb_array_const_ptr_transient(args->
rest)[
len - 1]);
13839 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13841 do {
const VALUE _ary = (args->
rest);
const VALUE _v = (rest_hash);
VALUE *
ptr = (
VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
13842#pragma GCC diagnostic push
13844#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13845 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v),
"../ruby-2.7.6/vm_args.c", 291)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v), "../
ruby-2.7.6/vm_args.c", 291));
13846#pragma GCC diagnostic pop
13847 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
13850 arg_rest_dup(args);
13863args_kw_argv_to_hash(
struct args_info *args)
13869 const int kw_start = args->
argc - kw_len;
13870 const VALUE *
const kw_argv = args->
argv + kw_start;
13872 args->
argc = kw_start + 1;
13873 for (
i=0;
i<kw_len;
i++) {
13880args_stored_kw_argv_to_hash(
struct args_info *args)
13885 const int passed_keyword_len = kw_arg->
keyword_len;
13887 for (
i=0;
i<passed_keyword_len;
i++) {
13892 arg_rest_dup(args);
13908 const VALUE *
argv = args_rest_argv(args);
13910 locals[
i] =
argv[j];
13920 len = rb_array_len(args->
rest);
13925args_setup_opt_parameters(
struct args_info *args,
int opt_max,
VALUE *locals)
13928 if (args->
argc >= opt_max) {
13929 args->
argc -= opt_max;
13930 args->
argv += opt_max;
13938 int len = rb_long2int_inline(rb_array_len(args->
rest));
13939 const VALUE *
argv = rb_array_const_ptr_transient(args->
rest);
13944 for (j=
i; j<opt_max; j++) {
13953 *locals = args_rest_array(args);
13956make_unknown_kw_hash(
const VALUE *passed_keywords,
int passed_keyword_len,
const VALUE *kw_argv)
13960 for (
i=0;
i<passed_keyword_len;
i++) {
13968make_rest_kw_hash(
const VALUE *passed_keywords,
int passed_keyword_len,
const VALUE *kw_argv)
13972 for (
i=0;
i<passed_keyword_len;
i++) {
13980args_setup_kw_parameters_lookup(
const ID key,
VALUE *
ptr,
const VALUE *
const passed_keywords,
VALUE *passed_values,
const int passed_keyword_len)
13984 for (
i=0;
i<passed_keyword_len;
i++) {
13985 if (keyname == passed_keywords[
i]) {
13986 *
ptr = passed_values[
i];
13993#define KW_SPECIFIED_BITS_MAX (32-1)
13996 VALUE *
const passed_values,
const int passed_keyword_len,
const VALUE *
const passed_keywords,
13997 VALUE *
const locals)
14004 int i, di, found = 0;
14005 int unspecified_bits = 0;
14007 for (
i=0;
i<req_key_num;
i++) {
14008 ID key = acceptable_keywords[
i];
14009 if (args_setup_kw_parameters_lookup(
key, &locals[
i], passed_keywords, passed_values, passed_keyword_len)) {
14017 if (missing) argument_kw_error(ec,
iseq,
"missing", missing);
14018 for (di=0;
i<key_num;
i++, di++) {
14019 if (args_setup_kw_parameters_lookup(acceptable_keywords[
i], &locals[
i], passed_keywords, passed_values, passed_keyword_len)) {
14026 unspecified_bits |= 0x01 << di;
14032 for (j=0; j<(32-1); j++) {
14033 if (unspecified_bits & (0x01 << j)) {
14042 locals[
i] = default_values[di];
14047 const int rest_hash_index = key_num + 1;
14048 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
14051 if (found != passed_keyword_len) {
14052 VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
14053 argument_kw_error(ec,
iseq,
"unknown",
keys);
14059 locals[key_num] = unspecified_bits_value;
14062args_setup_kw_rest_parameter(
VALUE keyword_hash,
VALUE *locals)
14081 int i =
arg->argc++;
14099static st_table *caller_to_callees = 0;
14104 if (!
iseq)
return 0;
14107 if (!
cfp)
return 0;
14109 if (!caller_to_callees) {
14117 if (val ==
callee)
return 1;
14136 if (rb_warn_check(ec,
iseq))
return;
14139 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
14145 rb_warn(
"Passing the keyword argument for `%""l""i" "\v""' as the last hash parameter is deprecated",
14149 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
14151 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])))),
14152 "The called method `%""l""i" "\v""' is defined here",
name);
14155 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])))),
14156 "The called method is defined here");
14163 if (rb_warn_check(ec,
iseq))
return;
14168 rb_warn(
"Splitting the last argument for `%""l""i" "\v""' into positional and keyword parameters is deprecated",
14172 rb_warn(
"Splitting the last argument into positional and keyword parameters is deprecated");
14174 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])))),
14175 "The called method `%""l""i" "\v""' is defined here",
name);
14178 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])))),
14179 "The called method is defined here");
14186 if (rb_warn_check(ec,
iseq))
return;
14191 rb_warn(
"Using the last argument for `%""l""i" "\v""' as keyword parameters is deprecated; maybe ** should be added to the call",
14195 rb_warn(
"Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call");
14197 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])))),
14198 "The called method `%""l""i" "\v""' is defined here",
name);
14201 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])))),
14202 "The called method is defined here");
14217 int opt_pc = 0, allow_autosplat = !kw_flag;
14222 int remove_empty_keyword_hash = 1;
14223 VALUE flag_keyword_hash = 0;
14228 ec->
cfp->
sp = &locals[
i];
14231 args->
argv = locals;
14238 args->
argc -= kw_len;
14239 given_argc -= kw_len;
14244 given_argc = args_kw_argv_to_hash(args);
14249 args->
kw_arg = ((
void *)0);
14253 remove_empty_keyword_hash = 0;
14256 VALUE rest_last = 0;
14258 args->
rest = locals[--args->
argc];
14260 len = rb_long2int_inline(rb_array_len(args->
rest));
14261 given_argc +=
len - 1;
14262 rest_last = (rb_array_const_ptr_transient(args->
rest)[
len - 1]);
14263 if (!kw_flag &&
len > 0) {
14269 remove_empty_keyword_hash = 0;
14277 if (
len > 0 && ignore_keyword_hash_p(rest_last,
iseq)) {
14279 if (remove_empty_keyword_hash) {
14280 arg_rest_dup(args);
14288 do {
const VALUE _ary = (args->
rest);
const VALUE _v = (rest_last);
VALUE *
ptr = (
VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
14289#pragma GCC diagnostic push
14291#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
14292 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v),
"../ruby-2.7.6/vm_args.c", 826)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v), "../
ruby-2.7.6/vm_args.c", 826));
14293#pragma GCC diagnostic pop
14294 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
14296 flag_keyword_hash = rest_last;
14303 else if (!remove_empty_keyword_hash && rest_last) {
14304 flag_keyword_hash = rest_last;
14311 if (ignore_keyword_hash_p(last_arg,
iseq)) {
14313 if (remove_empty_keyword_hash) {
14321 args->
argv[args->
argc-1] = last_arg;
14323 flag_keyword_hash = last_arg;
14330 else if (!remove_empty_keyword_hash) {
14331 flag_keyword_hash = args->
argv[args->
argc-1];
14346 if (given_argc == 1 &&
14351 args_check_block_arg0(args)) {
14352 given_argc = rb_long2int_inline(rb_array_len(args->
rest));
14358 args_stored_kw_argv_to_hash(args);
14359 given_argc = args_argc(args);
14376 (kw_splat && given_argc >
max_argc)) &&
14377 args->
kw_argv == ((
void *)0)) {
14383 if (args_pop_keyword_hash(args, &keyword_hash, check_only_symbol)) {
14386 else if (check_only_symbol) {
14395 else if (args_pop_keyword_hash(args, &keyword_hash, 1)) {
14403 else if (given_argc ==
min_argc && kw_flag) {
14409 args_reduce(args, given_argc -
max_argc);
14434 if (args->
kw_argv != ((
void *)0)) {
14442 arg.vals =
arg.keys + kw_len;
14446 args_setup_kw_parameters(ec,
iseq,
arg.vals, kw_len,
arg.keys, klocals);
14450 args_setup_kw_parameters(ec,
iseq, ((
void *)0), 0, ((
void *)0), klocals);
14466 ec->
cfp->
sp = orig_sp;
14478 ec->
cfp->
sp, 0, 0 );
14481 rb_vm_pop_frame(ec);
14496 const ID *keywords = kw->table;
14497 int req_key_num = kw->required_num;
14498 if (req_key_num > 0) {
14499 static const char required[] =
"; required keywords";
14502 rb_str_cat(mesg, required,
sizeof(required) - 1 - (req_key_num == 1));
14508 }
while (--req_key_num);
14512 raise_argument_error(ec,
iseq,
exc);
14528 const VALUE *
ptr = rb_array_const_ptr_transient(
ary);
14529 long len = rb_array_len(
ary),
i;
14531 for (
i = 0;
i <
len;
i++) {
14546 for (
i=0;
i<kw_len;
i++) {
14549 (sp-kw_len)[0] =
h;
14550 cfp->
sp -= kw_len - 1;
14555vm_to_proc(
VALUE proc)
14569 "wrong argument type %s (expected Proc)",
14585 const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
14586 const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
14603 ec = rb_current_execution_context();
14605 vm_passed_block_handler_set(ec, blockarg);
14650 return vm_to_proc(block_code);
14653 else if (blockiseq != ((
void *)0)) {
14656 return VM_BH_FROM_ISEQ_BLOCK(captured);
14660 return ((VM_EP_LEP(((((
reg_cfp)->
ep)))))[(-1)]);
14679 return vm_call_iseq_setup_tailcall(ec,
cfp,
calling, cd, 0);
14689 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14756#define USE_OPT_HIST 0
14765 const int opt =
calling->argc - lead_num;
14770 const int delta = opt_num - opt;
14782 const int opt =
calling->argc - lead_num;
14789 VALUE *
const passed_values,
const int passed_keyword_len,
const VALUE *
const passed_keywords,
14790 VALUE *
const locals);
14807 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14809 VALUE *
const ci_kws = (
VALUE*)__builtin_alloca_with_align((
sizeof(
VALUE)*(ci_kw_len)), _Alignof(
VALUE) * 8);
14811 args_setup_kw_parameters(ec,
iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14814 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14828 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14830 for (
i=0;
i<kw_param->num;
i++) {
14831 klocals[
i] = kw_param->default_values[
i];
14836 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14855 else if (rb_iseq_only_optparam_p(
iseq)) {
14862 const int opt =
argc - lead_num;
14863 if (opt < 0 || opt > opt_num) {
14864 argument_arity_error(ec,
iseq,
argc, lead_num, lead_num + opt_num);
14867 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_normal_opt_start,
14872 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_tailcall_opt_start,
14877 for (
int i=
argc;
i<lead_num + opt_num;
i++) {
14891 VALUE *
const ci_kws = (
VALUE*)__builtin_alloca_with_align((
sizeof(
VALUE)*(ci_kw_len)), _Alignof(
VALUE) * 8);
14893 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14894 args_setup_kw_parameters(ec,
iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14895 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_kwparm_kwarg,
14900 else if (
argc == lead_num) {
14901 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14902 args_setup_kw_parameters(ec,
iseq, ((
void *)0), 0, ((
void *)0), klocals);
14904 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_kwparm_nokwarg,
14962 VALUE *sp_orig, *sp;
14964 if (VM_BH_FROM_CFP_P(
calling->block_handler,
cfp)) {
14968 if (VM_BH_ISEQ_BLOCK_P(
calling->block_handler)) {
14969 calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
14972 calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
14977 sp_orig = sp =
cfp->
sp;
14981 *sp++ = src_argv[
i];
15011 return (*
f)(recv,
argv[0]);
15034 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15040 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15046 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15052 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15058 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15064 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15065 return (*
f)(recv,
argv[0],
argv[1],
argv[2],
argv[3],
argv[4],
argv[5],
argv[6],
argv[7],
argv[8],
argv[9]);
15070 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15071 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]);
15076 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15077 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]);
15082 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15083 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]);
15088 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15089 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]);
15094 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
15095 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]);
15108#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)))
15113 return __extension__({
15114#pragma GCC diagnostic push
15116#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
15117 ; typeof(&(
me->
def)->body.cfunc) unaligned_member_access_result = (&(
me->
def)->body.cfunc);
15118#pragma GCC diagnostic pop
15119 ; unaligned_member_access_result; });
15134 int orig_argc =
argc;
15143 vm_push_frame(ec, ((
void *)0), frame_type, recv,
15145 0, ec->
cfp->
sp, 0, 0);
15150 rb_vm_pop_frame(ec);
15159 int empty_kw_splat;
15162 empty_kw_splat =
calling->kw_splat;
15164 if (empty_kw_splat &&
calling->kw_splat) {
15165 empty_kw_splat = 0;
15167 return vm_call_cfunc_with_frame(ec,
reg_cfp,
calling, cd, empty_kw_splat);
15208 return vm_call_bmethod_body(ec,
calling, cd,
argv);
15240 cd.ci_kw.
ci = *orig_ci;
15263 (((
reg_cfp)->sp) -= (((1))));
15277 (((
reg_cfp)->sp) -= (((1))));
15286 return vm_invoke_block_opt_call(ec,
reg_cfp,
calling,
ci, VM_BH_FROM_PROC(procval));
15299 vm_search_method(cd,
calling->recv);
15327 (((
reg_cfp)->sp) += (((1))));
15341 return vm_call_method_nome(ec,
cfp,
calling, cd);
15345 CC_SET_ME(
cc, refined_method_callable_without_refinement(
cc->
me));
15347 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15366 if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec,
cfp)) {
15369 }
while (
cfp->
iseq != local_iseq);
15398#pragma GCC diagnostic push
15400#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
15402#pragma GCC diagnostic pop
15403 ; unaligned_member_access_result; });
15439 for (; cref; cref = CREF_NEXT(cref)) {
15440 const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref),
cc->
me->
owner);
15445 if (
cc->
call == vm_call_super_method) {
15454 CC_SET_ME(
cc, ref_me);
15461 CC_SET_ME(
cc, ((
void *)0));
15466 CC_SET_ME(
cc, refined_method_callable_without_refinement(
cc->
me));
15481 CC_SET_FASTPATH(
cc, vm_call_iseq_setup, 1);
15482 return vm_call_iseq_setup(ec,
cfp,
calling, cd);
15485 CC_SET_FASTPATH(
cc, vm_call_cfunc, 1);
15490 rb_warn_keyword_to_last_hash(ec,
calling,
ci, ((
void *)0));
15498 return vm_call_attrset(ec,
cfp,
calling, cd);
15508 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15509 return vm_call_method_missing(ec,
cfp,
calling, cd);
15511 CC_SET_FASTPATH(
cc, vm_call_bmethod, 1);
15512 return vm_call_bmethod(ec,
cfp,
calling, cd);
15514 CC_SET_ME(
cc, aliased_callable_method_entry(
cc->
me));
15516 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15520 CC_SET_FASTPATH(
cc, vm_call_opt_send, 1);
15521 return vm_call_opt_send(ec,
cfp,
calling, cd);
15523 CC_SET_FASTPATH(
cc, vm_call_opt_call, 1);
15524 return vm_call_opt_call(ec,
cfp,
calling, cd);
15526 CC_SET_FASTPATH(
cc, vm_call_opt_block_call, 1);
15527 return vm_call_opt_block_call(ec,
cfp,
calling, cd);
15529 rb_bug(
"vm_call_method: unsupported optimized method type (%d)",
15537 if (search_refined_method(ec,
cfp,
ci->mid,
cc))
15538 return vm_call_method(ec,
cfp,
calling, cd);
15540 return vm_call_method_nome(ec,
cfp,
calling, cd);
15550 const int stat = ci_missing_reason(
ci);
15558 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15559 return vm_call_method_missing(ec,
cfp,
calling, cd);
15568 if (
cc->
me != ((
void *)0)) {
15571 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15577 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15578 return vm_call_method_missing(ec,
cfp,
calling, cd);
15580 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15585 return vm_call_method_missing(ec,
cfp,
calling, cd);
15592 return vm_call_method_each_type(ec,
cfp,
calling, (
void *)&cd_entry);
15596 return vm_call_method_each_type(ec,
cfp,
calling, &cd_entry);
15600 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15606 return vm_call_method_nome(ec,
cfp,
calling, cd);
15633__attribute__ ((__noreturn__))
static void vm_super_outside(
void);
15635vm_super_outside(
void)
15647 vm_super_outside();
15651 current_defined_class = ((((
struct RClass*)(current_defined_class))->
ptr)->refined_class);
15657 ((((
struct RClass*)(current_defined_class))->
ptr)->includer) : current_defined_class;
15660 "self has wrong type to call super in this context: "
15661 "%""l""i" "\v"" (expected %""l""i" "\v"")",
15667 "implicit argument passing of super from method defined"
15668 " by define_method() is not supported."
15669 " Specify all arguments explicitly.");
15675 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15679 CC_SET_FASTPATH(
cc, vm_call_super_method, 1);
15683block_proc_is_lambda(
const VALUE procval)
15687 (((proc)) = (
rb_proc_t*)(((
struct RData*)(((procval))))->data));
15707 else if (
argc == 0) {
15715 switch (kw_splat) {
15726 ((
VALUE)((captured->
ep)) | (0x01)),
15728 0, ec->
cfp->
sp, 0, 0);
15730 rb_vm_pop_frame(ec);
15742 long len = rb_array_len(ary);
15745 argv[
i] = (rb_array_const_ptr_transient(ary)[
i]);
15750vm_callee_setup_block_arg_arg0_check(
VALUE *
argv)
15807 calling->kw_splat = kw_splat;
15822 (((
reg_cfp)->sp) = (((rsp))));
15823 vm_push_frame(ec,
iseq,
15826 ((
VALUE)((captured->
ep)) | (0x01)), 0,
15852 int kw_splat =
calling->kw_splat;
15855 if (kw_splat && !
calling->kw_splat) {
15859 kw_splat =
calling->kw_splat;
15862 val = vm_yield_with_cfunc(ec, captured, captured->
self,
argc, (((((
reg_cfp)->sp)))-(
argc)), kw_splat,
calling->block_handler, ((
void *)0));
15867vm_proc_to_block_handler(
VALUE procval)
15869 const struct rb_block *block = vm_proc_block(procval);
15870 switch (vm_block_type(block)) {
15872 return VM_BH_FROM_ISEQ_BLOCK(&block->
as.
captured);
15874 return VM_BH_FROM_IFUNC_BLOCK(&block->
as.
captured);
15876 return VM_BH_FROM_SYMBOL(block->
as.
symbol);
15878 return VM_BH_FROM_PROC(block->
as.
proc);
15880 __builtin_unreachable();
15893 return vm_invoke_iseq_block(ec,
reg_cfp,
calling,
ci, is_lambda, captured);
15901 is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(
block_handler));
15907 __builtin_unreachable();
15911vm_make_proc_with_iseq(
const rb_iseq_t *blockiseq)
15917 rb_bug(
"vm_make_proc_with_iseq: unreachable");
15919 captured = VM_CFP_TO_CAPTURED_BLOCK(
cfp);
15921 return rb_vm_make_proc(ec, captured,
rb_cProc);
15930vm_once_clear(
VALUE data)
16005 expr_type = check_respond_to_missing(
obj,
v);
16027 expr_type = check_respond_to_missing(
obj,
v);
16032 if (((VM_EP_LEP(((((
reg_cfp)->ep)))))[(-1)]) != 0) {
16055 rb_bug(
"unimplemented defined? type (VM)");
16058 if (expr_type != 0) {
16070static const VALUE *
16074 const VALUE *ep = reg_ep;
16075 for (
i = 0;
i < lv;
i++) {
16076 ep = ((
VALUE *)((ep)[(-1)] & ~0x03));
16081vm_get_special_object(
const VALUE *
const reg_ep,
16088 return vm_get_cbase(reg_ep);
16090 return vm_get_const_base(reg_ep);
16092 rb_bug(
"putspecialobject insn: unknown value_type %d",
type);
16106 const VALUE ary2 = ary2st;
16110 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); });
16113 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); });
16115 if (tmp1 == ary1) {
16125 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); });
16140 const long n = rb_array_len(pattern);
16141 for (
i = 0;
i <
n;
i++) {
16142 VALUE v = (rb_array_const_ptr_transient(pattern)[
i]);
16151 return check_match(ec, pattern, target,
type);
16157 const VALUE kw_bits = *(ep - bits);
16159 unsigned int b = (
unsigned int)((
unsigned long)((
long)(((
long)(kw_bits))>>(
int)(1))));
16160 if ((idx < (32-1)) && (b & (0x01 << idx)))
16196 if ((ns = vm_search_const_defined_class(
cbase,
id)) == 0) {
16199 else if (((flags) & 0x08)) {
16212 else if (((flags) & 0x10)) {
16214 if (tmp != super) {
16216 "superclass mismatch for class %""l""i" "\v""",
16266 rb_str_catf(message,
"\n%""l""i" "\v"":%""l""i" "\v"":"
16267 " previous definition of %""l""i" "\v"" was here",
16278 "superclass must be a Class (%""l""i" "\v"" given)",
16281 vm_check_if_namespace(
cbase);
16283 if ((
klass = vm_const_get_under(
id, flags,
cbase)) != 0) {
16284 if (!vm_check_if_class(
id, flags, super,
klass))
16285 unmatched_redefinition(
"class",
cbase,
id,
klass);
16289 return vm_declare_class(
id, flags,
cbase, super);
16296 vm_check_if_namespace(
cbase);
16297 if ((
mod = vm_const_get_under(
id, flags,
cbase)) != 0) {
16298 if (!vm_check_if_module(
id,
mod))
16299 unmatched_redefinition(
"module",
cbase,
id,
mod);
16303 return vm_declare_module(
id,
cbase);
16307vm_find_or_create_class_by_id(
ID id,
16315 return vm_define_class(
id, flags,
cbase, super);
16319 return vm_define_module(
id, flags,
cbase);
16321 rb_bug(
"unknown defineclass type: %d", (
int)
type);
16328 if (!vm_env_cref_by_cref(
cfp->
ep)) {
16332 return CREF_SCOPE_VISI(vm_ec_cref(ec))->
method_visi;
16339 if (!vm_env_cref_by_cref(
cfp->
ep)) {
16343 return CREF_SCOPE_VISI(vm_ec_cref(ec))->
module_func;
16352 if (!is_singleton) {
16353 klass = CREF_CLASS(cref);
16354 visi = vm_scope_visibility_get(ec);
16364 if (!is_singleton && vm_scope_module_func_check(ec)) {
16370vm_search_method_wrap(
16375 vm_search_method(cd, recv);
16378vm_search_invokeblock(
16406 void (*method_explorer)(
16414 int argc =
ci->orig_argc;
16429 if (((((
reg_cfp)))->
iseq)->body->catch_except_p) {
16444 if (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16451#define id_cmp idCmp
16465 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) {
16474 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)); }); });
16490 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) {
16499 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)); }); });
16504vm_ic_hit_p(
IC ic,
const VALUE *reg_ep)
16507 return (ic->
ic_cref == ((
void *)0) ||
16508 ic->
ic_cref == vm_get_cref(reg_ep));
16518 ic->
ic_cref = vm_get_const_key_cref(reg_ep);
16535#pragma GCC diagnostic push
16537#pragma GCC diagnostic ignored "-Waddress-of-packed-member"
16538; typeof(rb_obj_write((
VALUE)(ec->
cfp->
iseq), (
VALUE *)(&is->
once.
value), (
VALUE)(val),
"../ruby-2.7.6/vm_insnhelper.c", 4160)) unaligned_member_access_result = (rb_obj_write((
VALUE)(ec->
cfp->
iseq), (
VALUE *)(&is->once.value), (
VALUE)(val), "../
ruby-2.7.6/vm_insnhelper.c", 4160));
16539#pragma GCC diagnostic pop
16540; unaligned_member_access_result; });
16548 rb_vm_check_ints(ec);
16565 double kval = rb_float_value_inline(
key);
16566 if (!(__builtin_isinf_sign (kval)) &&
modf(kval, &kval) == 0.0) {
16574 return else_offset;
16588 static const char stack_consistency_error[] =
16589 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
16590 rb_bug(stack_consistency_error, nsp, nbp);
16595 if (FIXNUM_2_P(recv,
obj) &&
16597 return rb_fix_plus_fix(recv,
obj);
16599 else if (FLONUM_2_P(recv,
obj) &&
16601 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(
obj));
16609 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(
obj));
16628 if (FIXNUM_2_P(recv,
obj) &&
16630 return rb_fix_minus_fix(recv,
obj);
16632 else if (FLONUM_2_P(recv,
obj) &&
16634 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(
obj));
16642 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(
obj));
16651 if (FIXNUM_2_P(recv,
obj) &&
16653 return rb_fix_mul_fix(recv,
obj);
16655 else if (FLONUM_2_P(recv,
obj) &&
16657 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(
obj));
16665 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(
obj));
16674 if (FIXNUM_2_P(recv,
obj) &&
16678 else if (FLONUM_2_P(recv,
obj) &&
16697 if (FIXNUM_2_P(recv,
obj) &&
16701 else if (FLONUM_2_P(recv,
obj) &&
16703 return rb_float_new_inline(
ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(
obj)));
16711 return rb_float_new_inline(
ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(
obj)));
16721 VALUE val = opt_eq_func(recv,
obj, cd_eq);
16731 if (FIXNUM_2_P(recv,
obj) &&
16735 else if (FLONUM_2_P(recv,
obj) &&
16742 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16755 if (FIXNUM_2_P(recv,
obj) &&
16759 else if (FLONUM_2_P(recv,
obj) &&
16766 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16779 if (FIXNUM_2_P(recv,
obj) &&
16783 else if (FLONUM_2_P(recv,
obj) &&
16790 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16803 if (FIXNUM_2_P(recv,
obj) &&
16807 else if (FLONUM_2_P(recv,
obj) &&
16814 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16845 if (FIXNUM_2_P(recv,
obj) &&
16847 return (recv &
obj) | 1;
16856 if (FIXNUM_2_P(recv,
obj) &&
16868 if (FIXNUM_2_P(recv,
obj) &&
16877 return rb_ary_entry_internal(recv, ((
long)(((
long)(
obj))>>(
int)(1))));
16937vm_opt_length(
VALUE recv,
int bop)
16943 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16952 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
16953 return rb_long2num_inline(rb_array_len(recv));
16956 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
16964vm_opt_empty_p(
VALUE recv)
16980 else if (vm_method_cfunc_is(cd, recv,
rb_false)) {
16993 case ((~0UL)>>(
int)(1)):
17000vm_opt_succ(
VALUE recv)
17004 return fix_succ(recv);
17020 if (vm_method_cfunc_is(cd, recv, rb_obj_not)) {
17056 if (event & global_hooks->
events) {
17058 vm_dtrace(event, ec);
17059 rb_exec_event_hook_orig(ec, global_hooks, event,
self, 0, 0, 0 , val, 0);
17062 if (local_hooks != ((
void *)0)) {
17063 if (event & local_hooks->
events) {
17065 rb_exec_event_hook_orig(ec, local_hooks, event,
self, 0, 0, 0 , val, 0);
17070#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)
17084 enabled_flags |= local_hook_events;
17086 if ((pc_events & enabled_flags) == 0) {
17089 else if (ec->
trace_arg != ((
void *)0)) {
17105 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);
17106 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);
17107 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);
17108 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);
17109 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);
17118 return (*(rb_invoke_funcptr0_t)funcptr)(ec,
self);
17124 return (*(rb_invoke_funcptr1_t)funcptr)(ec,
self,
argv[0]);
17130 return (*(rb_invoke_funcptr2_t)funcptr)(ec,
self,
argv[0],
argv[1]);
17136 return (*(rb_invoke_funcptr3_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2]);
17142 return (*(rb_invoke_funcptr4_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2],
argv[3]);
17148 return (*(rb_invoke_funcptr5_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2],
argv[3],
argv[4]);
17171 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);
17172 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]);
17177 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);
17178 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]);
17183 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);
17184 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]);
17189 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);
17190 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]);
17195 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);
17196 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]);
17201 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);
17202 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]);
17207 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);
17208 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]);
17212lookup_builtin_invoker(
int argc)
17232 return invokers[
argc];
17243 return invoke_bf(ec,
cfp, bf,
argv);
17250 for (
int i=0;
i<bf->
argc;
i++) {
17256 if (bf->
argc == 0) {
17257 return invoke_bf(ec,
cfp, bf, ((
void *)0));
17261 return invoke_bf(ec,
cfp, bf,
argv);
17281static VALUE rb_eUncaughtThrow;
17282static ID id_result, id_tag, id_value;
17283#define id_mesg idMesg
17314 rb_raise(e,
"method name must be a Symbol but %""l""i" "\v"" is given",
17319 format =
rb_fstring_new((
"private method `%s' called for %s%s%s"), (
sizeof(
"private method `%s' called for %s%s%s" "") - 1));
17322 format =
rb_fstring_new((
"protected method `%s' called for %s%s%s"), (
sizeof(
"protected method `%s' called for %s%s%s" "") - 1));
17325 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));
17329 format =
rb_fstring_new((
"super: no superclass method `%s' for %s%s%s"), (
sizeof(
"super: no superclass method `%s' for %s%s%s" "") - 1));
17335 rb_vm_pop_cfunc_frame();
17344 vm_passed_block_handler_set(ec, 0);
17359 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))));
17365 if (!
klass)
goto missing;
17376 if (VM_FRAME_RUBYFRAME_P(
cfp)) {
17380 while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec,
cfp)) {
17381 if (VM_FRAME_RUBYFRAME_P(
cfp)) {
17392rb_vm_pop_cfunc_frame(
void)
17405 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 0);
17411 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 1);
17417 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 2);
17423 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 3);
17429 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 4);
17435 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 5);
17441 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 0);
17447 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 1);
17453 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 2);
17459 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 3);
17465 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 4);
17471 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 5);
17477 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 0);
17483 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 1);
17489 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 2);
17495 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 3);
17501 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 4);
17507 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 5);
17513 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 0);
17519 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 1);
17525 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 2);
17531 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 3);
17537 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 4);
17543 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 5);
17546{vm_call_iseq_setup_normal_0start_0params_0locals,
17547 vm_call_iseq_setup_normal_0start_0params_1locals,
17548 vm_call_iseq_setup_normal_0start_0params_2locals,
17549 vm_call_iseq_setup_normal_0start_0params_3locals,
17550 vm_call_iseq_setup_normal_0start_0params_4locals,
17551 vm_call_iseq_setup_normal_0start_0params_5locals},
17552{vm_call_iseq_setup_normal_0start_1params_0locals,
17553 vm_call_iseq_setup_normal_0start_1params_1locals,
17554 vm_call_iseq_setup_normal_0start_1params_2locals,
17555 vm_call_iseq_setup_normal_0start_1params_3locals,
17556 vm_call_iseq_setup_normal_0start_1params_4locals,
17557 vm_call_iseq_setup_normal_0start_1params_5locals},
17558{vm_call_iseq_setup_normal_0start_2params_0locals,
17559 vm_call_iseq_setup_normal_0start_2params_1locals,
17560 vm_call_iseq_setup_normal_0start_2params_2locals,
17561 vm_call_iseq_setup_normal_0start_2params_3locals,
17562 vm_call_iseq_setup_normal_0start_2params_4locals,
17563 vm_call_iseq_setup_normal_0start_2params_5locals},
17564{vm_call_iseq_setup_normal_0start_3params_0locals,
17565 vm_call_iseq_setup_normal_0start_3params_1locals,
17566 vm_call_iseq_setup_normal_0start_3params_2locals,
17567 vm_call_iseq_setup_normal_0start_3params_3locals,
17568 vm_call_iseq_setup_normal_0start_3params_4locals,
17569 vm_call_iseq_setup_normal_0start_3params_5locals}
17575 return &vm_call_iseq_setup_tailcall_0start;
17578 return &vm_call_iseq_setup_normal_0start;
17586 return &vm_call_iseq_setup_normal_0start;
VALUE rb_int2big(intptr_t n)
VALUE rb_uint2big(uintptr_t n)
void rb_cmperr(VALUE x, VALUE y)
VALUE rb_complex_polar(VALUE x, VALUE y)
void rb_fiber_start(void)
#define range(low, item, hi)
struct rb_encoding_entry * list
int rb_data_is_encoding(VALUE obj)
char str[HTML_ESCAPE_MAX_LEN+1]
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
VALUE rb_f_raise(int argc, VALUE *argv)
void rb_print_undef(VALUE klass, ID id, rb_method_visibility_t visi)
void rb_print_inaccessible(VALUE klass, ID id, rb_method_visibility_t visi)
void rb_print_undef_str(VALUE klass, VALUE name)
#define __builtin_expect(x, expected_value)
#define rb_data_object_alloc
void * rb_aligned_malloc(size_t alignment, size_t size)
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type)
void ruby_malloc_size_overflow(size_t count, size_t elsize)
VALUE rb_newobj_of(VALUE klass, VALUE flags)
#define rb_data_typed_object_alloc
VALUE rb_class_protected_instance_methods(int, const VALUE *, VALUE)
void rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE, VALUE), VALUE)
void rb_include_module(VALUE, VALUE)
void rb_extend_object(VALUE, VALUE)
Extend the object with the module.
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
VALUE rb_class_new(VALUE)
Creates a new class.
VALUE rb_singleton_class_clone(VALUE)
VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj)
void rb_class_subclass_add(VALUE super, VALUE klass)
VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
void rb_prepend_module(VALUE, VALUE)
VALUE rb_singleton_class(VALUE)
Returns the singleton class of obj.
void rb_class_detach_subclasses(VALUE)
void Init_class_hierarchy(void)
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
VALUE rb_include_class_new(VALUE, VALUE)
VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj)
VALUE rb_obj_singleton_methods(int, const VALUE *, VALUE)
VALUE rb_module_new(void)
int rb_singleton_class_internal_p(VALUE sklass)
VALUE rb_class_instance_methods(int, const VALUE *, VALUE)
VALUE rb_class_inherited(VALUE, VALUE)
Calls Class::inherited.
void rb_check_inheritable(VALUE)
Ensures a class can be derived from super.
VALUE rb_class_public_instance_methods(int, const VALUE *, VALUE)
VALUE rb_class_boot(VALUE)
A utility function that wraps class_alloc.
VALUE rb_define_module(const char *)
void rb_class_modify_check(VALUE)
Asserts that klass is not a frozen class.
void rb_class_detach_module_subclasses(VALUE)
VALUE rb_special_singleton_class(VALUE)
VALUE rb_define_module_id_under(VALUE, ID)
void rb_singleton_class_attached(VALUE, VALUE)
Attach a object to a singleton class.
void rb_freeze_singleton_class(VALUE x)
VALUE rb_mod_included_modules(VALUE)
VALUE rb_define_class_id_under(VALUE, ID, VALUE)
Defines a class under the namespace of outer.
VALUE rb_mod_ancestors(VALUE)
VALUE rb_mod_include_p(VALUE, VALUE)
VALUE rb_class_private_instance_methods(int, const VALUE *, VALUE)
void rb_class_remove_from_module_subclasses(VALUE)
VALUE rb_mod_init_copy(VALUE, VALUE)
VALUE rb_define_module_under(VALUE, const char *)
VALUE rb_singleton_class_get(VALUE obj)
Returns the singleton class of obj, or nil if obj is not a singleton object.
VALUE rb_make_metaclass(VALUE, VALUE)
VALUE rb_define_module_id(ID)
VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
VALUE rb_define_class_id(ID, VALUE)
Defines a new class.
void rb_class_remove_from_super_subclasses(VALUE)
ID rb_frame_callee(void)
The name of the current method.
ID rb_frame_this_func(void)
The original name of the current method.
VALUE rb_extract_keywords(VALUE *orighash)
int rb_class_has_methods(VALUE c)
void rb_need_block(void)
Declares that the current method needs a block.
VALUE rb_keyword_error_new(const char *error, VALUE keys)
void rb_define_attr(VALUE, const char *, int, int)
Defines (a) public accessor method(s) for an attribute.
void rb_undef_method(VALUE, const char *)
int rb_scan_args_kw(int, int, const VALUE *, const char *,...)
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
void rb_undef_methods_from(VALUE klass, VALUE super)
int rb_block_given_p(void)
Determines if the current method is given a block.
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *)
VALUE rb_cTrueClass
TrueClass class.
VALUE rb_cNilClass
NilClass class.
size_t(* dsize)(const void *)
VALUE rb_mKernel
Kernel module.
union RString::@156::@157::@158 aux
VALUE rb_cClass
Class class.
VALUE rb_cData
Data class.
const rb_data_type_t * parent
struct RObject::@154::@155 heap
VALUE rb_cBasicObject
BasicObject class.
VALUE rb_cObject
Object class.
const VALUE ary[RARRAY_EMBED_LEN_MAX]
VALUE rb_cFalseClass
FalseClass class.
union RArray::@159::@160::@161 aux
char ary[RSTRING_EMBED_LEN_MAX+1]
const rb_data_type_t * type
VALUE rb_eFloatDomainError
const char * wrap_struct_name
VALUE rb_cModule
Module class.
struct RString::@156::@157 heap
VALUE ary[ROBJECT_EMBED_LEN_MAX]
struct RArray::@159::@160 heap
struct re_pattern_buffer * ptr
VALUE rb_eMathDomainError
void rb_notimplement(void)
int rb_bug_reporter_add(void(*func)(FILE *, void *), void *data)
void rb_syserr_fail(int e, const char *mesg)
VALUE rb_get_backtrace(VALUE info)
void rb_raise(VALUE exc, const char *fmt,...)
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent)
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
VALUE rb_rescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE,...)
An equivalent of rescue clause.
void rb_mod_sys_fail(VALUE mod, const char *mesg)
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
void rb_bug(const char *fmt,...)
void rb_name_error(ID id, const char *fmt,...)
VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv)
VALUE rb_syserr_new(int, const char *)
void rb_check_copyable(VALUE obj, VALUE orig)
VALUE rb_syserr_new_str(int n, VALUE arg)
void rb_error_frozen(const char *what)
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
void rb_syserr_fail_str(int e, VALUE mesg)
const char * rb_builtin_type_name(int t)
void rb_interrupt(void)
Raises an Interrupt exception.
void rb_sys_fail_str(VALUE mesg)
void rb_error_untrusted(VALUE)
VALUE rb_eNoMatchingPatternError
void rb_name_error_str(VALUE str, const char *fmt,...)
void rb_fatal(const char *fmt,...)
void rb_frozen_error_raise(VALUE frozen_obj, const char *fmt,...)
void rb_vraise(VALUE exc, const char *fmt, va_list ap)
VALUE rb_protect(VALUE(*)(VALUE), VALUE, int *)
Protects a function call from potential global escapes from the function.
void rb_load_fail(VALUE path, const char *err)
void rb_unexpected_type(VALUE x, int t)
void rb_invalid_str(const char *str, const char *type)
const char * rb_builtin_class_name(VALUE x)
VALUE rb_make_exception(int, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
MJIT_FUNC_EXPORTED void rb_assert_failure(const char *file, int line, const char *name, const char *expr)
void rb_exc_fatal(VALUE mesg)
Raises a fatal error in the current thread.
void rb_bug_errno(const char *mesg, int errno_arg)
VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method)
void * rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type)
void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *ctx, const char *fmt,...)
void rb_warn(const char *fmt,...)
rb_warning_category_t rb_warning_category_from_name(VALUE category)
VALUE rb_exc_new(VALUE, const char *, long)
void rb_error_frozen_object(VALUE frozen_obj)
VALUE rb_exc_new_str(VALUE, VALUE)
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
void rb_loaderror(const char *fmt,...)
VALUE rb_rescue(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE)
An equivalent of rescue clause.
VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt)
void rb_loaderror_with_path(VALUE path, const char *fmt,...)
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args)
VALUE rb_errinfo(void)
The current exception in the current thread.
void rb_async_bug_errno(const char *mesg, int errno_arg)
void rb_check_trusted(VALUE)
void rb_jump_tag(int tag)
Continues the exception caught by rb_protect() and rb_eval_string_protect().
void rb_sys_fail(const char *mesg)
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
void rb_check_type(VALUE, int)
VALUE rb_eSystemCallError
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name)
VALUE rb_class_superclass(VALUE)
Returns the superclass of klass.
VALUE rb_obj_taint(VALUE)
call-seq: obj.taint -> obj
VALUE rb_false(VALUE obj)
VALUE rb_obj_trust(VALUE)
call-seq: obj.trust -> obj
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...
VALUE rb_convert_type(VALUE, int, const char *, const char *)
Converts an object into another type.
VALUE rb_Float(VALUE)
Equivalent to Kernel#Float in Ruby.
VALUE rb_check_to_int(VALUE)
Tries to convert val into Integer.
VALUE rb_obj_reveal(VALUE obj, VALUE klass)
Make a hidden object visible again.
VALUE rb_check_convert_type(VALUE, int, const char *, const char *)
Tries to convert an object into another type.
VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound)
void rb_obj_call_init(VALUE, int, const VALUE *)
Calls #initialize method of obj with the given arguments.
VALUE rb_any_to_s(VALUE)
Default implementation of #to_s.
VALUE rb_obj_alloc(VALUE)
Allocates an instance of klass.
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
VALUE rb_class_new_instance_kw(int, const VALUE *, VALUE, int)
void rb_obj_copy_ivar(VALUE dest, VALUE obj)
int rb_opts_exception_p(VALUE opts, int default_value)
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
double rb_num_to_dbl(VALUE val)
int rb_bool_expected(VALUE, const char *)
VALUE rb_check_to_float(VALUE)
Tries to convert an object into Float.
VALUE rb_Hash(VALUE)
Equivalent to Kernel#Hash in Ruby.
void rb_obj_infect(VALUE victim, VALUE carrier)
Does nothing.
VALUE rb_obj_frozen_p(VALUE obj)
Determines if the object is frozen.
VALUE rb_obj_init_copy(VALUE, VALUE)
Default implementation of #initialize_copy.
int rb_eql(VALUE, VALUE)
Determines if obj1 and obj2 are equal in terms of Object::eql?.
double rb_str_to_dbl(VALUE, int)
Parses a string representation of a floating point number.
VALUE rb_Integer(VALUE)
Equivalent to Kernel#Integer in Ruby.
VALUE rb_Array(VALUE)
Equivalent to Kernel#Array in Ruby.
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
VALUE rb_obj_dup(VALUE)
Equivalent to Object#dup in Ruby.
VALUE rb_inspect(VALUE)
Convenient wrapper of Object::inspect.
VALUE rb_obj_untrust(VALUE)
call-seq: obj.untrust -> obj
VALUE rb_class_inherited_p(VALUE mod, VALUE arg)
Determines if mod inherits arg.
VALUE rb_obj_is_instance_of(VALUE, VALUE)
Determines if obj is an instance of c.
VALUE rb_convert_type_with_id(VALUE, int, const char *, ID)
VALUE rb_class_real(VALUE cl)
Looks up the nearest ancestor of cl, skipping singleton classes or module inclusions.
VALUE rb_to_float(VALUE)
Converts a Numeric object into Float.
double rb_num2dbl(VALUE)
Converts a Numeric object to double.
VALUE rb_equal(VALUE, VALUE)
Same as Object#===, case equality.
VALUE rb_obj_clone(VALUE)
Almost same as Object::clone.
VALUE rb_obj_is_kind_of(VALUE, VALUE)
Determines if obj is a kind of c.
double rb_cstr_to_dbl(const char *, int)
Parses a string representation of a floating point number.
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
VALUE rb_check_to_integer(VALUE, const char *)
Tries to convert val into Integer.
VALUE rb_immutable_obj_clone(int, VALUE *, VALUE)
VALUE rb_class_search_ancestor(VALUE klass, VALUE super)
VALUE rb_obj_untrusted(VALUE obj)
call-seq: obj.untrusted? -> false
VALUE rb_String(VALUE)
Equivalent to Kernel#String in Ruby.
VALUE rb_obj_untaint(VALUE)
call-seq: obj.untaint -> obj
VALUE rb_obj_tainted(VALUE obj)
call-seq: obj.tainted? -> false
VALUE rb_check_convert_type_with_id(VALUE, int, const char *, ID)
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2)
VALUE rb_to_int(VALUE)
Converts val into Integer.
VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type)
Fills common (RBasic) fields in obj.
size_t rb_hash_size_num(VALUE hash)
void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite writable, int n, const char *mesg)
void rb_readwrite_sys_fail(enum rb_io_wait_readwrite writable, const char *mesg)
VALUE type(ANYARGS)
ANYARGS-ed function type.
void rb_num_zerodiv(void)
long rb_num2int(VALUE val)
VALUE rb_dbl_cmp(double a, double b)
long rb_fix2int(VALUE val)
my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2)
VALUE rb_find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
void rb_method_name_error(VALUE klass, VALUE str)
VALUE rb_f_abort(int argc, const VALUE *argv)
VALUE rb_f_exit(int argc, const VALUE *argv)
VALUE rb_f_exec(int argc, const VALUE *argv)
VALUE rb_data_object_zalloc(VALUE, size_t, RUBY_DATA_FUNC, RUBY_DATA_FUNC)
void rb_set_safe_level_force(int)
void rb_secure_update(VALUE)
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type)
VALUE rb_float_new_in_heap(double)
unsigned short rb_fix2ushort(VALUE)
unsigned long rb_num2ulong(VALUE)
short rb_fix2short(VALUE)
short rb_num2short(VALUE)
unsigned short rb_num2ushort(VALUE)
void rb_insecure_operation(void)
rb_atomic_t cnt[RUBY_NSIG]
st_index_t rb_st_hash_start(st_index_t h)
size_t rb_str_capacity(VALUE str)
_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)
int(* _close)(struct _reent *, void *)
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
int(* _close)(struct _reent *, void *)
struct _uc_xmmreg xmm[16]
struct _pthread_cleanup_handler * next
struct _reent::@8::@9 _reent
_mbstate_t _wcrtomb_state
struct __tm _localtime_buf
unsigned int _unused_rand
unsigned int _nmalloc[30]
_mbstate_t _wcsrtombs_state
__extension__ unsigned long long _rand_next
_mbstate_t _mbrtowc_state
int _unspecified_locale_info
void(* __cleanup)(struct _reent *)
struct __locale_t * _locale
_mbstate_t _mbsrtowcs_state
struct _Bigint ** _freelist
struct _reent::@8::@10 _unused
unsigned char * _nextf[30]
void * _si_process_handle
int64_t _si_pipe_unique_id
__uint16_t significand[4]
struct RBignum::@27::@28 heap
unsigned int ary[(8 *RVALUE_EMBED_LEN_MAX/4)]
struct ar_table_struct * ar
rb_code_location_t nd_loc
struct rb_args_info * args
struct rb_ary_pattern_info * apinfo
struct rb_global_entry * entry
struct RStruct::@31::@32 heap
const VALUE ary[RSTRUCT_EMBED_LEN_MAX]
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)))]
enum iseq_catch_table_entry::catch_type type
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 VALUE catch_table_ary
const rb_cref_t * ic_cref
struct timespec it_interval
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
rb_nativethread_cond_t intr
rb_nativethread_cond_t gvlq
union native_thread_data_struct::@42 node
unsigned int ruby2_keywords
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
struct rb_captured_block captured
const void *const func_ptr
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_kw_arg * kw_arg
struct rb_method_definition_struct *const def
const VALUE defined_class
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
rb_alloc_func_t allocator
struct rb_id_table * callable_m_tbl
const VALUE refined_class
rb_code_position_t beg_pos
rb_code_position_t end_pos
unsigned int debug_frozen_string_literal
unsigned int operands_unification
unsigned int tailcall_optimization
unsigned int coverage_enabled
unsigned int peephole_optimization
unsigned int specialized_instruction
unsigned int stack_caching
unsigned int frozen_string_literal
unsigned int instructions_unification
unsigned int inline_const_cache
const rb_scope_visibility_t scope_visi
struct rb_cref_struct * next
char conflict[sizeof(VALUE) *3]
struct rb_ensure_entry entry
struct rb_ensure_list * next
struct rb_execarg::@34::@36 cmd
unsigned unsetenv_others_given
unsigned new_pgroup_given
union rb_execarg::@34 invoke
struct waitpid_state * waitpid_state
unsigned unsetenv_others_do
unsigned close_others_given
struct rb_execarg::@34::@35 sh
VALUE local_storage_recursive_hash_for_trace
enum method_missing_reason method_missing_reason
struct rb_thread_struct * thread_ptr
struct rb_execution_context_struct::@55 machine
VALUE private_const_reference
VALUE passed_block_handler
rb_ensure_list_t * ensure_list
rb_atomic_t interrupt_flag
rb_atomic_t interrupt_mask
struct rb_vm_protect_tag * protect_tag
struct rb_trace_arg_struct * trace_arg
VALUE local_storage_recursive_hash
struct rb_global_variable * var
rb_nativethread_cond_t switch_wait_cond
const struct rb_thread_struct * owner
rb_nativethread_cond_t switch_cond
rb_nativethread_lock_t lock
const struct rb_thread_struct * timer
struct rb_event_hook_struct * hooks
struct rb_imemo_tmpbuf_struct * next
struct succ_index_table * succ_index_table
const struct iseq_insn_info_entry * body
unsigned int ruby2_keywords
unsigned int ambiguous_param0
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
unsigned int local_table_size
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 *)
rb_iseq_location_t location
struct rb_iseq_constant_body::@45::@47 flags
struct rb_call_data * call_data
unsigned int accepts_no_kwarg
struct iseq_catch_table * catch_table
const struct rb_iseq_struct * parent_iseq
long unsigned total_calls
struct rb_iseq_constant_body::@46 variable
struct rb_iseq_struct * local_iseq
struct rb_mjit_unit * jit_unit
rb_code_location_t code_location
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)())
unsigned int no_redef_warning
rb_method_bmethod_t bmethod
enum method_optimized_type optimize_type
union rb_method_definition_struct::@41 body
rb_method_refined_t refined
struct rb_method_definition_struct *const def
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
struct rb_objspace::@145 flags
unsigned int is_from_method
rb_method_visibility_t method_visi
rb_subclass_entry_t * next
struct rb_thread_list_struct * next
struct rb_thread_struct * th
@ thread_invoke_type_proc
rb_execution_context_t * ec
native_thread_data_t native_thread_data
struct rb_calling_info * calling
unsigned int pending_interrupt_queue_checked
struct list_node vmlt_node
enum rb_thread_status status
unsigned int abort_on_exception
rb_nativethread_id_t thread_id
VALUE pending_interrupt_mask_stack
rb_nativethread_lock_t interrupt_lock
unsigned int report_on_exception
struct rb_mutex_struct * keeping_mutexes
VALUE pending_interrupt_queue
void * blocking_region_buffer
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
VALUE load_path_check_cache
struct st_table * loaded_features_index
struct rb_objspace * objspace
rb_at_exit_list * at_exit
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
st_table * frozen_strings
st_table * defined_module_hash
const struct rb_builtin_function * builtin_function_table
rb_hook_list_t global_hooks
struct list_head waiting_pids
struct list_head workqueue
size_t fiber_vm_stack_size
volatile int ubf_async_safe
struct rb_postponed_job_struct * postponed_job_buffer
size_t fiber_machine_stack_size
size_t thread_vm_stack_size
const VALUE special_exceptions[ruby_special_error_count]
struct rb_vm_struct::@51 trap_list
VALUE loaded_features_snapshot
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
size_t thread_machine_stack_size
struct list_head living_threads
void(* sa_sigaction)(int, siginfo_t *, void *)
void(* sigev_notify_function)(sigval_t)
pthread_attr_t * sigev_notify_attributes
st_index_t(* hash)(st_data_t)
int(* compare)(st_data_t, st_data_t)
unsigned int rebuilds_num
unsigned char entry_power
const struct st_hash_type * type
IFUNC (Internal FUNCtion)
struct vm_ifunc_argc argc
rb_block_call_func_t func
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)
int rb_is_instance_id(ID id)
int rb_is_const_id(ID id)
int rb_is_attrset_sym(VALUE sym)
int rb_is_class_id(ID id)
int rb_is_attrset_id(ID id)
int rb_is_local_id(ID id)
int rb_is_const_sym(VALUE sym)
struct iseq_inline_storage_entry::@44 once
struct iseq_inline_iv_cache_entry iv_cache
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)
VALUE rb_mod_const_missing(VALUE klass, VALUE name)
void rb_vm_jump_tag_but_local_jump(int state)
VALUE rb_vm_top_self(void)
MJIT_FUNC_EXPORTED void rb_vm_localjump_error(const char *mesg, VALUE value, int reason)
st_table * rb_vm_fstring_table(void)
void rb_iter_break_value(VALUE val)
MJIT_FUNC_EXPORTED int rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id, struct ruby_dtrace_method_hook_args *args)
MJIT_FUNC_EXPORTED const rb_callable_method_entry_t * rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me)
rb_control_frame_t *FUNC_FASTCALL rb_insn_func_t(rb_execution_context_t *, rb_control_frame_t *)
void rb_throw(const char *tag, VALUE val)
void rb_throw_obj(VALUE tag, VALUE value)
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)
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)
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker)