2 #define _FORTIFY_SOURCE 2
4 #define CANONICALIZATION_FOR_MATHN 1
5 #define _XOPEN_SOURCE 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
25 #define STDC_HEADERS 1
26 #define HAVE_SYS_TYPES_H 1
27 #define HAVE_SYS_STAT_H 1
28 #define HAVE_STDLIB_H 1
29 #define HAVE_STRING_H 1
30 #define HAVE_MEMORY_H 1
31 #define HAVE_STRINGS_H 1
32 #define HAVE_INTTYPES_H 1
33 #define HAVE_STDINT_H 1
34 #define HAVE_UNISTD_H 1
35 #define __EXTENSIONS__ 1
38 #define _POSIX_PTHREAD_SEMANTICS 1
39 #define _TANDEM_SOURCE 1
40 #define RUBY_SYMBOL_EXPORT_BEGIN _Pragma("GCC visibility push(default)")
41 #define RUBY_SYMBOL_EXPORT_END _Pragma("GCC visibility pop")
42 #define HAVE_STMT_AND_DECL_IN_EXPR 1
43 #define HAVE_CYGWIN_CONV_PATH 1
44 #define HAVE_LIBCRYPT 1
46 #define HAVE_DIRENT_H 1
48 #define HAVE_STDBOOL_H 1
49 #define HAVE_SYS_WAIT_H 1
50 #define HAVE_A_OUT_H 1
52 #define HAVE_FCNTL_H 1
53 #define HAVE_FLOAT_H 1
54 #define HAVE_IEEEFP_H 1
55 #define HAVE_LANGINFO_H 1
56 #define HAVE_LIMITS_H 1
57 #define HAVE_LOCALE_H 1
58 #define HAVE_MALLOC_H 1
59 #define HAVE_PROCESS_H 1
61 #define HAVE_STDALIGN_H 1
62 #define HAVE_SYS_FCNTL_H 1
63 #define HAVE_SYS_FILE_H 1
64 #define HAVE_SYS_IOCTL_H 1
65 #define HAVE_SYS_PARAM_H 1
66 #define HAVE_SYS_RESOURCE_H 1
67 #define HAVE_SYS_SELECT_H 1
68 #define HAVE_SYS_SOCKET_H 1
69 #define HAVE_SYS_SYSMACROS_H 1
70 #define HAVE_SYS_TIME_H 1
71 #define HAVE_SYS_TIMES_H 1
72 #define HAVE_SYS_UIO_H 1
73 #define HAVE_SYS_UTIME_H 1
75 #define HAVE_UCONTEXT_H 1
76 #define HAVE_UTIME_H 1
80 #define restrict __restrict
81 #define HAVE_LONG_LONG 1
84 #define SIZEOF_SHORT 2
86 #define SIZEOF_LONG_LONG 8
87 #define SIZEOF___INT64 0
88 #define SIZEOF___INT128 0
89 #define SIZEOF_OFF_T 8
90 #define SIZEOF_VOIDP 4
91 #define SIZEOF_FLOAT 4
92 #define SIZEOF_DOUBLE 8
93 #define SIZEOF_TIME_T 4
94 #define SIZEOF_CLOCK_T 4
95 #define PACKED_STRUCT(x) x __attribute__((packed))
96 #define USE_UNALIGNED_MEMBER_ACCESS 1
97 #define PRI_LL_PREFIX "ll"
99 #define rb_pid_t pid_t
100 #define SIGNEDNESS_OF_PID_T -1
101 #define PIDT2NUM(v) INT2NUM(v)
102 #define NUM2PIDT(v) NUM2INT(v)
103 #define PRI_PIDT_PREFIX PRI_INT_PREFIX
105 #define rb_uid_t uid_t
106 #define SIGNEDNESS_OF_UID_T +1
107 #define UIDT2NUM(v) UINT2NUM(v)
108 #define NUM2UIDT(v) NUM2UINT(v)
109 #define PRI_UIDT_PREFIX PRI_INT_PREFIX
111 #define rb_gid_t gid_t
112 #define SIGNEDNESS_OF_GID_T +1
113 #define GIDT2NUM(v) UINT2NUM(v)
114 #define NUM2GIDT(v) NUM2UINT(v)
115 #define PRI_GIDT_PREFIX PRI_INT_PREFIX
116 #define HAVE_TIME_T 1
117 #define rb_time_t time_t
118 #define SIGNEDNESS_OF_TIME_T -1
119 #define TIMET2NUM(v) LONG2NUM(v)
120 #define NUM2TIMET(v) NUM2LONG(v)
121 #define PRI_TIMET_PREFIX PRI_LONG_PREFIX
123 #define rb_dev_t dev_t
124 #define SIGNEDNESS_OF_DEV_T +1
125 #define DEVT2NUM(v) UINT2NUM(v)
126 #define NUM2DEVT(v) NUM2UINT(v)
127 #define PRI_DEVT_PREFIX PRI_INT_PREFIX
128 #define HAVE_MODE_T 1
129 #define rb_mode_t mode_t
130 #define SIGNEDNESS_OF_MODE_T +1
131 #define MODET2NUM(v) UINT2NUM(v)
132 #define NUM2MODET(v) NUM2UINT(v)
133 #define PRI_MODET_PREFIX PRI_INT_PREFIX
134 #define HAVE_RLIM_T 1
135 #define rb_rlim_t rlim_t
136 #define SIGNEDNESS_OF_RLIM_T +1
137 #define RLIM2NUM(v) ULONG2NUM(v)
138 #define NUM2RLIM(v) NUM2ULONG(v)
139 #define PRI_RLIM_PREFIX PRI_LONG_PREFIX
141 #define rb_off_t off_t
142 #define SIGNEDNESS_OF_OFF_T -1
143 #define OFFT2NUM(v) LL2NUM(v)
144 #define NUM2OFFT(v) NUM2LL(v)
145 #define PRI_OFFT_PREFIX PRI_LL_PREFIX
146 #define HAVE_CLOCKID_T 1
147 #define rb_clockid_t clockid_t
148 #define SIGNEDNESS_OF_CLOCKID_T +1
149 #define CLOCKID2NUM(v) ULONG2NUM(v)
150 #define NUM2CLOCKID(v) NUM2ULONG(v)
151 #define PRI_CLOCKID_PREFIX PRI_LONG_PREFIX
152 #define HAVE_PROTOTYPES 1
153 #define TOKEN_PASTE(x,y) x ##y
154 #define STRINGIZE(expr) STRINGIZE0(expr)
155 #define HAVE_STDARG_PROTOTYPES 1
156 #define HAVE_VA_ARGS_MACRO 1
157 #define RUBY_ALIGNAS(x) __declspec(aligned(x))
158 #define RUBY_ALIGNOF alignof
159 #define CONSTFUNC(x) __attribute__ ((__const__)) x
160 #define PUREFUNC(x) __attribute__ ((__pure__)) x
161 #define NORETURN(x) __attribute__ ((__noreturn__)) x
162 #define DEPRECATED(x) __attribute__ ((__deprecated__)) x
163 #define DEPRECATED_BY(n,x) __attribute__ ((__deprecated__("by "#n))) x
164 #define DEPRECATED_TYPE(mesg,x) __attribute__ ((__deprecated__ mesg)) x
165 #define NOINLINE(x) __attribute__ ((__noinline__)) x
166 #define ALWAYS_INLINE(x) __attribute__ ((__always_inline__)) x
167 #define NO_SANITIZE(san,x) __attribute__ ((__no_sanitize__(san))) x
168 #define NO_SANITIZE_ADDRESS(x) __attribute__ ((__no_sanitize_address__)) x
169 #define NO_ADDRESS_SAFETY_ANALYSIS(x) __attribute__ ((__no_address_safety_analysis__)) x
170 #define WARN_UNUSED_RESULT(x) __attribute__ ((__warn_unused_result__)) x
171 #define MAYBE_UNUSED(x) __attribute__ ((__unused__)) x
172 #define ERRORFUNC(mesg,x) __attribute__ ((__error__ mesg)) x
173 #define WARNINGFUNC(mesg,x) __attribute__ ((__warning__ mesg)) x
174 #define WEAK(x) __attribute__ ((__weak__)) x
175 #define HAVE_FUNC_WEAK 1
176 #define RUBY_CXX_DEPRECATED(msg) __attribute__((__deprecated__(msg)))
177 #define FUNC_STDCALL(x) __attribute__ ((__stdcall__)) x
178 #define FUNC_CDECL(x) __attribute__ ((__cdecl__)) x
179 #define FUNC_FASTCALL(x) __attribute__ ((__fastcall__)) x
180 #define FUNC_UNOPTIMIZED(x) __attribute__ ((__optimize__("O0"))) x
181 #define FUNC_MINIMIZED(x) __attribute__ ((__optimize__("-Os","-fomit-frame-pointer"))) x
182 #define HAVE_ATTRIBUTE_FUNCTION_ALIAS 1
183 #define RUBY_ALIAS_FUNCTION_TYPE(type,prot,name,args) type prot __attribute__((alias(#name)));
184 #define RUBY_ALIAS_FUNCTION_VOID(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(void, prot, name, args)
185 #define HAVE_GCC_ATOMIC_BUILTINS 1
186 #define HAVE_GCC_SYNC_BUILTINS 1
187 #define UNREACHABLE __builtin_unreachable()
188 #define RUBY_FUNC_EXPORTED __attribute__ ((__visibility__("default"))) extern
189 #define RUBY_FUNC_NONNULL(n,x) __attribute__ ((__nonnull__(n))) x
190 #define RUBY_FUNCTION_NAME_STRING __func__
191 #define ENUM_OVER_INT 1
192 #define HAVE_DECL_SYS_NERR 1
193 #define HAVE_DECL_GETENV 1
194 #define SIZEOF_SIZE_T 4
195 #define SIZEOF_PTRDIFF_T 4
196 #define PRI_SIZE_PREFIX "z"
197 #define PRI_PTRDIFF_PREFIX "t"
198 #define HAVE_STRUCT_STAT_ST_BLKSIZE 1
199 #define HAVE_ST_BLKSIZE 1
200 #define HAVE_STRUCT_STAT_ST_BLOCKS 1
201 #define HAVE_ST_BLOCKS 1
202 #define HAVE_STRUCT_STAT_ST_RDEV 1
203 #define HAVE_ST_RDEV 1
204 #define SIZEOF_STRUCT_STAT_ST_SIZE SIZEOF_OFF_T
205 #define SIZEOF_STRUCT_STAT_ST_BLOCKS SIZEOF_OFF_T
206 #define SIZEOF_STRUCT_STAT_ST_INO SIZEOF_LONG_LONG
207 #define HAVE_STRUCT_STAT_ST_ATIM 1
208 #define HAVE_STRUCT_STAT_ST_MTIM 1
209 #define HAVE_STRUCT_STAT_ST_CTIM 1
210 #define HAVE_STRUCT_TIMEVAL 1
211 #define SIZEOF_STRUCT_TIMEVAL_TV_SEC SIZEOF_TIME_T
212 #define HAVE_STRUCT_TIMESPEC 1
213 #define HAVE_STRUCT_TIMEZONE 1
214 #define HAVE_RB_FD_INIT 1
215 #define HAVE_INT8_T 1
216 #define SIZEOF_INT8_T 1
217 #define HAVE_UINT8_T 1
218 #define SIZEOF_UINT8_T 1
219 #define HAVE_INT16_T 1
220 #define SIZEOF_INT16_T 2
221 #define HAVE_UINT16_T 1
222 #define SIZEOF_UINT16_T 2
223 #define HAVE_INT32_T 1
224 #define SIZEOF_INT32_T 4
225 #define HAVE_UINT32_T 1
226 #define SIZEOF_UINT32_T 4
227 #define HAVE_INT64_T 1
228 #define SIZEOF_INT64_T 8
229 #define HAVE_UINT64_T 1
230 #define SIZEOF_UINT64_T 8
231 #define HAVE_INTPTR_T 1
232 #define SIZEOF_INTPTR_T 4
233 #define HAVE_UINTPTR_T 1
234 #define SIZEOF_UINTPTR_T 4
235 #define PRI_PTR_PREFIX ""
236 #define HAVE_SSIZE_T 1
237 #define SIZEOF_SSIZE_T 4
238 #define PRI_64_PREFIX "ll"
239 #define GETGROUPS_T gid_t
240 #define RETSIGTYPE void
241 #define HAVE_ALLOCA_H 1
242 #define HAVE_ALLOCA 1
248 #define HAVE_EXPLICIT_BZERO 1
252 #define HAVE_LGAMMA_R 1
253 #define HAVE_MEMMOVE 1
255 #define HAVE_NEXTAFTER 1
256 #define HAVE_STRCHR 1
257 #define HAVE_STRERROR 1
258 #define HAVE_STRLCAT 1
259 #define HAVE_STRLCPY 1
260 #define HAVE_STRSTR 1
261 #define HAVE_TGAMMA 1
262 #define HAVE_FINITE 1
265 #define HAVE_SIGNBIT 1
268 #define HAVE_WORKING_VFORK 1
269 #define HAVE_WORKING_FORK 1
270 #define HAVE__LONGJMP 1
271 #define HAVE_ARC4RANDOM_BUF 1
272 #define HAVE_ATAN2L 1
273 #define HAVE_ATAN2F 1
274 #define HAVE_CHROOT 1
275 #define HAVE_CLOCK_GETTIME 1
277 #define HAVE_CRYPT_R 1
279 #define HAVE_DLOPEN 1
280 #define HAVE_DLADDR 1
283 #define HAVE_EACCESS 1
284 #define HAVE_ENDGRENT 1
285 #define HAVE_FCHMOD 1
286 #define HAVE_FCHOWN 1
288 #define HAVE_FDATASYNC 1
289 #define HAVE_FDOPENDIR 1
291 #define HAVE_FSTATAT 1
293 #define HAVE_FTRUNCATE 1
294 #define HAVE_GETCWD 1
295 #define HAVE_GETGRNAM 1
296 #define HAVE_GETGRNAM_R 1
297 #define HAVE_GETGROUPS 1
298 #define HAVE_GETPGID 1
299 #define HAVE_GETPGRP 1
300 #define HAVE_GETPRIORITY 1
301 #define HAVE_GETPWNAM_R 1
302 #define HAVE_GETRANDOM 1
303 #define HAVE_GETRLIMIT 1
304 #define HAVE_GETSID 1
305 #define HAVE_GETTIMEOFDAY 1
306 #define HAVE_GMTIME_R 1
307 #define HAVE_GRANTPT 1
308 #define HAVE_INITGROUPS 1
310 #define HAVE_ISSETUGID 1
311 #define HAVE_KILLPG 1
312 #define HAVE_LCHOWN 1
318 #define HAVE_LUTIMES 1
319 #define HAVE_MALLOC_USABLE_SIZE 1
321 #define HAVE_MEMALIGN 1
322 #define HAVE_WRITEV 1
323 #define HAVE_MEMRCHR 1
324 #define HAVE_MEMMEM 1
325 #define HAVE_MKFIFO 1
327 #define HAVE_MKTIME 1
328 #define HAVE_OPENAT 1
331 #define HAVE_POSIX_FADVISE 1
332 #define HAVE_POSIX_MEMALIGN 1
335 #define HAVE_PWRITE 1
336 #define HAVE_QSORT_R 1
337 #define HAVE_READLINK 1
338 #define HAVE_REALPATH 1
340 #define HAVE_SCHED_GETAFFINITY 1
341 #define HAVE_SEEKDIR 1
342 #define HAVE_SETEGID 1
343 #define HAVE_SETENV 1
344 #define HAVE_SETEUID 1
345 #define HAVE_SETGID 1
346 #define HAVE_SETGROUPS 1
347 #define HAVE_SETPGID 1
348 #define HAVE_SETPGRP 1
349 #define HAVE_SETREGID 1
350 #define HAVE_SETREUID 1
351 #define HAVE_SETRLIMIT 1
352 #define HAVE_SETSID 1
353 #define HAVE_SETUID 1
354 #define HAVE_SHUTDOWN 1
355 #define HAVE_SIGACTION 1
356 #define HAVE_SIGALTSTACK 1
357 #define HAVE_SIGPROCMASK 1
359 #define HAVE_SPAWNV 1
360 #define HAVE_SYMLINK 1
361 #define HAVE_SYSCONF 1
363 #define HAVE_TELLDIR 1
364 #define HAVE_TIMEGM 1
366 #define HAVE_TRUNCATE 1
367 #define HAVE_UNSETENV 1
368 #define HAVE_UTIMENSAT 1
369 #define HAVE_UTIMES 1
371 #define HAVE_WAITPID 1
372 #define HAVE_CRYPT_H 1
373 #define HAVE_STRUCT_CRYPT_DATA_INITIALIZED 1
374 #define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
375 #define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
376 #define HAVE_BUILTIN___BUILTIN_BSWAP16 1
377 #define HAVE_BUILTIN___BUILTIN_BSWAP32 1
378 #define HAVE_BUILTIN___BUILTIN_BSWAP64 1
379 #define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
380 #define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
381 #define HAVE_BUILTIN___BUILTIN_CLZ 1
382 #define HAVE_BUILTIN___BUILTIN_CLZL 1
383 #define HAVE_BUILTIN___BUILTIN_CLZLL 1
384 #define HAVE_BUILTIN___BUILTIN_CTZ 1
385 #define HAVE_BUILTIN___BUILTIN_CTZLL 1
386 #define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
387 #define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
388 #define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
389 #define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
390 #define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
391 #define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
392 #define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
393 #define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
394 #define HAVE_BUILTIN___BUILTIN_TRAP 1
395 #define HAVE_GNU_QSORT_R 1
396 #define ATAN2_INF_C99 1
397 #define HAVE_CLOCK_GETRES 1
400 #define HAVE_TIMER_CREATE 1
401 #define HAVE_TIMER_SETTIME 1
402 #define HAVE_STRUCT_TM_TM_ZONE 1
403 #define HAVE_TM_ZONE 1
404 #define HAVE_STRUCT_TM_TM_GMTOFF 1
405 #define HAVE_DAYLIGHT 1
406 #define NEGATIVE_TIME_T 1
407 #define POSIX_SIGNAL 1
409 #define RSHIFT(x,y) ((x)>>(int)(y))
410 #define HAVE__SC_CLK_TCK 1
411 #define STACK_GROW_DIRECTION -1
412 #define COROUTINE_H "coroutine/ucontext/Context.h"
414 #define _THREAD_SAFE 1
415 #define HAVE_LIBPTHREAD 1
416 #define HAVE_SCHED_YIELD 1
417 #define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
418 #define HAVE_PTHREAD_ATTR_GETSTACK 1
419 #define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
420 #define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
421 #define HAVE_PTHREAD_SIGMASK 1
422 #define HAVE_PTHREAD_SETNAME_NP 1
423 #define HAVE_PTHREAD_GETATTR_NP 1
424 #define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(pthread_self(), name)
425 #define SET_ANOTHER_THREAD_NAME(thid,name) pthread_setname_np(thid, name)
426 #define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t *mc = &(uc)->uc_mcontext
427 #define HAVE_GETCONTEXT 1
428 #define HAVE_SETCONTEXT 1
429 #define DLEXT_MAXLEN 3
431 #define LIBDIR_BASENAME "lib"
432 #define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat"
433 #define HAVE__SETJMP 1
434 #define RUBY_SETJMP(env) __builtin_setjmp((env))
435 #define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
437 #define HAVE_PTHREAD_H 1
438 #define RUBY_PLATFORM "i386-msys"
439 #define RUBY_DEFINES_H 1
440 #define HAVE_ATTRIBUTE_ERRORFUNC 1
441 #define HAVE_ATTRIBUTE_WARNINGFUNC 1
442 #define GCC_VERSION_SINCE(major,minor,patchlevel) ((__GNUC__ > (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ > (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))))
443 #define GCC_VERSION_BEFORE(major,minor,patchlevel) ((__GNUC__ < (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ < (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ <= (patchlevel))))))
444 #define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
445 #define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
446 #define COLDFUNC __attribute__((cold))
447 #define PRINTF_ARGS(decl,string_index,first_to_check) decl __attribute__((format(printf, string_index, first_to_check)))
448 #define RB_GNUC_EXTENSION __extension__
449 #define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
452 #define __NEWLIB_H__ 1
453 #define _NEWLIB_VERSION_H__ 1
454 #define _NEWLIB_VERSION "3.3.0"
456 #define __NEWLIB_MINOR__ 3
457 #define __NEWLIB_PATCHLEVEL__ 0
458 #define _WANT_IO_C99_FORMATS 1
459 #define _WANT_IO_LONG_LONG 1
460 #define _WANT_IO_LONG_DOUBLE 1
461 #define _WANT_IO_POS_ARGS 1
462 #define _REENT_CHECK_VERIFY 1
463 #define _MB_CAPABLE 1
464 #define _MB_LEN_MAX 8
465 #define _ATEXIT_DYNAMIC_ALLOC 1
466 #define _HAVE_LONG_DOUBLE 1
467 #define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
468 #define _FVWRITE_IN_STREAMIO 1
469 #define _FSEEK_OPTIMIZATION 1
470 #define _WIDE_ORIENT 1
471 #define _UNBUF_STREAM_OPT 1
472 #define __SYS_CONFIG_H__
473 #define __IEEE_LITTLE_ENDIAN
474 #define _SUPPORTS_ERREXCEPT
475 #define __OBSOLETE_MATH_DEFAULT 0
476 #define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT
477 #define _SYS_FEATURES_H
478 #define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
479 #define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)
480 #undef _ATFILE_SOURCE
481 #define _ATFILE_SOURCE 1
482 #undef _DEFAULT_SOURCE
483 #define _DEFAULT_SOURCE 1
484 #undef _ISOC99_SOURCE
485 #define _ISOC99_SOURCE 1
486 #undef _ISOC11_SOURCE
487 #define _ISOC11_SOURCE 1
489 #define _POSIX_SOURCE 1
490 #undef _POSIX_C_SOURCE
491 #define _POSIX_C_SOURCE 200809L
493 #define _XOPEN_SOURCE 700
494 #undef _XOPEN_SOURCE_EXTENDED
495 #define _XOPEN_SOURCE_EXTENDED 1
497 #define _POSIX_SOURCE 1
498 #undef _POSIX_C_SOURCE
499 #define _POSIX_C_SOURCE 200809L
500 #undef _ATFILE_SOURCE
501 #define _ATFILE_SOURCE 1
502 #define __ATFILE_VISIBLE 1
503 #define __BSD_VISIBLE 1
504 #define __GNU_VISIBLE 1
505 #define __ISO_C_VISIBLE 2011
506 #define __LARGEFILE_VISIBLE 1
507 #define __MISC_VISIBLE 1
508 #define __POSIX_VISIBLE 200809
509 #define __SVID_VISIBLE 1
510 #define __XSI_VISIBLE 700
511 #define __SSP_FORTIFY_LEVEL 2
512 #define _POSIX_VERSION 200809L
513 #define _POSIX2_VERSION 200809L
514 #define _XOPEN_VERSION __XSI_VISIBLE
515 #define _POSIX_ADVISORY_INFO 200809L
516 #define _POSIX_ASYNCHRONOUS_IO 200809L
517 #define _POSIX_BARRIERS 200809L
518 #define _POSIX_CHOWN_RESTRICTED 1
519 #define _POSIX_CLOCK_SELECTION 200809L
520 #define _POSIX_CPUTIME 200809L
521 #define _POSIX_FSYNC 200809L
522 #define _POSIX_IPV6 200809L
523 #define _POSIX_JOB_CONTROL 1
524 #define _POSIX_MAPPED_FILES 200809L
525 #define _POSIX_MEMLOCK_RANGE 200809L
526 #define _POSIX_MEMORY_PROTECTION 200809L
527 #define _POSIX_MESSAGE_PASSING 200809L
528 #define _POSIX_MONOTONIC_CLOCK 200809L
529 #define _POSIX_NO_TRUNC 1
530 #define _POSIX_PRIORITY_SCHEDULING 200809L
531 #define _POSIX_RAW_SOCKETS 200809L
532 #define _POSIX_READER_WRITER_LOCKS 200809L
533 #define _POSIX_REALTIME_SIGNALS 200809L
534 #define _POSIX_REGEXP 1
535 #define _POSIX_SAVED_IDS 1
536 #define _POSIX_SEMAPHORES 200809L
537 #define _POSIX_SHARED_MEMORY_OBJECTS 200809L
538 #define _POSIX_SHELL 1
539 #define _POSIX_SPAWN 200809L
540 #define _POSIX_SPIN_LOCKS 200809L
541 #define _POSIX_SYNCHRONIZED_IO 200809L
542 #define _POSIX_THREAD_ATTR_STACKADDR 200809L
543 #define _POSIX_THREAD_ATTR_STACKSIZE 200809L
544 #define _POSIX_THREAD_CPUTIME 200809L
545 #define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
546 #define _POSIX_THREAD_PROCESS_SHARED 200809L
547 #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
548 #define _POSIX_THREADS 200809L
549 #define _POSIX_TIMEOUTS 200809L
550 #define _POSIX_TIMERS 200809L
551 #define _POSIX_VDISABLE '\0'
552 #define _POSIX2_C_VERSION _POSIX2_VERSION
553 #define _POSIX2_C_BIND _POSIX2_VERSION
554 #define _POSIX2_C_DEV _POSIX2_VERSION
555 #define _POSIX2_CHAR_TERM _POSIX2_VERSION
556 #define _POSIX2_SW_DEV _POSIX2_VERSION
557 #define _POSIX2_UPE _POSIX2_VERSION
558 #define _POSIX_V6_ILP32_OFF32 -1
559 #define _POSIX_V6_ILP32_OFFBIG 1
560 #define _POSIX_V6_LP64_OFF64 -1
561 #define _POSIX_V6_LPBIG_OFFBIG -1
562 #define _POSIX_V7_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
563 #define _POSIX_V7_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
564 #define _POSIX_V7_LP64_OFF64 _POSIX_V6_LP64_OFF64
565 #define _POSIX_V7_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
566 #define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
567 #define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
568 #define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
569 #define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
570 #define _XOPEN_CRYPT 1
571 #define _XOPEN_ENH_I18N 1
573 #define __STDC_ISO_10646__ 201806L
574 #define _POINTER_INT long
576 #define __RAND_MAX 0x7fffffff
577 #define _CYGWIN_CONFIG_H
578 #define __DYNAMIC_REENT__
579 #define __SYMBOL_PREFIX "_"
580 #define _SYMSTR(x) __SYMBOL_PREFIX #x
581 #define __FILENAME_MAX__ 4096
582 #define _READ_WRITE_RETURN_TYPE _ssize_t
583 #define _READ_WRITE_BUFSIZE_TYPE size_t
584 #define __LARGE64_FILES 1
585 #define __USE_INTERNAL_STAT64 1
586 #define __LINUX_ERRNO_EXTENSIONS__ 1
587 #define _MB_EXTENDED_CHARSETS_ALL 1
588 #define __HAVE_LOCALE_INFO__ 1
589 #define __HAVE_LOCALE_INFO_EXTENDED__ 1
590 #define _WANT_C99_TIME_FORMATS 1
591 #define _GLIBC_EXTENSION 1
592 #define _STDIO_BSD_SEMANTICS 1
593 #define __TM_GMTOFF tm_gmtoff
594 #define __TM_ZONE tm_zone
595 #define _USE_LONG_TIME_T 1
597 #define __IMPORT __declspec(dllimport)
598 #define DEFAULT_LOCALE "C.UTF-8"
599 #define _MB_EXTENDED_CHARSETS_ISO 1
600 #define _MB_EXTENDED_CHARSETS_WINDOWS 1
604 #define _LONG_DOUBLE long double
605 #define _ATTRIBUTE(attrs) __attribute__ (attrs)
606 #define _ELIDABLE_INLINE static __inline__
607 #define _NOINLINE __attribute__ ((__noinline__))
608 #define _NOINLINE_STATIC _NOINLINE static
610 #define __need_size_t
612 #define _SYS_CDEFS_H_
613 #define _MACHINE__DEFAULT_TYPES_H
614 #define __EXP(x) __ ##x ##__
615 #define __have_longlong64 1
616 #define __have_long32 1
619 #define ___int8_t_defined 1
622 #define ___int16_t_defined 1
625 #define ___int32_t_defined 1
628 #define ___int64_t_defined 1
631 #define ___int_least8_t_defined 1
634 #define ___int_least16_t_defined 1
637 #define ___int_least32_t_defined 1
640 #define ___int_least64_t_defined 1
649 #define _SYS_SIZE_T_H
655 #define _SIZE_T_DEFINED_
656 #define _SIZE_T_DEFINED
657 #define _BSD_SIZE_T_DEFINED_
658 #define _SIZE_T_DECLARED
659 #define ___int_size_t_h
666 #define NULL ((void *)0)
668 #define __PMT(args) args
671 #define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname
672 #define __ptr_t void *
673 #define __long_double_t long double
674 #define __attribute_malloc__
675 #define __attribute_pure__
676 #define __attribute_format_strfmon__(a,b)
677 #define __flexarr [0]
681 #define __has_extension __has_feature
682 #define __has_feature(x) 0
683 #define __has_builtin(x) 0
684 #define __BEGIN_DECLS
686 #define __GNUCLIKE_ASM 3
687 #define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
688 #define __GNUCLIKE___TYPEOF 1
689 #define __GNUCLIKE___OFFSETOF 1
690 #define __GNUCLIKE___SECTION 1
691 #define __GNUCLIKE_CTOR_SECTION_HANDLING 1
692 #define __GNUCLIKE_BUILTIN_CONSTANT_P 1
693 #define __GNUCLIKE_BUILTIN_VARARGS 1
694 #define __GNUCLIKE_BUILTIN_STDARG 1
695 #define __GNUCLIKE_BUILTIN_VAALIST 1
696 #define __GNUC_VA_LIST_COMPATIBILITY 1
697 #define __compiler_membar() __asm __volatile(" " : : : "memory")
698 #define __GNUCLIKE_BUILTIN_NEXT_ARG 1
699 #define __GNUCLIKE_MATH_BUILTIN_RELOPS
700 #define __GNUCLIKE_BUILTIN_MEMCPY 1
701 #define __CC_SUPPORTS_INLINE 1
702 #define __CC_SUPPORTS___INLINE 1
703 #define __CC_SUPPORTS___INLINE__ 1
704 #define __CC_SUPPORTS___FUNC__ 1
705 #define __CC_SUPPORTS_WARNING 1
706 #define __CC_SUPPORTS_VARADIC_XXX 1
707 #define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
708 #define __P(protos) protos
709 #define __CONCAT1(x,y) x ## y
710 #define __CONCAT(x,y) __CONCAT1(x,y)
711 #define __STRING(x) #x
712 #define __XSTRING(x) __STRING(x)
713 #define __const const
714 #define __signed signed
715 #define __volatile volatile
716 #define __weak_symbol __attribute__((__weak__))
717 #define __dead2 __attribute__((__noreturn__))
718 #define __pure2 __attribute__((__const__))
719 #define __unused __attribute__((__unused__))
720 #define __used __attribute__((__used__))
721 #define __packed __attribute__((__packed__))
722 #define __aligned(x) __attribute__((__aligned__(x)))
723 #define __section(x) __attribute__((__section__(x)))
724 #define __alloc_size(x) __attribute__((__alloc_size__(x)))
725 #define __alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))
726 #define __alloc_align(x) __attribute__((__alloc_align__(x)))
727 #define __generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)
728 #define __min_size(x) static (x)
729 #define __malloc_like __attribute__((__malloc__))
730 #define __pure __attribute__((__pure__))
731 #define __always_inline __inline__ __attribute__((__always_inline__))
732 #define __noinline __attribute__ ((__noinline__))
733 #define __nonnull(x) __attribute__((__nonnull__ x))
734 #define __nonnull_all __attribute__((__nonnull__))
735 #define __fastcall __attribute__((__fastcall__))
736 #define __result_use_check __attribute__((__warn_unused_result__))
737 #define __returns_twice __attribute__((__returns_twice__))
738 #define __unreachable() __builtin_unreachable()
739 #define __restrict restrict
740 #define __predict_true(exp) __builtin_expect((exp), 1)
741 #define __predict_false(exp) __builtin_expect((exp), 0)
742 #define __null_sentinel __attribute__((__sentinel__))
743 #define __exported __attribute__((__visibility__("default")))
745 #define __offsetof(type,field) offsetof(type, field)
746 #define __rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))
747 #define __containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})
748 #define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
749 #define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
750 #define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
751 #define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
752 #define __strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
753 #define __printf0like(fmtarg,firstvararg)
754 #define __strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
755 #define __weak_reference(sym,alias) __asm__(".stabs \"_" #alias "\",11,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
756 #define __warn_references(sym,msg) __asm__(".stabs \"" msg "\",30,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
757 #define __FBSDID(s) struct __hack
758 #define __RCSID(s) struct __hack
759 #define __RCSID_SOURCE(s) struct __hack
760 #define __SCCSID(s) struct __hack
761 #define __COPYRIGHT(s) struct __hack
762 #define __DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))
763 #define __DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))
764 #define __DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))
767 #define _Null_unspecified
768 #define __NULLABILITY_PRAGMA_PUSH
769 #define __NULLABILITY_PRAGMA_POP
770 #define __arg_type_tag(arg_kind,arg_idx,type_tag_idx)
771 #define __datatype_type_tag(kind,type)
772 #define __lock_annotate(x)
773 #define __lockable __lock_annotate(lockable)
774 #define __locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))
775 #define __locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))
776 #define __trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))
777 #define __trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))
778 #define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
779 #define __asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))
780 #define __asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))
781 #define __requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))
782 #define __requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))
783 #define __requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))
784 #define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
785 #define __guarded_by(x) __lock_annotate(guarded_by(x))
786 #define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))
789 #define _ANSI_STDDEF_H
795 #define _BSD_PTRDIFF_T_
796 #define ___int_ptrdiff_t_h
797 #define _GCC_PTRDIFF_T
798 #define _PTRDIFF_T_DECLARED
800 #undef __need_ptrdiff_t
809 #define _BSD_WCHAR_T_
810 #define _WCHAR_T_DEFINED_
811 #define _WCHAR_T_DEFINED
813 #define ___int_wchar_t_h
814 #define __INT_WCHAR_T_H
816 #define _WCHAR_T_DECLARED
819 #undef __need_wchar_t
821 #define NULL ((void *)0)
823 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
824 #define _GCC_MAX_ALIGN_T
826 long long __max_align_ll
__attribute__((__aligned__(__alignof__(
long long))));
827 long double __max_align_ld
__attribute__((__aligned__(__alignof__(
long double))));
828 __float128 __max_align_f128
__attribute__((__aligned__(__alignof(__float128))));
830 #define __need___va_list
831 #undef __need___va_list
832 #define __GNUC_VA_LIST
835 #define _VA_LIST_DEFINED
836 #define _SYS_REENT_H_
837 #define _SYS__TYPES_H
838 #define __need_size_t
839 #define __need_wint_t
840 #undef __need_ptrdiff_t
842 #undef __need_wchar_t
847 #define NULL ((void *)0)
849 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
850 #define _MACHINE__TYPES_H
851 #define __machine_blkcnt_t_defined
853 #define __machine_blksize_t_defined
855 #define __machine_dev_t_defined
857 #define __machine_fsblkcnt_t_defined
859 #define __machine_fsfilcnt_t_defined
861 #define __machine_uid_t_defined
863 #define __machine_gid_t_defined
865 #define __machine_ino_t_defined
867 #define __machine_key_t_defined
869 #define __machine_sa_family_t_defined
871 #define __machine_socklen_t_defined
884 #define unsigned signed
894 unsigned char __wchb[4];
898 #define _CLOCK_T_ unsigned long
900 #define _TIME_T_ long
902 #define _CLOCKID_T_ unsigned long
904 #define _TIMER_T_ unsigned long
916 #define _LOCK_RECURSIVE_T _LOCK_T
917 #define _LOCK_T_RECURSIVE_INITIALIZER ((_LOCK_T)18)
918 #define _LOCK_T_INITIALIZER ((_LOCK_T)19)
919 #define __LOCK_INIT(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_INITIALIZER;
920 #define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_RECURSIVE_INITIALIZER;
921 #define __lock_init(__lock) __cygwin_lock_init(&__lock)
922 #define __lock_init_recursive(__lock) __cygwin_lock_init_recursive(&__lock)
923 #define __lock_close(__lock) __cygwin_lock_fini(&__lock)
924 #define __lock_close_recursive(__lock) __cygwin_lock_fini(&__lock)
925 #define __lock_acquire(__lock) __cygwin_lock_lock(&__lock)
926 #define __lock_acquire_recursive(__lock) __cygwin_lock_lock(&__lock)
927 #define __lock_try_acquire(lock) __cygwin_lock_trylock(&__lock)
928 #define __lock_try_acquire_recursive(lock) __cygwin_lock_trylock(&__lock)
929 #define __lock_release(__lock) __cygwin_lock_unlock(&__lock)
930 #define __lock_release_recursive(__lock) __cygwin_lock_unlock(&__lock)
958 #define _ATEXIT_SIZE 32
971 #define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
972 #define _REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT,
974 unsigned char *
_base;
977 #define _REENT_SMALL_CHECK_INIT(ptr)
1044 #define _RAND48_SEED_0 (0x330e)
1045 #define _RAND48_SEED_1 (0xabcd)
1046 #define _RAND48_SEED_2 (0x1234)
1047 #define _RAND48_MULT_0 (0xe66d)
1048 #define _RAND48_MULT_1 (0xdeec)
1049 #define _RAND48_MULT_2 (0x0005)
1050 #define _RAND48_ADD (0x000b)
1056 #define _REENT_EMERGENCY_SIZE 25
1057 #define _REENT_ASCTIME_SIZE 26
1058 #define _REENT_SIGNAL_SIZE 24
1112 #define _REENT_STDIO_STREAM(var,index) &(var)->__sf[index]
1113 #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} }
1114 #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; }
1115 #define _REENT_CHECK_RAND48(ptr)
1116 #define _REENT_CHECK_MP(ptr)
1117 #define _REENT_CHECK_TM(ptr)
1118 #define _REENT_CHECK_ASCTIME_BUF(ptr)
1119 #define _REENT_CHECK_EMERGENCY(ptr)
1120 #define _REENT_CHECK_MISC(ptr)
1121 #define _REENT_CHECK_SIGNAL_BUF(ptr)
1122 #define _REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)
1123 #define _REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)
1124 #define _REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)
1125 #define _REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)
1126 #define _REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)
1127 #define _REENT_MP_RESULT(ptr) ((ptr)->_result)
1128 #define _REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)
1129 #define _REENT_MP_P5S(ptr) ((ptr)->_p5s)
1130 #define _REENT_MP_FREELIST(ptr) ((ptr)->_freelist)
1131 #define _REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)
1132 #define _REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)
1133 #define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
1134 #define _REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)
1135 #define _REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)
1136 #define _REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)
1137 #define _REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)
1138 #define _REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)
1139 #define _REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)
1140 #define _REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)
1141 #define _REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)
1142 #define _REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)
1143 #define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)
1144 #define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)
1145 #define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))
1146 #define _REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }
1147 #define _Kmax (sizeof (size_t) << 3)
1148 #define __ATTRIBUTE_IMPURE_PTR__
1153 #define _REENT (__getreent())
1154 #define _GLOBAL_REENT _global_impure_ptr
1155 #define _GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)
1161 #define __BIT_TYPES_DEFINED__ 1
1162 #define _SYS_TYPES_H
1163 #define _SYS__STDINT_H
1165 #define _INT8_T_DECLARED
1167 #define _UINT8_T_DECLARED
1168 #define __int8_t_defined 1
1170 #define _INT16_T_DECLARED
1172 #define _UINT16_T_DECLARED
1173 #define __int16_t_defined 1
1175 #define _INT32_T_DECLARED
1177 #define _UINT32_T_DECLARED
1178 #define __int32_t_defined 1
1180 #define _INT64_T_DECLARED
1182 #define _UINT64_T_DECLARED
1183 #define __int64_t_defined 1
1185 #define _INTMAX_T_DECLARED
1187 #define _UINTMAX_T_DECLARED
1189 #define _INTPTR_T_DECLARED
1191 #define _UINTPTR_T_DECLARED
1192 #define __MACHINE_ENDIAN_H__
1193 #define _BITS_ENDIAN_H_
1194 #define __BIG_ENDIAN 4321
1195 #define __LITTLE_ENDIAN 1234
1196 #define __BYTE_ORDER __LITTLE_ENDIAN
1197 #define _LITTLE_ENDIAN __LITTLE_ENDIAN
1198 #define _BIG_ENDIAN __BIG_ENDIAN
1199 #define _PDP_ENDIAN __PDP_ENDIAN
1200 #define _BYTE_ORDER __BYTE_ORDER
1201 #define __machine_host_to_from_network_defined
1207 __asm__(
"bswap %0" :
"=r" (_x) :
"0" (_x));
1218 #define __htonl(_x) __ntohl(_x)
1219 #define __htons(_x) __ntohs(_x)
1220 #define _QUAD_HIGHWORD 1
1221 #define _QUAD_LOWWORD 0
1222 #define LITTLE_ENDIAN _LITTLE_ENDIAN
1223 #define BIG_ENDIAN _BIG_ENDIAN
1224 #define PDP_ENDIAN _PDP_ENDIAN
1225 #define BYTE_ORDER _BYTE_ORDER
1226 #define __bswap16(_x) __builtin_bswap16(_x)
1227 #define __bswap32(_x) __builtin_bswap32(_x)
1228 #define __bswap64(_x) __builtin_bswap64(_x)
1229 #define _SYS_SELECT_H
1230 #define _SYS__SIGSET_H_
1232 #define _SYS__TIMEVAL_H_
1234 #define _SUSECONDS_T_DECLARED
1236 #define __time_t_defined
1237 #define _TIME_T_DECLARED
1238 #define _TIMEVAL_DEFINED
1243 #define _SYS_TIMESPEC_H_
1244 #define _SYS__TIMESPEC_H_
1249 #define TIMEVAL_TO_TIMESPEC(tv,ts) do { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; } while (0)
1250 #define TIMESPEC_TO_TIMEVAL(tv,ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0)
1255 #define _SIGSET_T_DECLARED
1257 #define _SYS_TYPES_FD_SET
1258 #define FD_SETSIZE 64
1261 #define _NFDBITS ((int)sizeof(__fd_mask) * 8)
1262 #define NFDBITS _NFDBITS
1263 #define _howmany(x,y) (((x) + ((y) - 1)) / (y))
1267 #define fds_bits __fds_bits
1268 #define __fdset_mask(n) ((__fd_mask)1 << ((n) % _NFDBITS))
1269 #define FD_CLR(n,p) ((p)->__fds_bits[(n)/_NFDBITS] &= ~__fdset_mask(n))
1270 #define FD_COPY(f,t) (void)(*(t) = *(f))
1271 #define FD_ISSET(n,p) (((p)->__fds_bits[(n)/_NFDBITS] & __fdset_mask(n)) != 0)
1272 #define FD_SET(n,p) ((p)->__fds_bits[(n)/_NFDBITS] |= __fdset_mask(n))
1273 #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)
1278 #define physadr physadr_t
1281 #define _IN_ADDR_T_DECLARED
1283 #define _IN_PORT_T_DECLARED
1286 #define __u_char_defined
1288 #define __u_short_defined
1290 #define __u_int_defined
1292 #define __u_long_defined
1293 #define _BSDTYPES_DEFINED
1298 #define _BLKCNT_T_DECLARED
1300 #define _BLKSIZE_T_DECLARED
1302 #define __clock_t_defined
1303 #define _CLOCK_T_DECLARED
1305 #define __daddr_t_defined
1307 #define __caddr_t_defined
1310 #define _FSBLKCNT_T_DECLARED
1312 #define _ID_T_DECLARED
1314 #define _INO_T_DECLARED
1316 #define _OFF_T_DECLARED
1318 #define _DEV_T_DECLARED
1320 #define _UID_T_DECLARED
1322 #define _GID_T_DECLARED
1324 #define _PID_T_DECLARED
1326 #define _KEY_T_DECLARED
1328 #define _SSIZE_T_DECLARED
1330 #define _MODE_T_DECLARED
1332 #define _NLINK_T_DECLARED
1334 #define __clockid_t_defined
1335 #define _CLOCKID_T_DECLARED
1337 #define __timer_t_defined
1338 #define _TIMER_T_DECLARED
1340 #define _USECONDS_T_DECLARED
1342 #define _SYS__PTHREADTYPES_H_
1343 #define _SYS_CPUSET_H_
1345 #define __CPU_SETSIZE 1024
1346 #define __NCPUBITS (8 * sizeof (__cpu_mask))
1347 #define __CPU_GROUPMAX (__CPU_SETSIZE / __NCPUBITS)
1348 #define __CPUELT(cpu) ((cpu) / __NCPUBITS)
1349 #define __CPUMASK(cpu) ((__cpu_mask) 1 << ((cpu) % __NCPUBITS))
1355 #define CPU_ALLOC_SIZE(num) ((num+__NCPUBITS-1) / __NCPUBITS) * sizeof (__cpu_mask)
1356 #define CPU_ALLOC(num) __builtin_malloc (CPU_ALLOC_SIZE(num))
1357 #define CPU_FREE(set) __builtin_free (set)
1358 #define CPU_ZERO_S(siz,set) __builtin_memset (set, 0, siz)
1359 #define CPU_SET_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] |= __CPUMASK(cpu);
1360 #define CPU_CLR_S(cpu,siz,set) if (cpu < 8 * siz) (set)->__bits[__CPUELT(cpu)] &= ~(__CPUMASK(cpu));
1361 #define CPU_ISSET_S(cpu,siz,set) ({int res = 0; if (cpu < 8 * siz) res = !!((set)->__bits[__CPUELT(cpu)] & __CPUMASK(cpu)); res;})
1362 #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;})
1363 #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];
1364 #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];
1365 #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];
1366 #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;})
1367 #define CPU_ZERO(set) CPU_ZERO_S(sizeof (cpu_set_t), set)
1368 #define CPU_SET(cpu,set) CPU_SET_S(cpu, sizeof (cpu_set_t), set)
1369 #define CPU_CLR(cpu,set) CPU_CLR_S(cpu, sizeof (cpu_set_t), set)
1370 #define CPU_ISSET(cpu,set) CPU_ISSET_S(cpu, sizeof (cpu_set_t), set)
1371 #define CPU_COUNT(set) CPU_COUNT_S(sizeof (cpu_set_t), set)
1372 #define CPU_AND(dst,src1,src2) CPU_AND_S(sizeof (cpu_set_t), dst, src1, src2)
1373 #define CPU_OR(dst,src1,src2) CPU_OR_S(sizeof (cpu_set_t), dst, src1, src2)
1374 #define CPU_XOR(dst,src1,src2) CPU_XOR_S(sizeof (cpu_set_t), dst, src1, src2)
1375 #define CPU_EQUAL(src1,src2) CPU_EQUAL_S(sizeof (cpu_set_t), src1, src2)
1376 #define CPU_SETSIZE __CPU_SETSIZE
1396 #define __LONG_LONG_PAIR(HI,LO) LO, HI
1397 #define _BITS_BYTESWAP_H
1398 static __inline
unsigned short
1399 __bswap_16 (
unsigned short __x)
1401 return (__x >> 8) | (__x << 8);
1403 static __inline
unsigned int
1404 __bswap_32 (
unsigned int __x)
1406 return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
1408 static __inline
unsigned long long
1409 __bswap_64 (
unsigned long long __x)
1411 return (((
unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
1413 #define htobe16(x) __bswap_16(x)
1414 #define htobe32(x) __bswap_32(x)
1415 #define htobe64(x) __bswap_64(x)
1416 #define be16toh(x) __bswap_16(x)
1417 #define be32toh(x) __bswap_32(x)
1418 #define be64toh(x) __bswap_64(x)
1419 #define htole16(x) (x)
1420 #define htole32(x) (x)
1421 #define htole64(x) (x)
1422 #define le16toh(x) (x)
1423 #define le32toh(x) (x)
1424 #define le64toh(x) (x)
1425 #define _WORDSIZE_H 1
1426 #define __WORDSIZE 32
1427 #define __timespec_t_defined
1429 #define __timestruc_t_defined
1439 #define __BIT_TYPES_DEFINED__ 1
1440 #define __vm_offset_t_defined
1442 #define __vm_size_t_defined
1444 #define __vm_object_t_defined
1446 #define __addr_t_defined
1448 #define _SYS_SYSMACROS_H
1449 static __inline__
int gnu_dev_major(
dev_t);
1450 static __inline__
int gnu_dev_minor(
dev_t);
1451 static __inline__
dev_t gnu_dev_makedev(
int,
int);
1452 static __inline__
int
1453 gnu_dev_major(
dev_t dev)
1455 return (
int)(((dev) >> 16) & 0xffff);
1457 static __inline__
int
1458 gnu_dev_minor(
dev_t dev)
1460 return (
int)((dev) & 0xffff);
1462 static __inline__
dev_t
1463 gnu_dev_makedev(
int maj,
int min)
1465 return (((maj) << 16) | ((min) & 0xffff));
1467 #define major(dev) gnu_dev_major(dev)
1468 #define minor(dev) gnu_dev_minor(dev)
1469 #define makedev(maj,min) gnu_dev_makedev(maj, min)
1470 #undef __need_inttypes
1473 #define __FILE_defined
1475 #define _SYS_STDIO_H_
1476 #define _flockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_lock ((_LOCK_T *)&(fp)->_lock); })
1477 #define _ftrylockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __cygwin_lock_trylock ((_LOCK_T *)&(fp)->_lock))
1478 #define _funlockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_unlock ((_LOCK_T *)&(fp)->_lock); })
1483 #define __SLBF 0x0001
1484 #define __SNBF 0x0002
1485 #define __SRD 0x0004
1486 #define __SWR 0x0008
1487 #define __SRW 0x0010
1488 #define __SEOF 0x0020
1489 #define __SERR 0x0040
1490 #define __SMBF 0x0080
1491 #define __SAPP 0x0100
1492 #define __SSTR 0x0200
1493 #define __SOPT 0x0400
1494 #define __SNPT 0x0800
1495 #define __SOFF 0x1000
1496 #define __SORD 0x2000
1497 #define __SCLE 0x4000
1498 #define __SL64 0x8000
1499 #define __SNLK 0x0001
1500 #define __SWID 0x2000
1506 #define FOPEN_MAX 20
1507 #define FILENAME_MAX __FILENAME_MAX__
1508 #define L_tmpnam FILENAME_MAX
1509 #define P_tmpdir "/tmp"
1514 #define stdin (_REENT->_stdin)
1515 #define stdout (_REENT->_stdout)
1516 #define stderr (_REENT->_stderr)
1517 #define _stdin_r(x) ((x)->_stdin)
1518 #define _stdout_r(x) ((x)->_stdout)
1519 #define _stderr_r(x) ((x)->_stderr)
1520 #define __VALIST __gnuc_va_list
1801 int (*__readfn)(
void *__c,
char *
__buf,
1803 int (*__writefn)(
void *__c,
const char *
__buf,
1806 int (*__closefn)(
void *__c));
1808 int (*__readfn)(
void *__c,
char *
__buf,
1810 int (*__writefn)(
void *__c,
const char *
__buf,
1813 int (*__closefn)(
void *__c));
1814 #define fropen(__cookie,__fn) funopen(__cookie, __fn, (int (*)())0, (fpos_t (*)())0, (int (*)())0)
1815 #define fwopen(__cookie,__fn) funopen(__cookie, (int (*)())0, __fn, (fpos_t (*)())0, (int (*)())0)
1833 #define __sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
1834 static __inline__
int __sgetc_r(
struct _reent *__ptr,
FILE *__p);
1835 static __inline__
int __sgetc_r(
struct _reent *__ptr,
FILE *__p)
1837 int __c = (--(__p)->_r < 0 ?
__srget_r(__ptr, __p) : (
int)(*(__p)->_p++));
1838 if ((__p->
_flags & 0x4000) && (__c ==
'\r'))
1840 int __c2 = (--(__p)->_r < 0 ?
__srget_r(__ptr, __p) : (
int)(*(__p)->_p++));
1848 static __inline__
int __sputc_r(
struct _reent *_ptr,
int _c,
FILE *_p) {
1849 if ((_p->
_flags & 0x4000) && _c ==
'\n')
1850 __sputc_r (_ptr,
'\r', _p);
1851 if (--_p->
_w >= 0 || (_p->
_w >= _p->
_lbfsize && (
char)_c !=
'\n'))
1852 return (*_p->
_p++ = _c);
1856 #define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))
1857 #define __sferror(p) ((int)(((p)->_flags & __SERR) != 0))
1858 #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
1859 #define __sfileno(p) ((p)->_file)
1860 #define feof(p) __sfeof(p)
1861 #define ferror(p) __sferror(p)
1862 #define clearerr(p) __sclearerr(p)
1863 #define feof_unlocked(p) __sfeof(p)
1864 #define ferror_unlocked(p) __sferror(p)
1865 #define clearerr_unlocked(p) __sclearerr(p)
1867 _getchar_unlocked(
void)
1871 return (__sgetc_r(_ptr, ((_ptr)->
_stdin)));
1874 _putchar_unlocked(
int _c)
1878 return (__sputc_r(_ptr, _c, ((_ptr)->
_stdout)));
1880 #define getchar_unlocked() _getchar_unlocked()
1881 #define putchar_unlocked(_c) _putchar_unlocked(_c)
1882 #define fast_putc(x,p) (--(p)->_w < 0 ? __swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
1884 #define L_ctermid 16
1886 #define _SSP_STDIO_H_
1888 #define __ssp_real_(fun) __ssp_real_ ## fun
1889 #define __ssp_real(fun) __ssp_real_(fun)
1890 #define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
1891 #define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1)
1892 #define __ssp_bos0(ptr) __builtin_object_size(ptr, 0)
1893 #define __ssp_check(buf,len,bos) if (bos(buf) != (size_t)-1 && len > bos(buf)) __chk_fail()
1894 #define __ssp_decl(rtype,fun,args) rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); __ssp_inline rtype fun args
1895 #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; }
1896 #define __ssp_redirect(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos)
1897 #define __ssp_redirect0(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos0)
1898 #define __ssp_overlap(a,b,l) (((a) <= (b) && (b) < (a) + (l)) || ((b) <= (a) && (a) < (b) + (l)))
1917 #define sprintf(str,...) __builtin___sprintf_chk(str, 0, __ssp_bos(str), __VA_ARGS__)
1918 #define vsprintf(str,fmt,ap) __builtin___vsprintf_chk(str, 0, __ssp_bos(str), fmt, ap)
1919 #define snprintf(str,len,...) __builtin___snprintf_chk(str, len, 0, __ssp_bos(str), __VA_ARGS__)
1920 #define vsnprintf(str,len,fmt,ap) __builtin___vsnprintf_chk(str, len, 0, __ssp_bos(str), fmt, ap)
1921 #define gets(str) __gets_chk(str, __ssp_bos(str))
1946 #define __need_size_t
1948 #undef __need_ptrdiff_t
1949 #undef __need_size_t
1950 #undef __need_wchar_t
1952 #define NULL ((void *)0)
1954 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
1955 #define _MACHTIME_H_
1956 #define _CLOCKS_PER_SEC_ 1000
1957 #define CLOCKS_PER_SEC _CLOCKS_PER_SEC_
1958 #define CLK_TCK CLOCKS_PER_SEC
1959 #define _SYS__LOCALE_H
1986 size_t _maxsize,
const char *
__restrict _fmt,
2026 #define tzname _tzname
2027 #define _CYGWIN_TIME_H
2031 #define TIMER_RELTIME 0
2036 #define _SYS_SIGNAL_H
2037 #define _CYGWIN_SIGNAL_H
2085 #define __COPY_CONTEXT_SIZE 204
2099 #pragma pack(push,4)
2116 #define __SI_PAD_SIZE 32
2128 __extension__
struct
2135 __extension__
struct
2141 __extension__
struct
2187 #define SI_USER SI_USER
2188 #define SI_ASYNCIO SI_ASYNCIO
2189 #define SI_MESGQ SI_MESGQ
2190 #define SI_TIMER SI_TIMER
2191 #define SI_QUEUE SI_QUEUE
2192 #define SI_KERNEL SI_KERNEL
2193 #define ILL_ILLOPC ILL_ILLOPC
2194 #define ILL_ILLOPN ILL_ILLOPN
2195 #define ILL_ILLADR ILL_ILLADR
2196 #define ILL_ILLTRP ILL_ILLTRP
2197 #define ILL_PRVOPC ILL_PRVOPC
2198 #define ILL_PRVREG ILL_PRVREG
2199 #define ILL_COPROC ILL_COPROC
2200 #define ILL_BADSTK ILL_BADSTK
2201 #define FPE_INTDIV FPE_INTDIV
2202 #define FPE_INTOVF FPE_INTOVF
2203 #define FPE_FLTDIV FPE_FLTDIV
2204 #define FPE_FLTOVF FPE_FLTOVF
2205 #define FPE_FLTUND FPE_FLTUND
2206 #define FPE_FLTRES FPE_FLTRES
2207 #define FPE_FLTINV FPE_FLTINV
2208 #define FPE_FLTSUB FPE_FLTSUB
2209 #define SEGV_MAPERR SEGV_MAPERR
2210 #define SEGV_ACCERR SEGV_ACCERR
2211 #define BUS_ADRALN BUS_ADRALN
2212 #define BUS_ADRERR BUS_ADRERR
2213 #define BUS_OBJERR BUS_OBJERR
2214 #define CLD_EXITED CLD_EXITED
2215 #define CLD_KILLED CLD_KILLED
2216 #define CLD_DUMPED CLD_DUMPED
2217 #define CLD_TRAPPED CLD_TRAPPED
2218 #define CLD_STOPPED CLD_STOPPED
2219 #define CLD_CONTINUED CLD_CONTINUED
2226 #define SIGEV_SIGNAL SIGEV_SIGNAL
2227 #define SIGEV_NONE SIGEV_NONE
2228 #define SIGEV_THREAD SIGEV_THREAD
2240 #define SA_NOCLDSTOP 1
2241 #define SA_SIGINFO 2
2242 #define SA_RESTART 0x10000000
2243 #define SA_ONSTACK 0x20000000
2244 #define SA_NODEFER 0x40000000
2245 #define SA_RESETHAND 0x80000000
2246 #define SA_ONESHOT SA_RESETHAND
2247 #define SA_NOMASK SA_NODEFER
2248 #define _SA_INTERNAL_MASK 0xf000
2250 #define MINSIGSTKSZ 8192
2252 #define SIGSTKSZ 32768
2259 #define SIGIOT SIGABRT
2278 #define SIGPOLL SIGIO
2281 #define SIGVTALRM 26
2285 #define SIGPWR SIGLOST
2291 #define SIGRTMAX (_NSIG - 1)
2292 #define SIG_HOLD ((_sig_func_ptr)2)
2302 extern const char __attribute__((dllimport)) *sys_sigabbrev[];
2303 extern const char __attribute__((dllimport)) *sys_siglist[];
2304 #define SS_ONSTACK 0x1
2305 #define SS_DISABLE 0x2
2311 #define SIG_SETMASK 0
2313 #define SIG_UNBLOCK 2
2333 #define _SYS_UCONTEXT_H_
2337 struct __ucontext *uc_link;
2340 unsigned long int uc_flags;
2346 #define SIG_DFL ((_sig_func_ptr)0)
2347 #define SIG_IGN ((_sig_func_ptr)1)
2348 #define SIG_ERR ((_sig_func_ptr)-1)
2371 #define CLOCK_ENABLED 1
2372 #define CLOCK_DISABLED 0
2373 #define CLOCK_ALLOWED 1
2374 #define CLOCK_DISALLOWED 0
2375 #define TIMER_ABSTIME 4
2376 #define CLOCK_REALTIME_COARSE ((clockid_t) 0)
2377 #define CLOCK_REALTIME ((clockid_t) 1)
2378 #define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2)
2379 #define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3)
2380 #define CLOCK_MONOTONIC ((clockid_t) 4)
2381 #define CLOCK_MONOTONIC_RAW ((clockid_t) 5)
2382 #define CLOCK_MONOTONIC_COARSE ((clockid_t) 6)
2383 #define CLOCK_BOOTTIME ((clockid_t) 7)
2384 #define CLOCK_REALTIME_ALARM ((clockid_t) 8)
2385 #define CLOCK_BOOTTIME_ALARM ((clockid_t) 9)
2389 #define _CYGWIN_STAT_H
2407 #define st_atime st_atim.tv_sec
2408 #define st_mtime st_mtim.tv_sec
2409 #define st_ctime st_ctim.tv_sec
2410 #define st_birthtime st_birthtim.tv_sec
2411 #define S_TYPEISMQ(buf) ((void)(buf)->st_mode,0)
2412 #define S_TYPEISSEM(buf) ((void)(buf)->st_mode,0)
2413 #define S_TYPEISSHM(buf) ((void)(buf)->st_mode,0)
2414 #define _IFMT 0170000
2415 #define _IFDIR 0040000
2416 #define _IFCHR 0020000
2417 #define _IFBLK 0060000
2418 #define _IFREG 0100000
2419 #define _IFLNK 0120000
2420 #define _IFSOCK 0140000
2421 #define _IFIFO 0010000
2422 #define S_BLKSIZE 1024
2423 #define S_ISUID 0004000
2424 #define S_ISGID 0002000
2425 #define S_ISVTX 0001000
2426 #define S_IREAD 0000400
2427 #define S_IWRITE 0000200
2428 #define S_IEXEC 0000100
2429 #define S_ENFMT 0002000
2430 #define S_IFMT _IFMT
2431 #define S_IFDIR _IFDIR
2432 #define S_IFCHR _IFCHR
2433 #define S_IFBLK _IFBLK
2434 #define S_IFREG _IFREG
2435 #define S_IFLNK _IFLNK
2436 #define S_IFSOCK _IFSOCK
2437 #define S_IFIFO _IFIFO
2438 #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
2439 #define S_IRUSR 0000400
2440 #define S_IWUSR 0000200
2441 #define S_IXUSR 0000100
2442 #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
2443 #define S_IRGRP 0000040
2444 #define S_IWGRP 0000020
2445 #define S_IXGRP 0000010
2446 #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
2447 #define S_IROTH 0000004
2448 #define S_IWOTH 0000002
2449 #define S_IXOTH 0000001
2450 #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
2451 #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
2452 #define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
2453 #define S_ISBLK(m) (((m)&_IFMT) == _IFBLK)
2454 #define S_ISCHR(m) (((m)&_IFMT) == _IFCHR)
2455 #define S_ISDIR(m) (((m)&_IFMT) == _IFDIR)
2456 #define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
2457 #define S_ISREG(m) (((m)&_IFMT) == _IFREG)
2458 #define S_ISLNK(m) (((m)&_IFMT) == _IFLNK)
2459 #define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
2460 #define UTIME_NOW -2L
2461 #define UTIME_OMIT -1L
2479 #define __need_size_t
2480 #define __need_wchar_t
2482 #undef __need_ptrdiff_t
2483 #undef __need_size_t
2484 #undef __need_wchar_t
2486 #define NULL ((void *)0)
2488 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2489 #define _MACHSTDLIB_H_
2491 #define _NEWLIB_ALLOCA_H
2493 #define alloca(size) __builtin_alloca(size)
2494 #define _CYGWIN_STDLIB_H
2495 #define _CYGWIN_WAIT_H
2496 #define WAIT_ANY (pid_t)-1
2497 #define WAIT_MYPGRP (pid_t)0
2500 #define WCONTINUED 8
2501 #define __W_CONTINUED 0xffff
2502 #define WIFEXITED(_w) (((_w) & 0xff) == 0)
2503 #define WIFSIGNALED(_w) (((_w) & 0x7f) > 0 && (((_w) & 0x7f) < 0x7f))
2504 #define WIFSTOPPED(_w) (((_w) & 0xff) == 0x7f)
2505 #define WIFCONTINUED(_w) (((_w) & 0xffff) == __W_CONTINUED)
2506 #define WEXITSTATUS(_w) (((_w) >> 8) & 0xff)
2507 #define WTERMSIG(_w) ((_w) & 0x7f)
2508 #define WSTOPSIG WEXITSTATUS
2509 #define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & 0x80))
2524 #define _malloc_r(r,s) malloc (s)
2526 #define _free_r(r,p) free (p)
2528 #define _realloc_r(r,p,s) realloc (p, s)
2530 #define _calloc_r(r,s1,s2) calloc (s1, s2);
2532 #define _memalign_r(r,s1,s2) memalign (s1, s2);
2534 #define _mallinfo_r(r) mallinfo ()
2535 #undef _malloc_stats_r
2536 #define _malloc_stats_r(r) malloc_stats ()
2538 #define _mallopt_r(i1,i2) mallopt (i1, i2)
2539 #undef _malloc_usable_size_r
2540 #define _malloc_usable_size_r(r,p) malloc_usable_size (p)
2542 #define _valloc_r(r,s) valloc (s)
2544 #define _pvalloc_r(r,s) pvalloc (s)
2545 #undef _malloc_trim_r
2546 #define _malloc_trim_r(r,s) malloc_trim (s)
2548 #define _mstats_r(r,p) mstats (p)
2566 #define __compar_fn_t_defined
2568 #define EXIT_FAILURE 1
2569 #define EXIT_SUCCESS 0
2570 #define RAND_MAX __RAND_MAX
2572 #define MB_CUR_MAX __locale_mb_cur_max()
2620 char *
mktemp (
char *)
__attribute__ ((__deprecated__(
"the use of `mktemp' is dangerous; use `mkstemp' instead")));
2639 #define strtodf strtof
2658 int on_exit (
void (*__func)(
int,
void *),
void *__arg);
2663 int setenv (
const char *__string,
const char *__value,
int __overwrite);
2664 int _setenv_r (
struct _reent *,
const char *__string,
const char *__value,
int __overwrite);
2668 char *
utoa (
unsigned,
char *,
int);
2716 #define _SSP_STDLIB_H_
2720 if (
__buf != ((
void *)0))
2727 if (
__buf != ((
void *)0))
2733 #define __need_size_t
2735 #undef __need_ptrdiff_t
2736 #undef __need_size_t
2737 #undef __need_wchar_t
2739 #define NULL ((void *)0)
2741 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2745 void bcopy(
const void *,
void *,
size_t);
2761 #define _SSP_STRINGS_H_
2762 #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))
2763 #define bzero(dst,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : __memset_ichk(dst, 0, len))
2767 int memcmp (
const void *,
const void *,
size_t);
2769 void *
memmove (
void *,
const void *,
size_t);
2772 char *
strchr (
const char *,
int);
2783 char *
strrchr (
const char *,
int);
2785 char *
strstr (
const char *,
const char *);
2796 void *
memmem (
const void *,
size_t,
const void *,
size_t);
2809 size_t strlcat (
char *,
const char *,
size_t);
2810 size_t strlcpy (
char *,
const char *,
size_t);
2819 #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);}))
2820 #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);}))
2821 #define basename basename
2824 #define _SSP_STRING_H_
2836 #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))
2837 #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))
2838 #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)); }
2839 #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)); }
2840 #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)); }
2842 extern __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)); }
2843 extern __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)); }
2844 extern __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)); }
2845 extern __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)); }
2847 extern __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)); }
2850 extern __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)); }
2851 extern __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)); }
2853 #define memcpy(dst,src,len) __ssp_bos_check3(memcpy, dst, src, len)
2854 #define memmove(dst,src,len) __ssp_bos_check3(memmove, dst, src, len)
2855 #define mempcpy(dst,src,len) __ssp_bos_check3(mempcpy, dst, src, len)
2856 #define memset(dst,val,len) __ssp_bos_check3(memset, dst, val, len)
2857 #define stpcpy(dst,src) __ssp_bos_check2(stpcpy, dst, src)
2858 #define stpncpy(dst,src,len) __ssp_bos_check3(stpncpy, dst, src, len)
2859 #define strcpy(dst,src) __ssp_bos_check2(strcpy, dst, src)
2860 #define strcat(dst,src) __ssp_bos_check2(strcat, dst, src)
2861 #define strncpy(dst,src,len) __ssp_bos_check3(strncpy, dst, src, len)
2862 #define strncat(dst,src,len) __ssp_bos_check3(strncat, dst, src, len)
2864 #define _SYS__INTSUP_H
2865 #define __STDINT_EXP(x) __ ##x ##__
2887 #define __int20__ +2
2890 #define _INTPTR_EQ_INT
2894 #define __INT64 "ll"
2895 #define __FAST8 "hh"
2898 #define __FAST64 "ll"
2899 #define __LEAST8 "hh"
2900 #define __LEAST16 "h"
2902 #define __LEAST64 "ll"
2922 #define __int_least8_t_defined 1
2925 #define __int_least16_t_defined 1
2928 #define __int_least32_t_defined 1
2931 #define __int_least64_t_defined 1
2934 #define __int_fast8_t_defined 1
2937 #define __int_fast16_t_defined 1
2940 #define __int_fast32_t_defined 1
2943 #define __int_fast64_t_defined 1
2944 #define INTPTR_MIN (-__INTPTR_MAX__ - 1)
2945 #define INTPTR_MAX (__INTPTR_MAX__)
2946 #define UINTPTR_MAX (__UINTPTR_MAX__)
2947 #define INT8_MIN (-__INT8_MAX__ - 1)
2948 #define INT8_MAX (__INT8_MAX__)
2949 #define UINT8_MAX (__UINT8_MAX__)
2950 #define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
2951 #define INT_LEAST8_MAX (__INT_LEAST8_MAX__)
2952 #define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)
2953 #define INT16_MIN (-__INT16_MAX__ - 1)
2954 #define INT16_MAX (__INT16_MAX__)
2955 #define UINT16_MAX (__UINT16_MAX__)
2956 #define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
2957 #define INT_LEAST16_MAX (__INT_LEAST16_MAX__)
2958 #define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)
2959 #define INT32_MIN (-__INT32_MAX__ - 1)
2960 #define INT32_MAX (__INT32_MAX__)
2961 #define UINT32_MAX (__UINT32_MAX__)
2962 #define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
2963 #define INT_LEAST32_MAX (__INT_LEAST32_MAX__)
2964 #define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)
2965 #define INT64_MIN (-__INT64_MAX__ - 1)
2966 #define INT64_MAX (__INT64_MAX__)
2967 #define UINT64_MAX (__UINT64_MAX__)
2968 #define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
2969 #define INT_LEAST64_MAX (__INT_LEAST64_MAX__)
2970 #define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)
2971 #define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
2972 #define INT_FAST8_MAX (__INT_FAST8_MAX__)
2973 #define UINT_FAST8_MAX (__UINT_FAST8_MAX__)
2974 #define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
2975 #define INT_FAST16_MAX (__INT_FAST16_MAX__)
2976 #define UINT_FAST16_MAX (__UINT_FAST16_MAX__)
2977 #define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
2978 #define INT_FAST32_MAX (__INT_FAST32_MAX__)
2979 #define UINT_FAST32_MAX (__UINT_FAST32_MAX__)
2980 #define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
2981 #define INT_FAST64_MAX (__INT_FAST64_MAX__)
2982 #define UINT_FAST64_MAX (__UINT_FAST64_MAX__)
2983 #define INTMAX_MAX (__INTMAX_MAX__)
2984 #define INTMAX_MIN (-INTMAX_MAX - 1)
2985 #define UINTMAX_MAX (__UINTMAX_MAX__)
2986 #define SIZE_MAX (__SIZE_MAX__)
2987 #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
2988 #define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))
2989 #define PTRDIFF_MAX (__PTRDIFF_MAX__)
2990 #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
2991 #define WCHAR_MIN (__WCHAR_MIN__)
2992 #define WCHAR_MAX (__WCHAR_MAX__)
2993 #define WINT_MAX (__WINT_MAX__)
2994 #define WINT_MIN (__WINT_MIN__)
2995 #define INT8_C(x) __INT8_C(x)
2996 #define UINT8_C(x) __UINT8_C(x)
2997 #define INT16_C(x) __INT16_C(x)
2998 #define UINT16_C(x) __UINT16_C(x)
2999 #define INT32_C(x) __INT32_C(x)
3000 #define UINT32_C(x) __UINT32_C(x)
3001 #define INT64_C(x) __INT64_C(x)
3002 #define UINT64_C(x) __UINT64_C(x)
3003 #define INTMAX_C(x) __INTMAX_C(x)
3004 #define UINTMAX_C(x) __UINTMAX_C(x)
3005 #define _GCC_WRAP_STDINT_H
3006 #define __need_wchar_t
3007 #undef __need_ptrdiff_t
3008 #undef __need_size_t
3009 #undef __need_wchar_t
3011 #define NULL ((void *)0)
3013 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3014 #define __STRINGIFY(a) #a
3015 #define __PRI8(x) __INT8 __STRINGIFY(x)
3016 #define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x)
3017 #define __PRI8FAST(x) __FAST8 __STRINGIFY(x)
3018 #define __SCN8(x) __INT8 __STRINGIFY(x)
3019 #define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x)
3020 #define __SCN8FAST(x) __FAST8 __STRINGIFY(x)
3021 #define PRId8 __PRI8(d)
3022 #define PRIi8 __PRI8(i)
3023 #define PRIo8 __PRI8(o)
3024 #define PRIu8 __PRI8(u)
3025 #define PRIx8 __PRI8(x)
3026 #define PRIX8 __PRI8(X)
3027 #define SCNd8 __SCN8(d)
3028 #define SCNi8 __SCN8(i)
3029 #define SCNo8 __SCN8(o)
3030 #define SCNu8 __SCN8(u)
3031 #define SCNx8 __SCN8(x)
3032 #define PRIdLEAST8 __PRI8LEAST(d)
3033 #define PRIiLEAST8 __PRI8LEAST(i)
3034 #define PRIoLEAST8 __PRI8LEAST(o)
3035 #define PRIuLEAST8 __PRI8LEAST(u)
3036 #define PRIxLEAST8 __PRI8LEAST(x)
3037 #define PRIXLEAST8 __PRI8LEAST(X)
3038 #define SCNdLEAST8 __SCN8LEAST(d)
3039 #define SCNiLEAST8 __SCN8LEAST(i)
3040 #define SCNoLEAST8 __SCN8LEAST(o)
3041 #define SCNuLEAST8 __SCN8LEAST(u)
3042 #define SCNxLEAST8 __SCN8LEAST(x)
3043 #define PRIdFAST8 __PRI8FAST(d)
3044 #define PRIiFAST8 __PRI8FAST(i)
3045 #define PRIoFAST8 __PRI8FAST(o)
3046 #define PRIuFAST8 __PRI8FAST(u)
3047 #define PRIxFAST8 __PRI8FAST(x)
3048 #define PRIXFAST8 __PRI8FAST(X)
3049 #define SCNdFAST8 __SCN8FAST(d)
3050 #define SCNiFAST8 __SCN8FAST(i)
3051 #define SCNoFAST8 __SCN8FAST(o)
3052 #define SCNuFAST8 __SCN8FAST(u)
3053 #define SCNxFAST8 __SCN8FAST(x)
3054 #define __PRI16(x) __INT16 __STRINGIFY(x)
3055 #define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x)
3056 #define __PRI16FAST(x) __FAST16 __STRINGIFY(x)
3057 #define __SCN16(x) __INT16 __STRINGIFY(x)
3058 #define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x)
3059 #define __SCN16FAST(x) __FAST16 __STRINGIFY(x)
3060 #define PRId16 __PRI16(d)
3061 #define PRIi16 __PRI16(i)
3062 #define PRIo16 __PRI16(o)
3063 #define PRIu16 __PRI16(u)
3064 #define PRIx16 __PRI16(x)
3065 #define PRIX16 __PRI16(X)
3066 #define SCNd16 __SCN16(d)
3067 #define SCNi16 __SCN16(i)
3068 #define SCNo16 __SCN16(o)
3069 #define SCNu16 __SCN16(u)
3070 #define SCNx16 __SCN16(x)
3071 #define PRIdLEAST16 __PRI16LEAST(d)
3072 #define PRIiLEAST16 __PRI16LEAST(i)
3073 #define PRIoLEAST16 __PRI16LEAST(o)
3074 #define PRIuLEAST16 __PRI16LEAST(u)
3075 #define PRIxLEAST16 __PRI16LEAST(x)
3076 #define PRIXLEAST16 __PRI16LEAST(X)
3077 #define SCNdLEAST16 __SCN16LEAST(d)
3078 #define SCNiLEAST16 __SCN16LEAST(i)
3079 #define SCNoLEAST16 __SCN16LEAST(o)
3080 #define SCNuLEAST16 __SCN16LEAST(u)
3081 #define SCNxLEAST16 __SCN16LEAST(x)
3082 #define PRIdFAST16 __PRI16FAST(d)
3083 #define PRIiFAST16 __PRI16FAST(i)
3084 #define PRIoFAST16 __PRI16FAST(o)
3085 #define PRIuFAST16 __PRI16FAST(u)
3086 #define PRIxFAST16 __PRI16FAST(x)
3087 #define PRIXFAST16 __PRI16FAST(X)
3088 #define SCNdFAST16 __SCN16FAST(d)
3089 #define SCNiFAST16 __SCN16FAST(i)
3090 #define SCNoFAST16 __SCN16FAST(o)
3091 #define SCNuFAST16 __SCN16FAST(u)
3092 #define SCNxFAST16 __SCN16FAST(x)
3093 #define __PRI32(x) __INT32 __STRINGIFY(x)
3094 #define __SCN32(x) __INT32 __STRINGIFY(x)
3095 #define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x)
3096 #define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x)
3097 #define __PRI32FAST(x) __FAST32 __STRINGIFY(x)
3098 #define __SCN32FAST(x) __FAST32 __STRINGIFY(x)
3099 #define PRId32 __PRI32(d)
3100 #define PRIi32 __PRI32(i)
3101 #define PRIo32 __PRI32(o)
3102 #define PRIu32 __PRI32(u)
3103 #define PRIx32 __PRI32(x)
3104 #define PRIX32 __PRI32(X)
3105 #define SCNd32 __SCN32(d)
3106 #define SCNi32 __SCN32(i)
3107 #define SCNo32 __SCN32(o)
3108 #define SCNu32 __SCN32(u)
3109 #define SCNx32 __SCN32(x)
3110 #define PRIdLEAST32 __PRI32LEAST(d)
3111 #define PRIiLEAST32 __PRI32LEAST(i)
3112 #define PRIoLEAST32 __PRI32LEAST(o)
3113 #define PRIuLEAST32 __PRI32LEAST(u)
3114 #define PRIxLEAST32 __PRI32LEAST(x)
3115 #define PRIXLEAST32 __PRI32LEAST(X)
3116 #define SCNdLEAST32 __SCN32LEAST(d)
3117 #define SCNiLEAST32 __SCN32LEAST(i)
3118 #define SCNoLEAST32 __SCN32LEAST(o)
3119 #define SCNuLEAST32 __SCN32LEAST(u)
3120 #define SCNxLEAST32 __SCN32LEAST(x)
3121 #define PRIdFAST32 __PRI32FAST(d)
3122 #define PRIiFAST32 __PRI32FAST(i)
3123 #define PRIoFAST32 __PRI32FAST(o)
3124 #define PRIuFAST32 __PRI32FAST(u)
3125 #define PRIxFAST32 __PRI32FAST(x)
3126 #define PRIXFAST32 __PRI32FAST(X)
3127 #define SCNdFAST32 __SCN32FAST(d)
3128 #define SCNiFAST32 __SCN32FAST(i)
3129 #define SCNoFAST32 __SCN32FAST(o)
3130 #define SCNuFAST32 __SCN32FAST(u)
3131 #define SCNxFAST32 __SCN32FAST(x)
3132 #define __PRI64(x) __INT64 __STRINGIFY(x)
3133 #define __SCN64(x) __INT64 __STRINGIFY(x)
3134 #define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x)
3135 #define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x)
3136 #define __PRI64FAST(x) __FAST64 __STRINGIFY(x)
3137 #define __SCN64FAST(x) __FAST64 __STRINGIFY(x)
3138 #define PRId64 __PRI64(d)
3139 #define PRIi64 __PRI64(i)
3140 #define PRIo64 __PRI64(o)
3141 #define PRIu64 __PRI64(u)
3142 #define PRIx64 __PRI64(x)
3143 #define PRIX64 __PRI64(X)
3144 #define SCNd64 __SCN64(d)
3145 #define SCNi64 __SCN64(i)
3146 #define SCNo64 __SCN64(o)
3147 #define SCNu64 __SCN64(u)
3148 #define SCNx64 __SCN64(x)
3149 #define PRIdLEAST64 __PRI64LEAST(d)
3150 #define PRIiLEAST64 __PRI64LEAST(i)
3151 #define PRIoLEAST64 __PRI64LEAST(o)
3152 #define PRIuLEAST64 __PRI64LEAST(u)
3153 #define PRIxLEAST64 __PRI64LEAST(x)
3154 #define PRIXLEAST64 __PRI64LEAST(X)
3155 #define SCNdLEAST64 __SCN64LEAST(d)
3156 #define SCNiLEAST64 __SCN64LEAST(i)
3157 #define SCNoLEAST64 __SCN64LEAST(o)
3158 #define SCNuLEAST64 __SCN64LEAST(u)
3159 #define SCNxLEAST64 __SCN64LEAST(x)
3160 #define PRIdFAST64 __PRI64FAST(d)
3161 #define PRIiFAST64 __PRI64FAST(i)
3162 #define PRIoFAST64 __PRI64FAST(o)
3163 #define PRIuFAST64 __PRI64FAST(u)
3164 #define PRIxFAST64 __PRI64FAST(x)
3165 #define PRIXFAST64 __PRI64FAST(X)
3166 #define SCNdFAST64 __SCN64FAST(d)
3167 #define SCNiFAST64 __SCN64FAST(i)
3168 #define SCNoFAST64 __SCN64FAST(o)
3169 #define SCNuFAST64 __SCN64FAST(u)
3170 #define SCNxFAST64 __SCN64FAST(x)
3171 #define __PRIMAX(x) __STRINGIFY(ll ##x)
3172 #define __SCNMAX(x) __STRINGIFY(ll ##x)
3173 #define PRIdMAX __PRIMAX(d)
3174 #define PRIiMAX __PRIMAX(i)
3175 #define PRIoMAX __PRIMAX(o)
3176 #define PRIuMAX __PRIMAX(u)
3177 #define PRIxMAX __PRIMAX(x)
3178 #define PRIXMAX __PRIMAX(X)
3179 #define SCNdMAX __SCNMAX(d)
3180 #define SCNiMAX __SCNMAX(i)
3181 #define SCNoMAX __SCNMAX(o)
3182 #define SCNuMAX __SCNMAX(u)
3183 #define SCNxMAX __SCNMAX(x)
3184 #define __PRIPTR(x) __STRINGIFY(x)
3185 #define __SCNPTR(x) __STRINGIFY(x)
3186 #define PRIdPTR __PRIPTR(d)
3187 #define PRIiPTR __PRIPTR(i)
3188 #define PRIoPTR __PRIPTR(o)
3189 #define PRIuPTR __PRIPTR(u)
3190 #define PRIxPTR __PRIPTR(x)
3191 #define PRIXPTR __PRIPTR(X)
3192 #define SCNdPTR __SCNPTR(d)
3193 #define SCNiPTR __SCNPTR(i)
3194 #define SCNoPTR __SCNPTR(o)
3195 #define SCNuPTR __SCNPTR(u)
3196 #define SCNxPTR __SCNPTR(x)
3217 #define alignas _Alignas
3218 #define alignof _Alignof
3219 #define __alignas_is_defined 1
3220 #define __alignof_is_defined 1
3222 #define _SYS_UNISTD_H
3223 #define __need_size_t
3224 #define __need_ptrdiff_t
3225 #undef __need_ptrdiff_t
3226 #undef __need_size_t
3227 #undef __need_wchar_t
3229 #define NULL ((void *)0)
3231 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3242 char *
crypt (
const char *__key,
const char *__salt);
3245 int dup2 (
int __fildes,
int __fildes2);
3246 int dup3 (
int __fildes,
int __fildes2,
int flags);
3253 int execlp (
const char *__file,
const char *, ...);
3254 int execlpe (
const char *__file,
const char *, ...);
3256 int execve (
const char *
__path,
char *
const __argv[],
char *
const __envp[]);
3257 int execvp (
const char *__file,
char *
const __argv[]);
3258 int execvpe (
const char *__file,
char *
const __argv[],
char *
const __envp[]);
3264 int fexecve (
int __fd,
char *
const __argv[],
char *
const __envp[]);
3291 int iruserok (
unsigned long raddr,
int superuser,
const char *ruser,
const char *luser);
3295 int link (
const char *__path1,
const char *__path2);
3296 int linkat (
int __dirfd1,
const char *__path1,
int __dirfd2,
const char *__path2,
int __flags);
3315 int ruserok (
const char *rhost,
int superuser,
const char *ruser,
const char *luser);
3329 unsigned sleep (
unsigned int __seconds);
3340 #define __UNISTD_GETOPT__
3341 #define __GETOPT_H__
3347 int getopt (
int,
char *
const *,
const char *);
3348 #undef __UNISTD_GETOPT__
3359 int symlink (
const char *__name1,
const char *__name2);
3371 #define STDIN_FILENO 0
3372 #define STDOUT_FILENO 1
3373 #define STDERR_FILENO 2
3374 #define _SC_ARG_MAX 0
3375 #define _SC_CHILD_MAX 1
3376 #define _SC_CLK_TCK 2
3377 #define _SC_NGROUPS_MAX 3
3378 #define _SC_OPEN_MAX 4
3379 #define _SC_JOB_CONTROL 5
3380 #define _SC_SAVED_IDS 6
3381 #define _SC_VERSION 7
3382 #define _SC_PAGESIZE 8
3383 #define _SC_PAGE_SIZE _SC_PAGESIZE
3384 #define _SC_NPROCESSORS_CONF 9
3385 #define _SC_NPROCESSORS_ONLN 10
3386 #define _SC_PHYS_PAGES 11
3387 #define _SC_AVPHYS_PAGES 12
3388 #define _SC_MQ_OPEN_MAX 13
3389 #define _SC_MQ_PRIO_MAX 14
3390 #define _SC_RTSIG_MAX 15
3391 #define _SC_SEM_NSEMS_MAX 16
3392 #define _SC_SEM_VALUE_MAX 17
3393 #define _SC_SIGQUEUE_MAX 18
3394 #define _SC_TIMER_MAX 19
3395 #define _SC_TZNAME_MAX 20
3396 #define _SC_ASYNCHRONOUS_IO 21
3397 #define _SC_FSYNC 22
3398 #define _SC_MAPPED_FILES 23
3399 #define _SC_MEMLOCK 24
3400 #define _SC_MEMLOCK_RANGE 25
3401 #define _SC_MEMORY_PROTECTION 26
3402 #define _SC_MESSAGE_PASSING 27
3403 #define _SC_PRIORITIZED_IO 28
3404 #define _SC_REALTIME_SIGNALS 29
3405 #define _SC_SEMAPHORES 30
3406 #define _SC_SHARED_MEMORY_OBJECTS 31
3407 #define _SC_SYNCHRONIZED_IO 32
3408 #define _SC_TIMERS 33
3409 #define _SC_AIO_LISTIO_MAX 34
3410 #define _SC_AIO_MAX 35
3411 #define _SC_AIO_PRIO_DELTA_MAX 36
3412 #define _SC_DELAYTIMER_MAX 37
3413 #define _SC_THREAD_KEYS_MAX 38
3414 #define _SC_THREAD_STACK_MIN 39
3415 #define _SC_THREAD_THREADS_MAX 40
3416 #define _SC_TTY_NAME_MAX 41
3417 #define _SC_THREADS 42
3418 #define _SC_THREAD_ATTR_STACKADDR 43
3419 #define _SC_THREAD_ATTR_STACKSIZE 44
3420 #define _SC_THREAD_PRIORITY_SCHEDULING 45
3421 #define _SC_THREAD_PRIO_INHERIT 46
3422 #define _SC_THREAD_PRIO_PROTECT 47
3423 #define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
3424 #define _SC_THREAD_PROCESS_SHARED 48
3425 #define _SC_THREAD_SAFE_FUNCTIONS 49
3426 #define _SC_GETGR_R_SIZE_MAX 50
3427 #define _SC_GETPW_R_SIZE_MAX 51
3428 #define _SC_LOGIN_NAME_MAX 52
3429 #define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
3430 #define _SC_ADVISORY_INFO 54
3431 #define _SC_ATEXIT_MAX 55
3432 #define _SC_BARRIERS 56
3433 #define _SC_BC_BASE_MAX 57
3434 #define _SC_BC_DIM_MAX 58
3435 #define _SC_BC_SCALE_MAX 59
3436 #define _SC_BC_STRING_MAX 60
3437 #define _SC_CLOCK_SELECTION 61
3438 #define _SC_COLL_WEIGHTS_MAX 62
3439 #define _SC_CPUTIME 63
3440 #define _SC_EXPR_NEST_MAX 64
3441 #define _SC_HOST_NAME_MAX 65
3442 #define _SC_IOV_MAX 66
3444 #define _SC_LINE_MAX 68
3445 #define _SC_MONOTONIC_CLOCK 69
3446 #define _SC_RAW_SOCKETS 70
3447 #define _SC_READER_WRITER_LOCKS 71
3448 #define _SC_REGEXP 72
3449 #define _SC_RE_DUP_MAX 73
3450 #define _SC_SHELL 74
3451 #define _SC_SPAWN 75
3452 #define _SC_SPIN_LOCKS 76
3453 #define _SC_SPORADIC_SERVER 77
3454 #define _SC_SS_REPL_MAX 78
3455 #define _SC_SYMLOOP_MAX 79
3456 #define _SC_THREAD_CPUTIME 80
3457 #define _SC_THREAD_SPORADIC_SERVER 81
3458 #define _SC_TIMEOUTS 82
3459 #define _SC_TRACE 83
3460 #define _SC_TRACE_EVENT_FILTER 84
3461 #define _SC_TRACE_EVENT_NAME_MAX 85
3462 #define _SC_TRACE_INHERIT 86
3463 #define _SC_TRACE_LOG 87
3464 #define _SC_TRACE_NAME_MAX 88
3465 #define _SC_TRACE_SYS_MAX 89
3466 #define _SC_TRACE_USER_EVENT_MAX 90
3467 #define _SC_TYPED_MEMORY_OBJECTS 91
3468 #define _SC_V7_ILP32_OFF32 92
3469 #define _SC_V6_ILP32_OFF32 _SC_V7_ILP32_OFF32
3470 #define _SC_XBS5_ILP32_OFF32 _SC_V7_ILP32_OFF32
3471 #define _SC_V7_ILP32_OFFBIG 93
3472 #define _SC_V6_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3473 #define _SC_XBS5_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3474 #define _SC_V7_LP64_OFF64 94
3475 #define _SC_V6_LP64_OFF64 _SC_V7_LP64_OFF64
3476 #define _SC_XBS5_LP64_OFF64 _SC_V7_LP64_OFF64
3477 #define _SC_V7_LPBIG_OFFBIG 95
3478 #define _SC_V6_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3479 #define _SC_XBS5_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3480 #define _SC_XOPEN_CRYPT 96
3481 #define _SC_XOPEN_ENH_I18N 97
3482 #define _SC_XOPEN_LEGACY 98
3483 #define _SC_XOPEN_REALTIME 99
3484 #define _SC_STREAM_MAX 100
3485 #define _SC_PRIORITY_SCHEDULING 101
3486 #define _SC_XOPEN_REALTIME_THREADS 102
3487 #define _SC_XOPEN_SHM 103
3488 #define _SC_XOPEN_STREAMS 104
3489 #define _SC_XOPEN_UNIX 105
3490 #define _SC_XOPEN_VERSION 106
3491 #define _SC_2_CHAR_TERM 107
3492 #define _SC_2_C_BIND 108
3493 #define _SC_2_C_DEV 109
3494 #define _SC_2_FORT_DEV 110
3495 #define _SC_2_FORT_RUN 111
3496 #define _SC_2_LOCALEDEF 112
3497 #define _SC_2_PBS 113
3498 #define _SC_2_PBS_ACCOUNTING 114
3499 #define _SC_2_PBS_CHECKPOINT 115
3500 #define _SC_2_PBS_LOCATE 116
3501 #define _SC_2_PBS_MESSAGE 117
3502 #define _SC_2_PBS_TRACK 118
3503 #define _SC_2_SW_DEV 119
3504 #define _SC_2_UPE 120
3505 #define _SC_2_VERSION 121
3506 #define _SC_THREAD_ROBUST_PRIO_INHERIT 122
3507 #define _SC_THREAD_ROBUST_PRIO_PROTECT 123
3508 #define _SC_XOPEN_UUCP 124
3509 #define _SC_LEVEL1_ICACHE_SIZE 125
3510 #define _SC_LEVEL1_ICACHE_ASSOC 126
3511 #define _SC_LEVEL1_ICACHE_LINESIZE 127
3512 #define _SC_LEVEL1_DCACHE_SIZE 128
3513 #define _SC_LEVEL1_DCACHE_ASSOC 129
3514 #define _SC_LEVEL1_DCACHE_LINESIZE 130
3515 #define _SC_LEVEL2_CACHE_SIZE 131
3516 #define _SC_LEVEL2_CACHE_ASSOC 132
3517 #define _SC_LEVEL2_CACHE_LINESIZE 133
3518 #define _SC_LEVEL3_CACHE_SIZE 134
3519 #define _SC_LEVEL3_CACHE_ASSOC 135
3520 #define _SC_LEVEL3_CACHE_LINESIZE 136
3521 #define _SC_LEVEL4_CACHE_SIZE 137
3522 #define _SC_LEVEL4_CACHE_ASSOC 138
3523 #define _SC_LEVEL4_CACHE_LINESIZE 139
3524 #define _SC_POSIX_26_VERSION 140
3525 #define _PC_LINK_MAX 0
3526 #define _PC_MAX_CANON 1
3527 #define _PC_MAX_INPUT 2
3528 #define _PC_NAME_MAX 3
3529 #define _PC_PATH_MAX 4
3530 #define _PC_PIPE_BUF 5
3531 #define _PC_CHOWN_RESTRICTED 6
3532 #define _PC_NO_TRUNC 7
3533 #define _PC_VDISABLE 8
3534 #define _PC_ASYNC_IO 9
3535 #define _PC_PRIO_IO 10
3536 #define _PC_SYNC_IO 11
3537 #define _PC_FILESIZEBITS 12
3538 #define _PC_2_SYMLINKS 13
3539 #define _PC_SYMLINK_MAX 14
3540 #define _PC_ALLOC_SIZE_MIN 15
3541 #define _PC_REC_INCR_XFER_SIZE 16
3542 #define _PC_REC_MAX_XFER_SIZE 17
3543 #define _PC_REC_MIN_XFER_SIZE 18
3544 #define _PC_REC_XFER_ALIGN 19
3545 #define _PC_TIMESTAMP_RESOLUTION 20
3546 #define _PC_POSIX_PERMISSIONS 90
3547 #define _PC_POSIX_SECURITY 91
3548 #define _PC_CASE_INSENSITIVE 92
3550 #define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1
3551 #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3552 #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3553 #define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 2
3554 #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3555 #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3556 #define _CS_POSIX_V7_ILP32_OFF32_LIBS 3
3557 #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3558 #define _CS_XBS5_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3559 #define _CS_XBS5_ILP32_OFF32_LINTFLAGS 4
3560 #define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 5
3561 #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3562 #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3563 #define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6
3564 #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3565 #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3566 #define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 7
3567 #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3568 #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3569 #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 8
3570 #define _CS_POSIX_V7_LP64_OFF64_CFLAGS 9
3571 #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3572 #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3573 #define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 10
3574 #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3575 #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3576 #define _CS_POSIX_V7_LP64_OFF64_LIBS 11
3577 #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3578 #define _CS_XBS5_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3579 #define _CS_XBS5_LP64_OFF64_LINTFLAGS 12
3580 #define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 13
3581 #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3582 #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3583 #define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 14
3584 #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3585 #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3586 #define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 15
3587 #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3588 #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3589 #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 16
3590 #define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 17
3591 #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3592 #define _CS_XBS5_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3593 #define _CS_POSIX_V7_THREADS_CFLAGS 18
3594 #define _CS_POSIX_V7_THREADS_LDFLAGS 19
3595 #define _CS_V7_ENV 20
3596 #define _CS_V6_ENV _CS_V7_ENV
3597 #define _CS_LFS_CFLAGS 21
3598 #define _CS_LFS_LDFLAGS 22
3599 #define _CS_LFS_LIBS 23
3600 #define _CS_LFS_LINTFLAGS 24
3601 #define _SSP_UNISTD_H_
3613 ssize_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); };
3616 ssize_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); };
3619 #define RUBY_MISSING_H 1
3622 #define _M_LN2 0.693147180559945309417
3623 #define HUGE_VAL (__builtin_huge_val())
3624 #define HUGE_VALF (__builtin_huge_valf())
3625 #define HUGE_VALL (__builtin_huge_vall())
3626 #define INFINITY (__builtin_inff())
3627 #define NAN (__builtin_nanf(""))
3632 extern double tanh (
double);
3634 extern double modf (
double,
double *);
3641 extern double cosh (
double);
3642 extern double sinh (
double);
3647 extern double pow (
double,
double);
3649 extern double fmod (
double,
double);
3650 extern int finite (
double);
3657 extern int isinf (
double);
3658 extern int isnan (
double);
3659 #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
3660 #define __TMP_FLT_EVAL_METHOD
3663 #undef FLT_EVAL_METHOD
3665 #define FP_INFINITE 1
3667 #define FP_SUBNORMAL 3
3669 #define FP_ILOGB0 (-__INT_MAX__)
3670 #define FP_ILOGBNAN __INT_MAX__
3671 #define MATH_ERRNO 1
3672 #define MATH_ERREXCEPT 2
3673 #define _MATH_ERRHANDLING_ERRNO MATH_ERRNO
3674 #define _MATH_ERRHANDLING_ERREXCEPT MATH_ERREXCEPT
3675 #define math_errhandling (_MATH_ERRHANDLING_ERRNO | _MATH_ERRHANDLING_ERREXCEPT)
3684 #define fpclassify(__x) (__builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, __x))
3685 #define isfinite(__x) (__builtin_isfinite (__x))
3686 #define isinf(__x) (__builtin_isinf_sign (__x))
3687 #define isnan(__x) (__builtin_isnan (__x))
3688 #define isnormal(__x) (__builtin_isnormal (__x))
3689 #define signbit(__x) ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : (sizeof(__x) == sizeof(double)) ? __builtin_signbit (__x) : __builtin_signbitl(__x))
3690 #define isgreater(__x,__y) (__builtin_isgreater (__x, __y))
3691 #define isgreaterequal(__x,__y) (__builtin_isgreaterequal (__x, __y))
3692 #define isless(__x,__y) (__builtin_isless (__x, __y))
3693 #define islessequal(__x,__y) (__builtin_islessequal (__x, __y))
3694 #define islessgreater(__x,__y) (__builtin_islessgreater (__x, __y))
3695 #define isunordered(__x,__y) (__builtin_isunordered (__x, __y))
3697 extern double nan (
const char *);
3701 extern double asinh (
double);
3702 extern double cbrt (
double);
3703 extern double nextafter (
double,
double);
3708 extern double tgamma (
double);
3712 extern double round (
double);
3716 extern double remquo (
double,
double,
int *);
3717 extern double fdim (
double,
double);
3718 extern double fmax (
double,
double);
3719 extern double fmin (
double,
double);
3720 extern double fma (
double,
double,
double);
3723 extern double acosh (
double);
3724 extern double atanh (
double);
3728 extern double erf (
double);
3729 extern double erfc (
double);
3730 extern double log2 (
double);
3731 #define log2(x) (log (x) / _M_LN2)
3732 extern double hypot (
double,
double);
3769 extern float fmaf (
float,
float,
float);
3792 extern long double cosl (
long double);
3793 extern long double sinl (
long double);
3794 extern long double tanl (
long double);
3796 extern long double frexpl (
long double,
int *);
3797 extern long double modfl (
long double,
long double *);
3805 extern long double atan2l (
long double,
long double);
3808 extern long double expl (
long double);
3809 extern long double ldexpl (
long double,
int);
3810 extern long double logl (
long double);
3812 extern long double powl (
long double,
long double);
3814 extern long double fmodl (
long double,
long double);
3815 extern long double hypotl (
long double,
long double);
3817 extern long double nanl (
const char *);
3839 extern long double remquol (
long double,
long double,
int *);
3840 extern long double fdiml (
long double,
long double);
3841 extern long double fmaxl (
long double,
long double);
3842 extern long double fminl (
long double,
long double);
3843 extern long double fmal (
long double,
long double,
long double);
3848 extern long double erfl (
long double);
3850 extern double drem (
double,
double);
3852 extern float dreml (
long double,
long double);
3854 extern double lgamma_r (
double,
int *);
3857 extern double y0 (
double);
3858 extern double y1 (
double);
3859 extern double yn (
int,
double);
3860 extern double j0 (
double);
3861 extern double j1 (
double);
3862 extern double jn (
int,
double);
3865 extern float ynf (
int,
float);
3868 extern float jnf (
int,
float);
3869 extern void sincos (
double,
double *,
double *);
3871 extern void sincosl (
long double,
long double *,
long double *);
3878 #define signgam (*__signgam())
3880 #define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
3881 #define MAXFLOAT 3.40282347e+38F
3882 #define M_E 2.7182818284590452354
3883 #define M_LOG2E 1.4426950408889634074
3884 #define M_LOG10E 0.43429448190325182765
3885 #define M_LN2 _M_LN2
3886 #define M_LN10 2.30258509299404568402
3887 #define M_PI 3.14159265358979323846
3888 #define M_PI_2 1.57079632679489661923
3889 #define M_PI_4 0.78539816339744830962
3890 #define M_1_PI 0.31830988618379067154
3891 #define M_2_PI 0.63661977236758134308
3892 #define M_2_SQRTPI 1.12837916709551257390
3893 #define M_SQRT2 1.41421356237309504880
3894 #define M_SQRT1_2 0.70710678118654752440
3895 #define M_TWOPI (M_PI * 2.0)
3896 #define M_3PI_4 2.3561944901923448370E0
3897 #define M_SQRTPI 1.77245385090551602792981
3898 #define M_LN2LO 1.9082149292705877000E-10
3899 #define M_LN2HI 6.9314718036912381649E-1
3900 #define M_SQRT3 1.73205080756887719000
3901 #define M_IVLN10 0.43429448190325182765
3902 #define M_LOG2_E _M_LN2
3903 #define M_INVLN2 1.4426950408889633870E0
3906 #define RUBY_EXTERN extern
3908 #pragma GCC visibility push(default)
3912 #pragma GCC visibility pop
3916 #define _(args) args
3918 #define __(args) args
3921 #pragma GCC visibility push(default)
3923 #define xmalloc ruby_xmalloc
3924 #define xmalloc2 ruby_xmalloc2
3925 #define xcalloc ruby_xcalloc
3926 #define xrealloc ruby_xrealloc
3927 #define xrealloc2 ruby_xrealloc2
3928 #define xfree ruby_xfree
3929 #define RUBY_ATTR_ALLOC_SIZE(params) __attribute__ ((alloc_size params))
3930 #define RUBY_ATTR_MALLOC __attribute__((__malloc__))
3931 #define RUBY_ATTR_RETURNS_NONNULL __attribute__((__returns_nonnull__))
3938 #define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
3939 #define STRINGIZE(expr) STRINGIZE0(expr)
3940 #define STRINGIZE0(expr) #expr
3941 #define HAVE_TRUE_LONG_LONG 1
3942 #define LONG_LONG long long
3947 #define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
3948 #define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
3949 #define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
3950 #define RUBY_EXTERN extern
3951 #define EXTERN _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); RUBY_EXTERN
3952 #define RUBY_MBCHAR_MAXSIZE INT_MAX
3953 #define FLUSH_REGISTER_WINDOWS ((void)0)
3954 #define PATH_SEP ":"
3955 #define PATH_SEP_CHAR PATH_SEP[0]
3956 #define PATH_ENV "PATH"
3957 #define CASEFOLD_FILESYSTEM 0
3958 #define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
3959 #define UNALIGNED_WORD_ACCESS 1
3960 #define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
3961 #define NORETURN_STYLE_NEW 1
3963 #pragma GCC visibility pop
3965 #define RUBY_ASSERT_H
3967 #define RUBY_ASSERT_FAIL(expr) rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
3968 #define RUBY_ASSERT_MESG(expr,mesg) ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
3969 #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)))
3970 #define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
3971 #define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
3972 #define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
3973 #define RUBY_DEBUG 0
3974 #define RUBY_NDEBUG 0
3975 #define ASSUME(x) (RB_LIKELY(!!(x)) ? (void)0 : UNREACHABLE)
3976 #define UNREACHABLE_RETURN(val) UNREACHABLE
3977 #define RUBY_MACRO_SELECT(base,n) TOKEN_PASTE(base, n)
3979 #define _ANSI_STDARG_H_
3980 #undef __need___va_list
3981 #define va_start(v,l) __builtin_va_start(v,l)
3982 #define va_end(v) __builtin_va_end(v)
3983 #define va_arg(v,l) __builtin_va_arg(v,l)
3984 #define va_copy(d,s) __builtin_va_copy(d,s)
3985 #define __va_copy(d,s) __builtin_va_copy(d,s)
3988 #define _VA_LIST_T_H
3991 #pragma GCC visibility push(default)
3994 typedef unsigned long ID;
3995 #define SIGNED_VALUE long
3996 #define SIZEOF_VALUE SIZEOF_LONG
3997 #define PRI_VALUE_PREFIX "l"
4002 #define PRI_INT_PREFIX ""
4003 #define PRI_LONG_PREFIX "l"
4004 #define PRI_SHORT_PREFIX "h"
4005 #define RUBY_PRI_VALUE_MARK "\v"
4006 #define PRIdVALUE PRI_VALUE_PREFIX"d"
4007 #define PRIoVALUE PRI_VALUE_PREFIX"o"
4008 #define PRIuVALUE PRI_VALUE_PREFIX"u"
4009 #define PRIxVALUE PRI_VALUE_PREFIX"x"
4010 #define PRIXVALUE PRI_VALUE_PREFIX"X"
4011 #define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
4012 #define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
4013 #define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
4014 #define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
4015 #define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
4016 #define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
4017 #define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
4018 #define PRIdSIZE PRI_SIZE_PREFIX"d"
4019 #define PRIiSIZE PRI_SIZE_PREFIX"i"
4020 #define PRIoSIZE PRI_SIZE_PREFIX"o"
4021 #define PRIuSIZE PRI_SIZE_PREFIX"u"
4022 #define PRIxSIZE PRI_SIZE_PREFIX"x"
4023 #define PRIXSIZE PRI_SIZE_PREFIX"X"
4024 #define _GCC_LIMITS_H_
4025 #define _GCC_NEXT_LIMITS_H
4027 #define _LIMITS_H___
4028 #define _MACH_MACHLIMITS_H_
4030 #define CHAR_BIT __CHAR_BIT__
4032 #define LONG_BIT (__SIZEOF_LONG__ * __CHAR_BIT__)
4034 #define WORD_BIT (__SIZEOF_INT__ * __CHAR_BIT__)
4035 #define MB_LEN_MAX 8
4037 #define SCHAR_MIN (-128)
4039 #define SCHAR_MAX 127
4041 #define UCHAR_MAX 255
4043 #define CHAR_MIN (-128)
4045 #define CHAR_MAX 127
4047 #define SHRT_MIN (-32768)
4049 #define SHRT_MAX 32767
4051 #define USHRT_MAX 65535
4053 #define INT_MIN (-INT_MAX-1)
4055 #define INT_MAX __INT_MAX__
4057 #define UINT_MAX (INT_MAX * 2U + 1)
4059 #define LONG_MIN (-LONG_MAX-1L)
4061 #define LONG_MAX __LONG_MAX__
4063 #define ULONG_MAX (LONG_MAX * 2UL + 1)
4064 #undef LONG_LONG_MIN
4065 #define LONG_LONG_MIN (-LONG_LONG_MAX-1)
4066 #undef LONG_LONG_MAX
4067 #define LONG_LONG_MAX __LONG_LONG_MAX__
4068 #undef ULONG_LONG_MAX
4069 #define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
4071 #define LLONG_MIN (-LLONG_MAX-1)
4073 #define LLONG_MAX __LONG_LONG_MAX__
4075 #define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
4077 #define SSIZE_MAX (__INT_MAX__)
4078 #define AIO_LISTIO_MAX 32
4080 #define AIO_PRIO_DELTA_MAX 0
4082 #define ARG_MAX 32000
4084 #define ATEXIT_MAX 32
4086 #define CHILD_MAX 256
4087 #undef DELAYTIMER_MAX
4088 #define DELAYTIMER_MAX __INT_MAX__
4089 #undef HOST_NAME_MAX
4090 #define HOST_NAME_MAX 255
4092 #define IOV_MAX 1024
4093 #undef LOGIN_NAME_MAX
4094 #define LOGIN_NAME_MAX 256
4096 #define MQ_OPEN_MAX OPEN_MAX
4098 #define MQ_PRIO_MAX INT_MAX
4100 #define OPEN_MAX 256
4102 #define PAGESIZE 65536
4104 #define PAGE_SIZE PAGESIZE
4105 #undef PTHREAD_DESTRUCTOR_ITERATIONS
4106 #define PTHREAD_DESTRUCTOR_ITERATIONS 1
4107 #undef PTHREAD_KEYS_MAX
4108 #define PTHREAD_KEYS_MAX 1024
4109 #undef PTHREAD_STACK_MIN
4110 #define PTHREAD_STACK_MIN 65536
4111 #undef PTHREAD_THREADS_MAX
4114 #undef SEM_NSEMS_MAX
4115 #undef SEM_VALUE_MAX
4116 #define SEM_VALUE_MAX 1147483648
4118 #define SIGQUEUE_MAX 32
4121 #define STREAM_MAX 20
4123 #define SYMLOOP_MAX 10
4125 #define TIMER_MAX 32
4126 #undef TRACE_EVENT_NAME_MAX
4127 #undef TRACE_NAME_MAX
4128 #undef TRACE_SYS_MAX
4129 #undef TRACE_USER_EVENT_MAX
4131 #define TTY_NAME_MAX 32
4134 #define FILESIZEBITS 64
4136 #define LINK_MAX 1024
4138 #define MAX_CANON 255
4140 #define MAX_INPUT 255
4142 #define NAME_MAX 255
4144 #define PATH_MAX 4096
4146 #define PIPE_BUF 4096
4147 #undef POSIX_ALLOC_SIZE_MIN
4148 #undef POSIX_REC_INCR_XFER_SIZE
4149 #undef POSIX_REC_MAX_XFER_SIZE
4150 #undef POSIX_REC_MIN_XFER_SIZE
4151 #undef POSIX_REC_XFER_ALIGN
4153 #define SYMLINK_MAX (PATH_MAX - 1)
4155 #define BC_BASE_MAX 99
4157 #define BC_DIM_MAX 2048
4159 #define BC_SCALE_MAX 99
4160 #undef BC_STRING_MAX
4161 #define BC_STRING_MAX 1000
4162 #undef CHARCLASS_NAME_MAX
4163 #undef COLL_WEIGHTS_MAX
4164 #undef EXPR_NEST_MAX
4165 #define EXPR_NEST_MAX 32
4167 #define LINE_MAX 2048
4169 #define NGROUPS_MAX 1024
4171 #define RE_DUP_MAX 255
4172 #define _POSIX_CLOCKRES_MIN 20000000
4173 #define _POSIX_AIO_LISTIO_MAX 2
4174 #define _POSIX_AIO_MAX 1
4175 #define _POSIX_ARG_MAX 4096
4176 #define _POSIX_CHILD_MAX 25
4177 #define _POSIX_DELAYTIMER_MAX 32
4178 #define _POSIX_HOST_NAME_MAX 255
4179 #define _POSIX_LINK_MAX 8
4180 #define _POSIX_LOGIN_NAME_MAX 9
4181 #define _POSIX_MAX_CANON 255
4182 #define _POSIX_MAX_INPUT 255
4183 #define _POSIX_MQ_OPEN_MAX 8
4184 #define _POSIX_MQ_PRIO_MAX 32
4185 #define _POSIX_NAME_MAX 14
4186 #define _POSIX_NGROUPS_MAX 8
4187 #define _POSIX_OPEN_MAX 20
4188 #define _POSIX_PATH_MAX 256
4189 #define _POSIX_PIPE_BUF 512
4190 #define _POSIX_RE_DUP_MAX 255
4191 #define _POSIX_RTSIG_MAX 8
4192 #define _POSIX_SEM_NSEMS_MAX 256
4193 #define _POSIX_SEM_VALUE_MAX 32767
4194 #define _POSIX_SIGQUEUE_MAX 32
4195 #define _POSIX_SSIZE_MAX 32767
4196 #define _POSIX_STREAM_MAX 8
4197 #define _POSIX_SS_REPL_MAX 4
4198 #define _POSIX_SYMLINK_MAX 255
4199 #define _POSIX_SYMLOOP_MAX 8
4200 #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
4201 #define _POSIX_THREAD_KEYS_MAX 128
4202 #define _POSIX_THREAD_THREADS_MAX 64
4203 #define _POSIX_TIMER_MAX 32
4204 #define _POSIX_TRACE_EVENT_NAME_MAX 30
4205 #define _POSIX_TRACE_NAME_MAX 8
4206 #define _POSIX_TRACE_SYS_MAX 8
4207 #define _POSIX_TRACE_USER_EVENT_MAX 32
4208 #define _POSIX_TTY_NAME_MAX 9
4209 #define _POSIX_TZNAME_MAX 6
4210 #define _POSIX2_BC_BASE_MAX 99
4211 #define _POSIX2_BC_DIM_MAX 2048
4212 #define _POSIX2_BC_SCALE_MAX 99
4213 #define _POSIX2_BC_STRING_MAX 1000
4214 #define _POSIX2_COLL_WEIGHTS_MAX 2
4215 #define _POSIX2_EXPR_NEST_MAX 32
4216 #define _POSIX2_LINE_MAX 2048
4217 #define _POSIX2_RE_DUP_MAX 255
4218 #define _XOPEN_IOV_MAX 16
4219 #define _XOPEN_NAME_MAX 255
4220 #define _XOPEN_PATH_MAX 1024
4222 #define NL_LANGMAX 14
4223 #define NL_MSGMAX 32767
4224 #define NL_SETMAX 255
4225 #define NL_TEXTMAX _POSIX2_LINE_MAX
4228 #undef _GCC_NEXT_LIMITS_H
4229 #define RUBY_FIXNUM_MAX (LONG_MAX>>1)
4230 #define RUBY_FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
4231 #define FIXNUM_MAX RUBY_FIXNUM_MAX
4232 #define FIXNUM_MIN RUBY_FIXNUM_MIN
4233 #define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)
4234 #define INT2FIX(i) RB_INT2FIX(i)
4235 #define RB_LONG2FIX(i) RB_INT2FIX(i)
4236 #define LONG2FIX(i) RB_INT2FIX(i)
4237 #define rb_fix_new(v) RB_INT2FIX(v)
4239 #define rb_int_new(v) rb_int2inum(v)
4241 #define rb_uint_new(v) rb_uint2inum(v)
4243 #define LL2NUM(v) rb_ll2inum(v)
4245 #define ULL2NUM(v) rb_ull2inum(v)
4246 #define SIZET2NUM(v) ULONG2NUM(v)
4247 #define SSIZET2NUM(v) LONG2NUM(v)
4248 #define rb_long2int(n) ((int)(n))
4249 #define RB_FIX2LONG(x) ((long)RSHIFT((SIGNED_VALUE)(x),1))
4251 rb_fix2long(
VALUE x)
4253 return ((
long)(((
long)(x))>>(
int)(1)));
4255 #define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
4256 static inline unsigned long
4257 rb_fix2ulong(
VALUE x)
4259 return ((
unsigned long)((
long)(((
long)(x))>>(
int)(1))));
4261 #define RB_FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&RUBY_FIXNUM_FLAG)
4262 #define RB_POSFIXABLE(f) ((f) < RUBY_FIXNUM_MAX+1)
4263 #define RB_NEGFIXABLE(f) ((f) >= RUBY_FIXNUM_MIN)
4264 #define RB_FIXABLE(f) (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f))
4265 #define FIX2LONG(x) RB_FIX2LONG(x)
4266 #define FIX2ULONG(x) RB_FIX2ULONG(x)
4267 #define FIXNUM_P(f) RB_FIXNUM_P(f)
4268 #define POSFIXABLE(f) RB_POSFIXABLE(f)
4269 #define NEGFIXABLE(f) RB_NEGFIXABLE(f)
4270 #define FIXABLE(f) RB_FIXABLE(f)
4271 #define RB_IMMEDIATE_P(x) ((VALUE)(x) & RUBY_IMMEDIATE_MASK)
4272 #define IMMEDIATE_P(x) RB_IMMEDIATE_P(x)
4275 #define RB_STATIC_SYM_P(x) (((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)
4276 #define RB_DYNAMIC_SYM_P(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) == (RUBY_T_SYMBOL))
4277 #define RB_SYMBOL_P(x) (RB_STATIC_SYM_P(x)||RB_DYNAMIC_SYM_P(x))
4278 #define RB_ID2SYM(x) (rb_id2sym(x))
4279 #define RB_SYM2ID(x) (rb_sym2id(x))
4280 #define STATIC_SYM_P(x) RB_STATIC_SYM_P(x)
4281 #define DYNAMIC_SYM_P(x) RB_DYNAMIC_SYM_P(x)
4282 #define SYMBOL_P(x) RB_SYMBOL_P(x)
4283 #define ID2SYM(x) RB_ID2SYM(x)
4284 #define SYM2ID(x) RB_SYM2ID(x)
4285 #define USE_FLONUM 0
4286 #define RB_FLONUM_P(x) 0
4287 #define FLONUM_P(x) RB_FLONUM_P(x)
4288 #define USE_SYMBOL_AS_METHOD_NAME 1
4301 #define RUBY_Qfalse ((VALUE)RUBY_Qfalse)
4302 #define RUBY_Qtrue ((VALUE)RUBY_Qtrue)
4303 #define RUBY_Qnil ((VALUE)RUBY_Qnil)
4304 #define RUBY_Qundef ((VALUE)RUBY_Qundef)
4305 #define Qfalse RUBY_Qfalse
4306 #define Qtrue RUBY_Qtrue
4307 #define Qnil RUBY_Qnil
4308 #define Qundef RUBY_Qundef
4309 #define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
4310 #define FIXNUM_FLAG RUBY_FIXNUM_FLAG
4311 #define SYMBOL_FLAG RUBY_SYMBOL_FLAG
4312 #define RB_TEST(v) !(((VALUE)(v) & (VALUE)~RUBY_Qnil) == 0)
4313 #define RB_NIL_P(v) !((VALUE)(v) != RUBY_Qnil)
4314 #define RTEST(v) RB_TEST(v)
4315 #define NIL_P(v) RB_NIL_P(v)
4316 #define CLASS_OF(v) rb_class_of((VALUE)(v))
4347 #define T_NONE RUBY_T_NONE
4348 #define T_NIL RUBY_T_NIL
4349 #define T_OBJECT RUBY_T_OBJECT
4350 #define T_CLASS RUBY_T_CLASS
4351 #define T_ICLASS RUBY_T_ICLASS
4352 #define T_MODULE RUBY_T_MODULE
4353 #define T_FLOAT RUBY_T_FLOAT
4354 #define T_STRING RUBY_T_STRING
4355 #define T_REGEXP RUBY_T_REGEXP
4356 #define T_ARRAY RUBY_T_ARRAY
4357 #define T_HASH RUBY_T_HASH
4358 #define T_STRUCT RUBY_T_STRUCT
4359 #define T_BIGNUM RUBY_T_BIGNUM
4360 #define T_FILE RUBY_T_FILE
4361 #define T_FIXNUM RUBY_T_FIXNUM
4362 #define T_TRUE RUBY_T_TRUE
4363 #define T_FALSE RUBY_T_FALSE
4364 #define T_DATA RUBY_T_DATA
4365 #define T_MATCH RUBY_T_MATCH
4366 #define T_SYMBOL RUBY_T_SYMBOL
4367 #define T_RATIONAL RUBY_T_RATIONAL
4368 #define T_COMPLEX RUBY_T_COMPLEX
4369 #define T_IMEMO RUBY_T_IMEMO
4370 #define T_UNDEF RUBY_T_UNDEF
4371 #define T_NODE RUBY_T_NODE
4372 #define T_ZOMBIE RUBY_T_ZOMBIE
4373 #define T_MOVED RUBY_T_MOVED
4374 #define T_MASK RUBY_T_MASK
4375 #define RB_BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK)
4376 #define BUILTIN_TYPE(x) RB_BUILTIN_TYPE(x)
4377 static inline int rb_type(
VALUE obj);
4378 #define TYPE(x) rb_type((VALUE)(x))
4379 #define RB_FLOAT_TYPE_P(obj) ( RB_FLONUM_P(obj) || (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT))
4380 #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)))
4381 #define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
4382 #define RB_UNUSED_VAR(x) x __attribute__ ((unused))
4384 #define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
4389 #define StringValue(v) rb_string_value(&(v))
4390 #define StringValuePtr(v) rb_string_value_ptr(&(v))
4391 #define StringValueCStr(v) rb_string_value_cstr(&(v))
4393 #define SafeStringValue(v) StringValue(v)
4395 #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
4397 #define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v);} while (0)
4400 #define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
4402 #define FilePathStringValue(v) ((v) = rb_get_path(v))
4403 #define RUBY_SAFE_LEVEL_MAX 1
4409 #define ruby_safe_level_2_warning() ruby_safe_level_2_error()
4410 #define RUBY_SAFE_LEVEL_INVALID_P(level) __extension__( __builtin_choose_expr( __builtin_constant_p(level), ((level) < 0 || RUBY_SAFE_LEVEL_MAX < (level)), 0))
4411 #define RUBY_SAFE_LEVEL_CHECK(level,type) __extension__(__builtin_choose_expr(RUBY_SAFE_LEVEL_INVALID_P(level), ruby_safe_level_2_ ##type(), (level)))
4412 #define rb_secure(level) rb_secure(RUBY_SAFE_LEVEL_CHECK(level, warning))
4413 #define rb_set_safe_level(level) rb_set_safe_level(RUBY_SAFE_LEVEL_CHECK(level, error))
4422 rb_num2long_inline(
VALUE x)
4425 return ((
long)(((
long)(x))>>(
int)(1)));
4429 #define RB_NUM2LONG(x) rb_num2long_inline(x)
4430 #define NUM2LONG(x) RB_NUM2LONG(x)
4431 static inline unsigned long
4432 rb_num2ulong_inline(
VALUE x)
4435 return ((
unsigned long)((
long)(((
long)(x))>>(
int)(1))));
4439 #define RB_NUM2ULONG(x) rb_num2ulong_inline(x)
4440 #define NUM2ULONG(x) RB_NUM2ULONG(x)
4441 #define RB_NUM2INT(x) ((int)RB_NUM2LONG(x))
4442 #define RB_NUM2UINT(x) ((unsigned int)RB_NUM2ULONG(x))
4443 #define RB_FIX2INT(x) ((int)RB_FIX2LONG(x))
4444 #define RB_FIX2UINT(x) ((unsigned int)RB_FIX2ULONG(x))
4445 #define NUM2INT(x) RB_NUM2INT(x)
4446 #define NUM2UINT(x) RB_NUM2UINT(x)
4447 #define FIX2INT(x) RB_FIX2INT(x)
4448 #define FIX2UINT(x) RB_FIX2UINT(x)
4453 #define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
4454 #define FIX2SHORT(x) RB_FIX2SHORT(x)
4456 rb_num2short_inline(
VALUE x)
4463 #define RB_NUM2SHORT(x) rb_num2short_inline(x)
4464 #define RB_NUM2USHORT(x) rb_num2ushort(x)
4465 #define NUM2SHORT(x) RB_NUM2SHORT(x)
4466 #define NUM2USHORT(x) RB_NUM2USHORT(x)
4467 long long rb_num2ll(
VALUE);
4468 unsigned long long rb_num2ull(
VALUE);
4469 static inline long long
4470 rb_num2ll_inline(
VALUE x)
4473 return ((
long)(((
long)(x))>>(
int)(1)));
4475 return rb_num2ll(x);
4477 #define RB_NUM2LL(x) rb_num2ll_inline(x)
4478 #define RB_NUM2ULL(x) rb_num2ull(x)
4479 #define NUM2LL(x) RB_NUM2LL(x)
4480 #define NUM2ULL(x) RB_NUM2ULL(x)
4481 #define NUM2SIZET(x) NUM2ULONG(x)
4482 #define NUM2SSIZET(x) NUM2LONG(x)
4484 #define NUM2DBL(x) rb_num2dbl((VALUE)(x))
4490 #define RB_NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
4491 #define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
4492 #define NEWOBJ(obj,type) RB_NEWOBJ(obj,type)
4493 #define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
4494 #define OBJSETUP(obj,c,t) rb_obj_setup(obj, c, t)
4495 #define CLONESETUP(clone,obj) rb_clone_setup(clone,obj)
4496 #define DUPSETUP(dup,obj) rb_dup_setup(dup,obj)
4497 #define USE_RGENGC 1
4498 #define USE_RINCGC 1
4499 #define RGENGC_WB_PROTECTED_ARRAY 1
4500 #define RGENGC_WB_PROTECTED_HASH 1
4501 #define RGENGC_WB_PROTECTED_STRUCT 1
4502 #define RGENGC_WB_PROTECTED_STRING 1
4503 #define RGENGC_WB_PROTECTED_OBJECT 1
4504 #define RGENGC_WB_PROTECTED_REGEXP 1
4505 #define RGENGC_WB_PROTECTED_CLASS 1
4506 #define RGENGC_WB_PROTECTED_FLOAT 1
4507 #define RGENGC_WB_PROTECTED_COMPLEX 1
4508 #define RGENGC_WB_PROTECTED_RATIONAL 1
4509 #define RGENGC_WB_PROTECTED_BIGNUM 1
4510 #define RGENGC_WB_PROTECTED_NODE_CREF 1
4524 #define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
4555 #define RB_OBJ_WB_UNPROTECT_FOR(type,obj) __extension__( __builtin_choose_expr( RGENGC_WB_PROTECTED_ ##type, OBJ_WB_UNPROTECT((VALUE)(obj)), ((VALUE)(obj))))
4556 #define RBASIC_CLASS(obj) (RBASIC(obj)->klass)
4557 #define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
4561 #define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
4562 #define ROBJECT_EMBED ROBJECT_EMBED
4569 struct RBasic
basic;
4579 #define ROBJECT_NUMIV(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ROBJECT(o)->as.heap.numiv)
4580 #define ROBJECT_IVPTR(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT(o)->as.ary : ROBJECT(o)->as.heap.ivptr)
4581 #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)
4582 #define RCLASS_SUPER(c) rb_class_get_superclass(c)
4583 #define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m)
4584 #define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
4585 #define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
4586 #define RMODULE_SUPER(m) RCLASS_SUPER(m)
4587 #define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
4588 #define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
4589 #define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
4599 #define RFLOAT_VALUE(v) rb_float_value(v)
4600 #define DBL2NUM(dbl) rb_float_new(dbl)
4601 #define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
4602 #define ELTS_SHARED RUBY_ELTS_SHARED
4603 #define RSTRING_NOEMBED RSTRING_NOEMBED
4604 #define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
4605 #define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
4606 #define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
4607 #define RSTRING_FSTR RSTRING_FSTR
4611 RUBY_FL_USER5|RUBY_FL_USER6),
4618 struct RBasic
basic;
4631 #define RSTRING_EMBED_LEN(str) (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))
4632 #define RSTRING_LEN(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING_EMBED_LEN(str) : RSTRING(str)->as.heap.len)
4633 #define RSTRING_PTR(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING(str)->as.ary : RSTRING(str)->as.heap.ptr)
4634 #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))
4635 #define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str))
4636 #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))
4637 #define USE_TRANSIENT_HEAP 1
4644 #define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
4647 #define RARRAY_EMBED_FLAG (VALUE)RARRAY_EMBED_FLAG
4648 #define RARRAY_EMBED_LEN_MASK (VALUE)RARRAY_EMBED_LEN_MASK
4649 #define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
4650 #define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
4652 struct RBasic
basic;
4666 #define RARRAY_EMBED_LEN(a) (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT))
4667 #define RARRAY_LEN(a) rb_array_len(a)
4668 #define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary))
4669 #define RARRAY_CONST_PTR(a) rb_array_const_ptr(a)
4670 #define RARRAY_CONST_PTR_TRANSIENT(a) rb_array_const_ptr_transient(a)
4671 #define RARRAY_TRANSIENT_P(ary) FL_TEST_RAW((ary), RARRAY_TRANSIENT_FLAG)
4672 #define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
4673 #define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
4674 #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)
4675 #define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
4676 #define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
4677 #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)
4678 #define RARRAY_AREF(a,i) (RARRAY_CONST_PTR_TRANSIENT(a)[i])
4679 #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)
4680 #define RARRAY_PTR(a) ((VALUE *)RARRAY_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(ARRAY, a)))
4682 struct RBasic
basic;
4687 #define RREGEXP_PTR(r) (RREGEXP(r)->ptr)
4688 #define RREGEXP_SRC(r) (RREGEXP(r)->src)
4689 #define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src)
4690 #define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
4691 #define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src)
4693 #define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
4694 #define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
4695 #define RHASH_IFNONE(h) rb_hash_ifnone(h)
4696 #define RHASH_SIZE(h) rb_hash_size_num(h)
4697 #define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
4698 #define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
4700 struct RBasic
basic;
4704 struct RBasic
basic;
4723 #define HAVE_TYPE_RB_DATA_TYPE_T 1
4724 #define HAVE_RB_DATA_TYPE_T_FUNCTION 1
4725 #define HAVE_RB_DATA_TYPE_T_PARENT 1
4727 struct RBasic
basic;
4732 #define DATA_PTR(dta) (RDATA(dta)->data)
4733 #define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1)
4734 #define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type)
4735 #define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
4737 #define RUBY_UNTYPED_DATA_WARNING 1
4745 #define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t))
4746 #define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1)
4747 #define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0)
4748 #define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
4749 #define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
4750 #define RUBY_TYPED_FREE_IMMEDIATELY 1
4751 #define RUBY_TYPED_WB_PROTECTED RUBY_FL_WB_PROTECTED
4752 #define RUBY_TYPED_PROMOTED1 RUBY_FL_PROMOTED1
4753 #define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free))
4754 #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));
4755 #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; })
4756 #define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
4757 #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));
4758 #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; })
4759 #define Data_Get_Struct(obj,type,sval) ((sval) = (type*)rb_data_object_get(obj))
4760 #define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = (type*)rb_check_typeddata((obj), (data_type)))
4761 #define RSTRUCT_LEN(st) NUM2LONG(rb_struct_size(st))
4762 #define RSTRUCT_PTR(st) rb_struct_ptr(st)
4763 #define RSTRUCT_SET(st,idx,v) rb_struct_aset(st, INT2NUM(idx), (v))
4764 #define RSTRUCT_GET(st,idx) rb_struct_aref(st, INT2NUM(idx))
4766 #define RBIGNUM_SIGN(b) (rb_big_sign(b))
4767 #define RBIGNUM_POSITIVE_P(b) (RBIGNUM_SIGN(b)!=0)
4768 #define RBIGNUM_NEGATIVE_P(b) (RBIGNUM_SIGN(b)==0)
4769 #define R_CAST(st) (struct st*)
4770 #define RMOVED(obj) (R_CAST(RMoved)(obj))
4771 #define RBASIC(obj) (R_CAST(RBasic)(obj))
4772 #define ROBJECT(obj) (R_CAST(RObject)(obj))
4773 #define RCLASS(obj) (R_CAST(RClass)(obj))
4774 #define RMODULE(obj) RCLASS(obj)
4775 #define RSTRING(obj) (R_CAST(RString)(obj))
4776 #define RREGEXP(obj) (R_CAST(RRegexp)(obj))
4777 #define RARRAY(obj) (R_CAST(RArray)(obj))
4778 #define RDATA(obj) (R_CAST(RData)(obj))
4779 #define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj))
4780 #define RFILE(obj) (R_CAST(RFile)(obj))
4781 #define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON)
4782 #define FL_WB_PROTECTED ((VALUE)RUBY_FL_WB_PROTECTED)
4783 #define FL_PROMOTED0 ((VALUE)RUBY_FL_PROMOTED0)
4784 #define FL_PROMOTED1 ((VALUE)RUBY_FL_PROMOTED1)
4785 #define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE)
4786 #define FL_TAINT ((VALUE)RUBY_FL_TAINT)
4787 #define FL_UNTRUSTED ((VALUE)RUBY_FL_UNTRUSTED)
4788 #define FL_SEEN_OBJ_ID ((VALUE)RUBY_FL_SEEN_OBJ_ID)
4789 #define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR)
4790 #define FL_FREEZE ((VALUE)RUBY_FL_FREEZE)
4791 #define FL_USHIFT ((VALUE)RUBY_FL_USHIFT)
4792 #define FL_USER0 ((VALUE)RUBY_FL_USER0)
4793 #define FL_USER1 ((VALUE)RUBY_FL_USER1)
4794 #define FL_USER2 ((VALUE)RUBY_FL_USER2)
4795 #define FL_USER3 ((VALUE)RUBY_FL_USER3)
4796 #define FL_USER4 ((VALUE)RUBY_FL_USER4)
4797 #define FL_USER5 ((VALUE)RUBY_FL_USER5)
4798 #define FL_USER6 ((VALUE)RUBY_FL_USER6)
4799 #define FL_USER7 ((VALUE)RUBY_FL_USER7)
4800 #define FL_USER8 ((VALUE)RUBY_FL_USER8)
4801 #define FL_USER9 ((VALUE)RUBY_FL_USER9)
4802 #define FL_USER10 ((VALUE)RUBY_FL_USER10)
4803 #define FL_USER11 ((VALUE)RUBY_FL_USER11)
4804 #define FL_USER12 ((VALUE)RUBY_FL_USER12)
4805 #define FL_USER13 ((VALUE)RUBY_FL_USER13)
4806 #define FL_USER14 ((VALUE)RUBY_FL_USER14)
4807 #define FL_USER15 ((VALUE)RUBY_FL_USER15)
4808 #define FL_USER16 ((VALUE)RUBY_FL_USER16)
4809 #define FL_USER17 ((VALUE)RUBY_FL_USER17)
4810 #define FL_USER18 ((VALUE)RUBY_FL_USER18)
4811 #define FL_USER19 ((VALUE)(unsigned int)RUBY_FL_USER19)
4812 #define RB_SPECIAL_CONST_P(x) (RB_IMMEDIATE_P(x) || !RB_TEST(x))
4813 #define SPECIAL_CONST_P(x) RB_SPECIAL_CONST_P(x)
4814 #define RB_FL_ABLE(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) != RUBY_T_NODE)
4815 #define RB_FL_TEST_RAW(x,f) (RBASIC(x)->flags&(f))
4816 #define RB_FL_TEST(x,f) (RB_FL_ABLE(x)?RB_FL_TEST_RAW((x),(f)):0)
4817 #define RB_FL_ANY_RAW(x,f) RB_FL_TEST_RAW((x),(f))
4818 #define RB_FL_ANY(x,f) RB_FL_TEST((x),(f))
4819 #define RB_FL_ALL_RAW(x,f) (RB_FL_TEST_RAW((x),(f)) == (f))
4820 #define RB_FL_ALL(x,f) (RB_FL_TEST((x),(f)) == (f))
4821 #define RB_FL_SET_RAW(x,f) (void)(RBASIC(x)->flags |= (f))
4822 #define RB_FL_SET(x,f) (RB_FL_ABLE(x) ? RB_FL_SET_RAW(x, f) : (void)0)
4823 #define RB_FL_UNSET_RAW(x,f) (void)(RBASIC(x)->flags &= ~(VALUE)(f))
4824 #define RB_FL_UNSET(x,f) (RB_FL_ABLE(x) ? RB_FL_UNSET_RAW(x, f) : (void)0)
4825 #define RB_FL_REVERSE_RAW(x,f) (void)(RBASIC(x)->flags ^= (f))
4826 #define RB_FL_REVERSE(x,f) (RB_FL_ABLE(x) ? RB_FL_REVERSE_RAW(x, f) : (void)0)
4827 #define RB_OBJ_TAINTABLE(x) (RB_FL_ABLE(x) && RB_BUILTIN_TYPE(x) != RUBY_T_BIGNUM && RB_BUILTIN_TYPE(x) != RUBY_T_FLOAT)
4828 #define RB_OBJ_TAINTED_RAW(x) RB_FL_TEST_RAW(x, RUBY_FL_TAINT)
4829 #define RB_OBJ_TAINTED(x) (!!RB_FL_TEST((x), RUBY_FL_TAINT))
4830 #define RB_OBJ_TAINT_RAW(x) RB_FL_SET_RAW(x, RUBY_FL_TAINT)
4831 #define RB_OBJ_TAINT(x) (RB_OBJ_TAINTABLE(x) ? RB_OBJ_TAINT_RAW(x) : (void)0)
4832 #define RB_OBJ_UNTRUSTED(x) RB_OBJ_TAINTED(x)
4833 #define RB_OBJ_UNTRUST(x) RB_OBJ_TAINT(x)
4834 #define RB_OBJ_INFECT_RAW(x,s) RB_FL_SET_RAW(x, RB_OBJ_TAINTED_RAW(s))
4835 #define RB_OBJ_INFECT(x,s) ( (RB_OBJ_TAINTABLE(x) && RB_FL_ABLE(s)) ? RB_OBJ_INFECT_RAW(x, s) : (void)0)
4836 #define RB_OBJ_FROZEN_RAW(x) (RBASIC(x)->flags&RUBY_FL_FREEZE)
4837 #define RB_OBJ_FROZEN(x) (!RB_FL_ABLE(x) || RB_OBJ_FROZEN_RAW(x))
4838 #define RB_OBJ_FREEZE_RAW(x) (void)(RBASIC(x)->flags |= RUBY_FL_FREEZE)
4839 #define RB_OBJ_FREEZE(x) rb_obj_freeze_inline((VALUE)x)
4840 #define FL_ABLE(x) RB_FL_ABLE(x)
4841 #define FL_TEST_RAW(x,f) RB_FL_TEST_RAW(x,f)
4842 #define FL_TEST(x,f) RB_FL_TEST(x,f)
4843 #define FL_ANY_RAW(x,f) RB_FL_ANY_RAW(x,f)
4844 #define FL_ANY(x,f) RB_FL_ANY(x,f)
4845 #define FL_ALL_RAW(x,f) RB_FL_ALL_RAW(x,f)
4846 #define FL_ALL(x,f) RB_FL_ALL(x,f)
4847 #define FL_SET_RAW(x,f) RB_FL_SET_RAW(x,f)
4848 #define FL_SET(x,f) RB_FL_SET(x,f)
4849 #define FL_UNSET_RAW(x,f) RB_FL_UNSET_RAW(x,f)
4850 #define FL_UNSET(x,f) RB_FL_UNSET(x,f)
4851 #define FL_REVERSE_RAW(x,f) RB_FL_REVERSE_RAW(x,f)
4852 #define FL_REVERSE(x,f) RB_FL_REVERSE(x,f)
4853 #define OBJ_TAINTABLE(x) RB_OBJ_TAINTABLE(x)
4854 #define OBJ_TAINTED_RAW(x) RB_OBJ_TAINTED_RAW(x)
4855 #define OBJ_TAINTED(x) RB_OBJ_TAINTED(x)
4856 #define OBJ_TAINT_RAW(x) RB_OBJ_TAINT_RAW(x)
4857 #define OBJ_TAINT(x) RB_OBJ_TAINT(x)
4858 #define OBJ_UNTRUSTED(x) RB_OBJ_UNTRUSTED(x)
4859 #define OBJ_UNTRUST(x) RB_OBJ_UNTRUST(x)
4860 #define OBJ_INFECT_RAW(x,s) RB_OBJ_INFECT_RAW(x,s)
4861 #define OBJ_INFECT(x,s) RB_OBJ_INFECT(x,s)
4862 #define OBJ_FROZEN_RAW(x) RB_OBJ_FROZEN_RAW(x)
4863 #define OBJ_FROZEN(x) RB_OBJ_FROZEN(x)
4864 #define OBJ_FREEZE_RAW(x) RB_OBJ_FREEZE_RAW(x)
4865 #define OBJ_FREEZE(x) RB_OBJ_FREEZE(x)
4868 rb_obj_freeze_inline(
VALUE x)
4877 #define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
4879 static inline void *rb_data_object_get_warning(
VALUE)
__attribute__((warning(
"untyped Data is unsafe; use TypedData instead")));
4885 #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)))
4886 static inline void *
4890 return ((
struct RData *)
obj)->data;
4892 static inline void *
4893 rb_data_object_get_warning(
VALUE obj)
4921 #define rb_data_object_wrap_0 rb_data_object_wrap
4922 #define rb_data_object_wrap_1 rb_data_object_wrap_warning
4923 #define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_, RUBY_UNTYPED_DATA_WARNING)
4924 #define rb_data_object_get_0 rb_data_object_get
4925 #define rb_data_object_get_1 rb_data_object_get_warning
4926 #define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_, RUBY_UNTYPED_DATA_WARNING)
4927 #define rb_data_object_make_0 rb_data_object_make
4928 #define rb_data_object_make_1 rb_data_object_make_warning
4929 #define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_, RUBY_UNTYPED_DATA_WARNING)
4930 #define RB_OBJ_PROMOTED_RAW(x) RB_FL_ALL_RAW(x, RUBY_FL_PROMOTED)
4931 #define RB_OBJ_PROMOTED(x) (RB_SPECIAL_CONST_P(x) ? 0 : RB_OBJ_PROMOTED_RAW(x))
4932 #define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
4935 #define OBJ_PROMOTED_RAW(x) RB_OBJ_PROMOTED_RAW(x)
4936 #define OBJ_PROMOTED(x) RB_OBJ_PROMOTED(x)
4937 #define OBJ_WB_UNPROTECT(x) RB_OBJ_WB_UNPROTECT(x)
4938 #define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
4939 #define RB_OBJ_WRITTEN(a,oldv,b) rb_obj_written((VALUE)(a), (VALUE)(oldv), (VALUE)(b), __FILE__, __LINE__)
4940 #define USE_RGENGC_LOGGING_WB_UNPROTECT 0
4962 #define RUBY_INTEGER_UNIFICATION 1
4963 #define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
4972 rb_int2num_inline(
int v)
4974 if ((((
v) < (0x7fffffffL>>1)+1) && ((
v) >= (((
long)(-0x7fffffffL -1
L))>>(
int)(1)))))
4979 #define RB_INT2NUM(x) rb_int2num_inline(x)
4981 rb_uint2num_inline(
unsigned int v)
4983 if (((
v) < (0x7fffffffL>>1)+1))
4988 #define RB_UINT2NUM(x) rb_uint2num_inline(x)
4989 #define INT2NUM(x) RB_INT2NUM(x)
4990 #define UINT2NUM(x) RB_UINT2NUM(x)
4992 rb_long2num_inline(
long v)
4994 if ((((
v) < (0x7fffffffL>>1)+1) && ((
v) >= (((
long)(-0x7fffffffL -1
L))>>(
int)(1)))))
4999 #define RB_LONG2NUM(x) rb_long2num_inline(x)
5001 rb_ulong2num_inline(
unsigned long v)
5003 if (((
v) < (0x7fffffffL>>1)+1))
5008 #define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
5010 rb_num2char_inline(
VALUE x)
5015 return (
char)(((
int)rb_num2long_inline(x)) & 0xff);
5017 #define RB_NUM2CHR(x) rb_num2char_inline(x)
5018 #define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
5019 #define LONG2NUM(x) RB_LONG2NUM(x)
5020 #define ULONG2NUM(x) RB_ULONG2NUM(x)
5021 #define USHORT2NUM(x) RB_INT2FIX(x)
5022 #define NUM2CHR(x) RB_NUM2CHR(x)
5023 #define CHR2FIX(x) RB_CHR2FIX(x)
5024 #define RB_ST2FIX(h) RB_LONG2FIX((long)(h))
5025 #define ST2FIX(h) RB_ST2FIX(h)
5026 #define RB_ALLOC_N(type,n) ((type*)ruby_xmalloc2((size_t)(n),sizeof(type)))
5027 #define RB_ALLOC(type) ((type*)ruby_xmalloc(sizeof(type)))
5028 #define RB_ZALLOC_N(type,n) ((type*)ruby_xcalloc((size_t)(n),sizeof(type)))
5029 #define RB_ZALLOC(type) (RB_ZALLOC_N(type,1))
5030 #define RB_REALLOC_N(var,type,n) ((var)=(type*)ruby_xrealloc2((char*)(var),(size_t)(n),sizeof(type)))
5031 #define ALLOC_N(type,n) RB_ALLOC_N(type,n)
5032 #define ALLOC(type) RB_ALLOC(type)
5033 #define ZALLOC_N(type,n) RB_ZALLOC_N(type,n)
5034 #define ZALLOC(type) RB_ZALLOC(type)
5035 #define REALLOC_N(var,type,n) RB_REALLOC_N(var,type,n)
5036 #define ALLOCA_N(type,n) (type*)__builtin_alloca_with_align((sizeof(type)*(n)), RUBY_ALIGNOF(type) * CHAR_BIT)
5041 #define DSIZE_T unsigned LONG_LONG
5043 rb_mul_size_overflow(
size_t a,
size_t b,
size_t max,
size_t *c)
5046 unsigned long long c2 = (
unsigned long long)a * (
unsigned long long)b;
5047 if (c2 > max)
return 1;
5051 static inline void *
5052 rb_alloc_tmp_buffer2(
volatile VALUE *store,
long count,
size_t elsize)
5055 if (elsize ==
sizeof(
VALUE)) {
5061 size_t size, max = 0x7fffffff
L -
sizeof(
VALUE) + 1;
5069 #define RUBY_ALLOCV_LIMIT 1024
5070 #define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
5071 #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))))
5072 #define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
5073 #define ALLOCV(v,n) RB_ALLOCV(v, n)
5074 #define ALLOCV_N(type,v,n) RB_ALLOCV_N(type, v, n)
5075 #define ALLOCV_END(v) RB_ALLOCV_END(v)
5076 #define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(size_t)(n))
5077 #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n))
5078 #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n))
5079 #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n))
5131 #define RUBY_CONST_ID_CACHE(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; }
5132 #define RUBY_CONST_ID(var,str) do RUBY_CONST_ID_CACHE((var) =, (str)) while (0)
5133 #define CONST_ID_CACHE(result,str) RUBY_CONST_ID_CACHE(result, str)
5134 #define CONST_ID(var,str) RUBY_CONST_ID(var, str)
5135 #define rb_intern(str) (__builtin_constant_p(str) ? __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : rb_intern(str))
5136 #define rb_intern_const(str) (__builtin_constant_p(str) ? __extension__ (rb_intern2((str), (long)strlen(str))) : (rb_intern)(str))
5137 #define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
5138 #define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
5139 __attribute__ ((__error__ (
" argument length doesn't match")))
int rb_varargs_bad_length(
int,
int);
5140 #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))
5152 #define rb_funcall2 rb_funcallv
5153 #define rb_funcall3 rb_funcallv_public
5159 #define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
5160 #define RB_SCAN_ARGS_KEYWORDS 1
5161 #define RB_SCAN_ARGS_EMPTY_KEYWORDS 2
5162 #define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
5169 #define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
5177 #define ruby_verbose (*rb_ruby_verbose_ptr())
5178 #define ruby_debug (*rb_ruby_debug_ptr())
5180 #define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
5181 #define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
5207 #define RB_BLOCK_CALL_FUNC_STRICT 1
5208 #define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
5209 #define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
5220 #define RB_NO_KEYWORDS 0
5221 #define RB_PASS_KEYWORDS 1
5222 #define RB_PASS_EMPTY_KEYWORDS 2
5223 #define RB_PASS_CALLED_KEYWORDS 3
5334 return ((
struct RBasic*)(
obj))->klass;
5352 #define rb_type_p(obj,type) __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : rb_type(obj) == (type))
5353 #define rb_special_const_p(obj) __extension__ ({ VALUE special_const_obj = (obj); (int)(RB_SPECIAL_CONST_P(special_const_obj) ? RUBY_Qtrue : RUBY_Qfalse); })
5354 #define RUBY_INTERN_H 1
5357 #pragma GCC visibility push(default)
5360 #define ST_DATA_T_DEFINED
5363 #define MAX_ST_INDEX_VAL (~(st_index_t) 0)
5367 #define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
5372 #define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
5373 #define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
5385 #define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
5388 #define st_init_table rb_st_init_table
5390 #define st_init_table_with_size rb_st_init_table_with_size
5392 #define st_init_numtable rb_st_init_numtable
5394 #define st_init_numtable_with_size rb_st_init_numtable_with_size
5396 #define st_init_strtable rb_st_init_strtable
5398 #define st_init_strtable_with_size rb_st_init_strtable_with_size
5400 #define st_init_strcasetable rb_st_init_strcasetable
5402 #define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
5404 #define st_delete rb_st_delete
5406 #define st_delete_safe rb_st_delete_safe
5408 #define st_shift rb_st_shift
5410 #define st_insert rb_st_insert
5412 #define st_insert2 rb_st_insert2
5414 #define st_lookup rb_st_lookup
5416 #define st_get_key rb_st_get_key
5419 #define st_update rb_st_update
5423 #define st_foreach_with_replace rb_st_foreach_with_replace
5425 #define st_foreach rb_st_foreach
5427 #define st_foreach_check rb_st_foreach_check
5429 #define st_keys rb_st_keys
5431 #define st_keys_check rb_st_keys_check
5433 #define st_values rb_st_values
5435 #define st_values_check rb_st_values_check
5437 #define st_add_direct rb_st_add_direct
5439 #define st_free_table rb_st_free_table
5441 #define st_cleanup_safe rb_st_cleanup_safe
5443 #define st_clear rb_st_clear
5445 #define st_copy rb_st_copy
5447 #define st_numcmp rb_st_numcmp
5449 #define st_numhash rb_st_numhash
5451 #define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
5453 #define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
5454 #define st_strcasecmp rb_st_locale_insensitive_strcasecmp
5455 #define st_strncasecmp rb_st_locale_insensitive_strncasecmp
5457 #define st_memsize rb_st_memsize
5459 #define st_hash rb_st_hash
5461 #define st_hash_uint32 rb_st_hash_uint32
5463 #define st_hash_uint rb_st_hash_uint
5465 #define st_hash_end rb_st_hash_end
5467 #define st_hash_start(h) ((st_index_t)(h))
5470 #pragma GCC visibility pop
5472 #define MJIT_STATIC static
5474 #pragma GCC visibility push(default)
5476 #define UNLIMITED_ARGUMENTS (-1)
5520 #define rb_ary_new2 rb_ary_new_capa
5521 #define rb_ary_new3 rb_ary_new_from_args
5522 #define rb_ary_new4 rb_ary_new_from_values
5535 #define rb_big2int(x) rb_big2long(x)
5537 #define rb_big2uint(x) rb_big2ulong(x)
5561 #define INTEGER_PACK_MSWORD_FIRST 0x01
5562 #define INTEGER_PACK_LSWORD_FIRST 0x02
5563 #define INTEGER_PACK_MSBYTE_FIRST 0x10
5564 #define INTEGER_PACK_LSBYTE_FIRST 0x20
5565 #define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
5566 #define INTEGER_PACK_2COMP 0x80
5567 #define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
5568 #define INTEGER_PACK_FORCE_BIGNUM 0x100
5569 #define INTEGER_PACK_NEGATIVE 0x200
5570 #define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
5571 #define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
5572 int rb_integer_pack(
VALUE val,
void *words,
size_t numwords,
size_t wordsize,
size_t nails,
int flags);
5578 #define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
5579 #define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
5581 #define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
5582 #define rb_rational_new2(x,y) rb_rational_new((x), (y))
5584 #define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
5585 #define rb_Rational2(x,y) rb_Rational((x), (y))
5591 #define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
5592 #define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
5594 #define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
5595 #define rb_complex_new2(x,y) rb_complex_new((x), (y))
5610 #define rb_complex_add rb_complex_plus
5611 #define rb_complex_sub rb_complex_minus
5612 #define rb_complex_nagate rb_complex_uminus
5614 #define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
5615 #define rb_Complex2(x,y) rb_Complex((x), (y))
5654 #define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
5655 #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))
5656 #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)
5657 #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)
5658 #define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
5659 #define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
5670 #define rb_exc_new2 rb_exc_new_cstr
5671 #define rb_exc_new3 rb_exc_new_str
5683 #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)
5684 #define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
5686 #define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
5687 #define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
5696 if ((
argc < min) || (max != (-1) &&
argc > max))
5700 #define rb_check_arity rb_check_arity
5715 #define rb_fd_ptr(f) ((f)->fdset)
5716 #define rb_fd_max(f) ((f)->maxfd)
5723 #define HAVE_RB_DEFINE_ALLOC_FUNC 1
5845 #define st_foreach_safe rb_st_foreach_safe
5870 #define rb_defout rb_stdout
5905 #define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
5912 #define RB_NUM_COERCE_FUNCS_NEED_OPID 1
5994 #define rb_memcmp memcmp
6004 #define HAVE_RB_REG_NEW_STR 1
6012 #define rb_argv rb_get_argv()
6018 #define posix_signal ruby_posix_signal
6066 #define rb_str_dup_frozen rb_str_new_frozen
6088 #define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
6089 #define rb_hash_uint(h,i) st_hash_uint((h), (i))
6090 #define rb_hash_end(h) st_hash_end(h)
6112 #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)) )
6113 #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) )
6114 #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)) )
6115 #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)) )
6116 #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) )
6117 #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) )
6118 #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) )
6119 #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) )
6120 #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) )
6121 #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) )
6122 #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)) )
6123 #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)) )
6124 #define rb_str_new2 rb_str_new_cstr
6125 #define rb_str_new3 rb_str_new_shared
6126 #define rb_str_new4 rb_str_new_frozen
6127 #define rb_str_new5 rb_str_new_with_class
6128 #define rb_tainted_str_new2 rb_tainted_str_new_cstr
6129 #define rb_str_buf_new2 rb_str_buf_new_cstr
6130 #define rb_usascii_str_new2 rb_usascii_str_new_cstr
6131 #define rb_str_buf_cat rb_str_cat
6132 #define rb_str_buf_cat2 rb_str_cat_cstr
6133 #define rb_str_cat2 rb_str_cat_cstr
6134 #define rb_strlen_lit(str) (sizeof(str "") - 1)
6135 #define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
6136 #define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
6137 #define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
6138 #define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
6139 #define rb_str_new_literal(str) rb_str_new_lit(str)
6140 #define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
6141 #define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
6142 #define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
6161 #define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
6162 #define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
6233 #pragma GCC visibility pop
6235 #define rb_f_notimplement_p(f) __builtin_types_compatible_p(__typeof__(f),__typeof__(rb_f_notimplement))
6251 rb_array_len(
VALUE a)
6256 #define FIX_CONST_VALUE_PTR(x) (x)
6257 static inline const VALUE *
6258 rb_array_const_ptr_transient(
VALUE a)
6262 static inline const VALUE *
6263 rb_array_const_ptr(
VALUE a)
6269 return rb_array_const_ptr_transient(a);
6271 static inline VALUE *
6272 rb_array_ptr_use_start(
VALUE a,
int allow_transient)
6275 if (!allow_transient) {
6281 (
void)allow_transient;
6285 rb_array_ptr_use_end(
VALUE a,
int allow_transient)
6289 (
void)allow_transient;
6292 #define HAVE_NATIVETHREAD
6294 #define RUBY_EVENT_NONE 0x0000
6295 #define RUBY_EVENT_LINE 0x0001
6296 #define RUBY_EVENT_CLASS 0x0002
6297 #define RUBY_EVENT_END 0x0004
6298 #define RUBY_EVENT_CALL 0x0008
6299 #define RUBY_EVENT_RETURN 0x0010
6300 #define RUBY_EVENT_C_CALL 0x0020
6301 #define RUBY_EVENT_C_RETURN 0x0040
6302 #define RUBY_EVENT_RAISE 0x0080
6303 #define RUBY_EVENT_ALL 0x00ff
6304 #define RUBY_EVENT_B_CALL 0x0100
6305 #define RUBY_EVENT_B_RETURN 0x0200
6306 #define RUBY_EVENT_THREAD_BEGIN 0x0400
6307 #define RUBY_EVENT_THREAD_END 0x0800
6308 #define RUBY_EVENT_FIBER_SWITCH 0x1000
6309 #define RUBY_EVENT_SCRIPT_COMPILED 0x2000
6310 #define RUBY_EVENT_TRACEPOINT_ALL 0xffff
6311 #define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
6312 #define RUBY_INTERNAL_EVENT_SWITCH 0x040000
6313 #define RUBY_EVENT_SWITCH 0x040000
6314 #define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
6315 #define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
6316 #define RUBY_INTERNAL_EVENT_GC_START 0x400000
6317 #define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
6318 #define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
6319 #define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
6320 #define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
6321 #define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
6322 #define RUBY_INTERNAL_EVENT_MASK 0xffff0000
6325 #define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
6328 static inline int rb_isascii(
int c){
return '\0' <= c && c <=
'\x7f'; }
6329 static inline int rb_isupper(
int c){
return 'A' <= c && c <=
'Z'; }
6330 static inline int rb_islower(
int c){
return 'a' <= c && c <=
'z'; }
6331 static inline int rb_isalpha(
int c){
return rb_isupper(c) || rb_islower(c); }
6332 static inline int rb_isdigit(
int c){
return '0' <= c && c <=
'9'; }
6333 static inline int rb_isalnum(
int c){
return rb_isalpha(c) || rb_isdigit(c); }
6334 static inline int rb_isxdigit(
int c){
return rb_isdigit(c) || (
'A' <= c && c <=
'F') || (
'a' <= c && c <=
'f'); }
6335 static inline int rb_isblank(
int c){
return c ==
' ' || c ==
'\t'; }
6336 static inline int rb_isspace(
int c){
return c ==
' ' || (
'\t' <= c && c <=
'\r'); }
6337 static inline int rb_iscntrl(
int c){
return (
'\0' <= c && c <
' ') || c ==
'\x7f'; }
6338 static inline int rb_isprint(
int c){
return ' ' <= c && c <=
'\x7e'; }
6339 static inline int rb_ispunct(
int c){
return !rb_isalnum(c); }
6340 static inline int rb_isgraph(
int c){
return '!' <= c && c <=
'\x7e'; }
6341 static inline int rb_tolower(
int c) {
return rb_isupper(c) ? (c|0x20) : c; }
6342 static inline int rb_toupper(
int c) {
return rb_islower(c) ? (c&0x5f) : c; }
6343 #define ISASCII(c) rb_isascii(c)
6344 #define ISPRINT(c) rb_isprint(c)
6345 #define ISGRAPH(c) rb_isgraph(c)
6346 #define ISSPACE(c) rb_isspace(c)
6347 #define ISUPPER(c) rb_isupper(c)
6348 #define ISLOWER(c) rb_islower(c)
6349 #define ISALNUM(c) rb_isalnum(c)
6350 #define ISALPHA(c) rb_isalpha(c)
6351 #define ISDIGIT(c) rb_isdigit(c)
6352 #define ISXDIGIT(c) rb_isxdigit(c)
6353 #define ISBLANK(c) rb_isblank(c)
6354 #define ISCNTRL(c) rb_iscntrl(c)
6355 #define ISPUNCT(c) rb_ispunct(c)
6356 #define TOUPPER(c) rb_toupper(c)
6357 #define TOLOWER(c) rb_tolower(c)
6360 #define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
6361 #define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
6363 #define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
6364 #define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
6368 #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__))
6370 __attribute__ ((__error__ ("variable argument length doesn't match")))
void rb_scan_args_length_mismatch(
const char*,
int);
6371 #define rb_scan_args_isdigit(c) ((unsigned char)((c)-'0')<10)
6372 #define rb_scan_args_count_end(fmt,ofs,vari) (fmt[ofs] ? -1 : (vari))
6373 #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))
6374 #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))
6375 #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')))
6376 #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))
6377 #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'))
6378 #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'))
6379 #define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
6380 #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)
6383 rb_scan_args_lead_p(
const char *
fmt)
6385 return ((
unsigned char)((
fmt[0])-
'0')<10);
6387 __attribute__ ((__always_inline__))
static int rb_scan_args_n_lead(
const char *
fmt);
6389 rb_scan_args_n_lead(
const char *
fmt)
6391 return (rb_scan_args_lead_p(
fmt) ?
fmt[0]-
'0' : 0);
6393 __attribute__ ((__always_inline__))
static int rb_scan_args_opt_p(
const char *
fmt);
6395 rb_scan_args_opt_p(
const char *
fmt)
6397 return (rb_scan_args_lead_p(
fmt) && ((
unsigned char)((
fmt[1])-
'0')<10));
6399 __attribute__ ((__always_inline__))
static int rb_scan_args_n_opt(
const char *
fmt);
6401 rb_scan_args_n_opt(
const char *
fmt)
6403 return (rb_scan_args_opt_p(
fmt) ?
fmt[1]-
'0' : 0);
6405 __attribute__ ((__always_inline__))
static int rb_scan_args_var_idx(
const char *
fmt);
6407 rb_scan_args_var_idx(
const char *
fmt)
6409 return (!rb_scan_args_lead_p(
fmt) ? 0 : !((
unsigned char)((
fmt[1])-
'0')<10) ? 1 : 2);
6411 __attribute__ ((__always_inline__))
static int rb_scan_args_f_var(
const char *
fmt);
6413 rb_scan_args_f_var(
const char *
fmt)
6415 return (
fmt[rb_scan_args_var_idx(
fmt)]==
'*');
6417 __attribute__ ((__always_inline__))
static int rb_scan_args_trail_idx(
const char *
fmt);
6419 rb_scan_args_trail_idx(
const char *
fmt)
6421 const int idx = rb_scan_args_var_idx(
fmt);
6422 return idx+(
fmt[idx]==
'*');
6424 __attribute__ ((__always_inline__))
static int rb_scan_args_n_trail(
const char *
fmt);
6426 rb_scan_args_n_trail(
const char *
fmt)
6428 const int idx = rb_scan_args_trail_idx(
fmt);
6429 return (((
unsigned char)((
fmt[idx])-
'0')<10) ?
fmt[idx]-
'0' : 0);
6431 __attribute__ ((__always_inline__))
static int rb_scan_args_hash_idx(
const char *
fmt);
6433 rb_scan_args_hash_idx(
const char *
fmt)
6435 const int idx = rb_scan_args_trail_idx(
fmt);
6436 return idx+((
unsigned char)((
fmt[idx])-
'0')<10);
6438 __attribute__ ((__always_inline__))
static int rb_scan_args_f_hash(
const char *
fmt);
6440 rb_scan_args_f_hash(
const char *
fmt)
6442 return (
fmt[rb_scan_args_hash_idx(
fmt)]==
':');
6444 __attribute__ ((__always_inline__))
static int rb_scan_args_block_idx(
const char *
fmt);
6446 rb_scan_args_block_idx(
const char *
fmt)
6448 const int idx = rb_scan_args_hash_idx(
fmt);
6449 return idx+(
fmt[idx]==
':');
6451 __attribute__ ((__always_inline__))
static int rb_scan_args_f_block(
const char *
fmt);
6453 rb_scan_args_f_block(
const char *
fmt)
6455 return (
fmt[rb_scan_args_block_idx(
fmt)]==
'&');
6457 #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)
6458 __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);
6465 int i, argi = 0, vari = 0, last_idx = -1;
6469 int empty_keyword_given = 0;
6470 VALUE tmp_buffer = 0;
6471 if (!keyword_given) {
6474 if (
argc > 0 && !(
f_hash && empty_keyword_given)) {
6477 if (keyword_given) {
6479 rb_warn(
"Keyword flag set when calling rb_scan_args, but last entry is not a hash");
6487 rb_warn(
"The last argument is nil, treating as empty keywords");
6496 if (!(last_hash = hash)) {
6497 if (!keyword_given) {
6498 rb_warn(
"Using the last argument as keyword parameters is deprecated");
6503 rb_warn(
"The last argument is split into positional and keyword parameters");
6504 last_idx =
argc - 1;
6509 else if (
f_hash && keyword_given && n_mand ==
argc) {
6510 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
6513 if (
f_hash && n_mand > 0 && n_mand ==
argc+1 && empty_keyword_given) {
6519 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
6521 if (
argc < n_mand) {
6526 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6532 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6556 if (var) *var = (argi == last_idx) ? last_hash :
argv[argi];
6561 if (var) *var = hash;
6580 #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); })
6581 #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); })
6582 #define RUBY_SUBST_H 1
6585 #define snprintf ruby_snprintf
6586 #define vsnprintf ruby_vsnprintf
6594 #define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
6613 #pragma GCC visibility pop
6615 #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
6620 #define __bool_true_false_are_defined 1
6621 #define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
6622 #define LIKELY(x) RB_LIKELY(x)
6623 #define UNLIKELY(x) RB_UNLIKELY(x)
6624 #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE("address", NOINLINE(x))
6626 #define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
6627 #define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
6628 #define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
6629 #define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
6630 #define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
6631 #define STATIC_ASSERT(name,expr) _Static_assert(expr, #name ": " #expr)
6632 #define SIGNED_INTEGER_TYPE_P(int_type) (0 > ((int_type)0)-1)
6633 #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))
6634 #define SIGNED_INTEGER_MIN(sint_type) (-SIGNED_INTEGER_MAX(sint_type)-1)
6635 #define UNSIGNED_INTEGER_MAX(uint_type) (~(uint_type)0)
6636 #define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
6637 #define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
6638 #define TIMET_MAX_PLUS_ONE (2*(double)(TIMET_MAX/2+1))
6639 #define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
6640 #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)))
6641 #define MUL_OVERFLOW_FIXNUM_P(a,b) ({ struct { long fixnum : SIZEOF_LONG * CHAR_BIT - 1; } c; __builtin_mul_overflow_p((a), (b), c.fixnum); })
6642 #define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6643 #define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6644 #define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
6645 #define swap16(x) __builtin_bswap16(x)
6646 #define swap32(x) __builtin_bswap32(x)
6647 #define swap64(x) __builtin_bswap64(x)
6648 static inline unsigned int
6649 nlz_int(
unsigned int x)
6651 if (x == 0)
return 4 * 8;
6652 return (
unsigned int)__builtin_clz(x);
6654 static inline unsigned int
6655 nlz_long(
unsigned long x)
6657 if (x == 0)
return 4 * 8;
6658 return (
unsigned int)__builtin_clzl(x);
6660 static inline unsigned int
6661 nlz_long_long(
unsigned long long x)
6663 if (x == 0)
return 8 * 8;
6664 return (
unsigned int)__builtin_clzll(x);
6666 static inline unsigned int
6671 static inline unsigned int
6674 return (
unsigned int)__builtin_popcount(x);
6679 return __builtin_popcountll(x);
6684 return rb_popcount32(x);
6689 return __builtin_ctz(x);
6694 return __builtin_ctzll(x);
6699 return ntz_int32(x);
6701 #define DLONG LONG_LONG
6702 #define DL2NUM(x) LL2NUM(x)
6704 rb_overflowed_fix_to_int(
long x)
6706 return (
long)((
unsigned long)(x >> 1) ^ (1LU << (4 * 8 - 1)));
6712 if (__builtin_add_overflow((
long)x, (
long)y-1, &lz)) {
6713 return rb_int2big(rb_overflowed_fix_to_int(lz));
6723 if (__builtin_sub_overflow((
long)x, (
long)y-1, &lz)) {
6724 return rb_int2big(rb_overflowed_fix_to_int(lz));
6733 long lx = ((
long)(((
long)(x))>>(
int)(1)));
6734 long ly = ((
long)(((
long)(y))>>(
int)(1)));
6735 return rb_ll2inum((
long long)lx * (
long long)ly);
6740 long x = ((
long)(((
long)(a))>>(
int)(1)));
6741 long y = ((
long)(((
long)(b))>>(
int)(1)));
6743 if (x == (((
long)(-0x7fffffff
L -1
L))>>(
int)(1)) && y == -1) {
6744 if (divp) *divp = rb_long2num_inline(-(((
long)(-0x7fffffffL -1
L))>>(
int)(1)));
6750 if (y > 0 ? mod < 0 : mod > 0) {
6761 rb_fix_divmod_fix(x, y, &
div, ((
void *)0));
6768 rb_fix_divmod_fix(x, y, ((
void *)0), &
mod);
6771 #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_LONG_LONG * CHAR_BIT - nlz_long_long((unsigned LONG_LONG)(x)))
6772 #define BDIGIT unsigned int
6773 #define SIZEOF_BDIGIT SIZEOF_INT
6774 #define BDIGIT_DBL unsigned LONG_LONG
6775 #define BDIGIT_DBL_SIGNED LONG_LONG
6776 #define PRI_BDIGIT_PREFIX ""
6777 #define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
6778 #define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
6779 #define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
6780 #define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
6781 #define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
6782 #define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
6783 #define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
6784 #define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
6785 #define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
6786 #define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
6787 #define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
6788 #define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
6789 #define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
6790 #define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
6791 #define BIGNUM_EMBED_LEN_NUMBITS 3
6792 #define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
6794 struct RBasic
basic;
6803 #define BIGNUM_SIGN_BIT ((VALUE)FL_USER1)
6804 #define BIGNUM_SIGN(b) ((RBASIC(b)->flags & BIGNUM_SIGN_BIT) != 0)
6805 #define BIGNUM_SET_SIGN(b,sign) ((sign) ? (RBASIC(b)->flags |= BIGNUM_SIGN_BIT) : (RBASIC(b)->flags &= ~BIGNUM_SIGN_BIT))
6806 #define BIGNUM_POSITIVE_P(b) BIGNUM_SIGN(b)
6807 #define BIGNUM_NEGATIVE_P(b) (!BIGNUM_SIGN(b))
6808 #define BIGNUM_NEGATE(b) (RBASIC(b)->flags ^= BIGNUM_SIGN_BIT)
6809 #define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
6810 #define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
6811 #define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
6812 #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)
6813 #define BIGNUM_DIGITS(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? RBIGNUM(b)->as.ary : RBIGNUM(b)->as.heap.digits)
6814 #define BIGNUM_LENINT(b) rb_long2int(BIGNUM_LEN(b))
6815 #define RBIGNUM(obj) (R_CAST(RBignum)(obj))
6817 struct RBasic
basic;
6821 #define RRATIONAL(obj) (R_CAST(RRational)(obj))
6822 #define RRATIONAL_SET_NUM(rat,n) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->num,(n))
6823 #define RRATIONAL_SET_DEN(rat,d) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->den,(d))
6825 struct RBasic
basic;
6828 #define RFLOAT(obj) (R_CAST(RFloat)(obj))
6830 struct RBasic
basic;
6834 #define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
6835 #define RCOMPLEX_SET_REAL(cmp,r) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->real,(r))
6836 #define RCOMPLEX_SET_IMAG(cmp,i) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->imag,(i))
6841 #define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
6846 #define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
6852 #define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
6854 #define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
6855 #define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
6856 #define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
6857 #define RHASH(obj) (R_CAST(RHash)(obj))
6858 #define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
6859 #define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
6860 #define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
6861 #define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
6862 #define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
6863 #define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
6864 #define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
6865 #define RHASH_TRANSIENT_P(hash) FL_TEST_RAW((hash), RHASH_TRANSIENT_FLAG)
6866 #define RHASH_SET_TRANSIENT_FLAG(h) FL_SET_RAW(h, RHASH_TRANSIENT_FLAG)
6867 #define RHASH_UNSET_TRANSIENT_FLAG(h) FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG)
6870 struct RBasic
basic;
6883 #define RHASH_IFNONE(h) (RHASH(h)->ifnone)
6884 #define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
6891 #define RSTRUCT_EMBED_LEN_MAX RSTRUCT_EMBED_LEN_MAX
6892 #define RSTRUCT_EMBED_LEN_MASK RSTRUCT_EMBED_LEN_MASK
6893 #define RSTRUCT_EMBED_LEN_SHIFT RSTRUCT_EMBED_LEN_SHIFT
6901 #define RSTRUCT_TRANSIENT_P(st) FL_TEST_RAW((obj), RSTRUCT_TRANSIENT_FLAG)
6902 #define RSTRUCT_TRANSIENT_SET(st) FL_SET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
6903 #define RSTRUCT_TRANSIENT_UNSET(st) FL_UNSET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
6905 struct RBasic
basic;
6918 #define RSTRUCT_EMBED_LEN(st) (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT))
6919 #define RSTRUCT_LEN(st) rb_struct_len(st)
6920 #define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st))
6921 #define RSTRUCT_CONST_PTR(st) rb_struct_const_ptr(st)
6922 #define RSTRUCT_PTR(st) ((VALUE *)RSTRUCT_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(STRUCT, st)))
6923 #define RSTRUCT_SET(st,idx,v) RB_OBJ_WRITE(st, &RSTRUCT_CONST_PTR(st)[idx], (v))
6924 #define RSTRUCT_GET(st,idx) (RSTRUCT_CONST_PTR(st)[idx])
6925 #define RSTRUCT(obj) (R_CAST(RStruct)(obj))
6932 static inline const VALUE *
6937 static inline const VALUE *
6940 return ((
struct RStruct*)(
st))->as.heap.ptr;
6952 #define SERIALT2NUM ULL2NUM
6953 #define PRI_SERIALT_PREFIX PRI_LL_PREFIX
6954 #define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
6972 struct RBasic
basic;
6980 #define RCLASS_EXT(c) (RCLASS(c)->ptr)
6981 #define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
6982 #define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
6983 #define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
6984 #define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
6985 #define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
6986 #define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
6987 #define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
6988 #define RCLASS_SERIAL(c) (RCLASS_EXT(c)->class_serial)
6989 #define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
6990 #define RCLASS_CLONED FL_USER6
6991 #define RICLASS_IS_ORIGIN FL_USER5
6992 #define RCLASS_REFINED_BY_ANY FL_USER7
7020 #define IMEMO_DEBUG 0
7041 #define IMEMO_MASK 0x0f
7053 return expected_type == (((
struct RBasic*)(
imemo))->flags &
mask);
7060 #define IMEMO_FL_USHIFT (FL_USHIFT + 4)
7061 #define IMEMO_FL_USER0 FL_USER4
7062 #define IMEMO_FL_USER1 FL_USER5
7063 #define IMEMO_FL_USER2 FL_USER6
7064 #define IMEMO_FL_USER3 FL_USER7
7065 #define IMEMO_FL_USER4 FL_USER8
7073 #define THROW_DATA_CONSUMED IMEMO_FL_USER0
7081 #define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
7093 #define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7107 #define rb_imemo_tmpbuf_auto_free_pointer() rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0)
7109 #define RB_IMEMO_TMPBUF_PTR(v) ((void *)(((const struct rb_imemo_tmpbuf_struct *)(v))->ptr))
7110 static inline void *
7111 rb_imemo_tmpbuf_set_ptr(
VALUE v,
void *
ptr)
7116 rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(
VALUE str)
7146 #define MEMO_V1_SET(m,v) RB_OBJ_WRITE((m), &(m)->v1, (v))
7147 #define MEMO_V2_SET(m,v) RB_OBJ_WRITE((m), &(m)->v2, (v))
7148 #define MEMO_CAST(m) ((struct MEMO *)m)
7149 #define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7150 #define roomof(x,y) (((x) + (y) - 1) / (y))
7151 #define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
7152 #define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
7153 #define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
7154 #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))
7155 #define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
7156 #define rb_cFixnum rb_cInteger
7157 #define rb_cBignum rb_cInteger
7168 #define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
7169 #define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
7170 #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))))
7171 #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))
7180 #define ARRAY_DEBUG (0+RUBY_DEBUG)
7181 #define RARRAY_PTR_IN_USE_FLAG FL_USER14
7182 #define ARY_PTR_USING_P(ary) FL_TEST_RAW((ary), RARRAY_PTR_IN_USE_FLAG)
7183 #define RARY_TRANSIENT_SET(ary) FL_SET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7184 #define RARY_TRANSIENT_UNSET(ary) FL_UNSET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7196 #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); })
7198 rb_ary_entry_internal(
VALUE ary,
long offset)
7200 long len = rb_array_len(ary);
7201 const VALUE *
ptr = rb_array_const_ptr_transient(ary);
7207 else if (
len <= offset) {
7215 #define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, __func__)
7216 #define rp_m(msg,obj) do { fprintf(stderr, "%s", (msg)); rb_obj_info_dump((VALUE)obj); } while (0)
7217 #define bp() ruby_debug_breakpoint()
7304 #define rb_raise_cstr(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_cstr(mesg)))
7305 #define rb_raise_static(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_static(mesg, rb_strlen_lit(mesg))))
7307 #define rb_name_err_raise_str(mesg,recv,name) rb_exc_raise(rb_name_err_new(mesg, recv, name))
7308 #define rb_name_err_raise(mesg,recv,name) rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
7311 #define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
7317 #define id_signo ruby_static_id_signo
7318 #define id_status ruby_static_id_status
7335 #pragma GCC visibility push(default)
7338 #pragma GCC visibility pop
7339 #define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
7340 #define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
7353 #define ruby_sized_xrealloc(ptr,new_size,old_size) ruby_xrealloc(ptr, new_size)
7354 #define ruby_sized_xrealloc2(ptr,new_count,element_size,old_count) ruby_xrealloc2(ptr, new_count, element_size)
7355 #define ruby_sized_xfree(ptr,size) ruby_xfree(ptr)
7356 #define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n)
7359 #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))
7360 #define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
7370 #define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
7389 #pragma GCC visibility push(default)
7393 #pragma GCC visibility pop
7403 #define rb_io_fptr_finalize rb_io_fptr_finalize_internal
7423 #define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
7424 #define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
7425 #define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
7426 #define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
7427 #define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
7428 #define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
7435 #define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
7436 #define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
7437 #define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
7479 rb_num_compare_with_zero(
VALUE num,
ID mid)
7489 rb_num_positive_int_p(
VALUE num)
7498 return ((((
struct RBasic*)(num))->
flags & ((
VALUE)((
VALUE)RUBY_FL_USER1))) != 0);
7503 rb_num_negative_int_p(
VALUE num)
7508 return ((
long)(num) < 0);
7512 return (!((((
struct RBasic*)(num))->
flags & ((
VALUE)((
VALUE)RUBY_FL_USER1))) != 0));
7520 static inline double
7521 rb_float_flonum_value(
VALUE v)
7525 static inline double
7526 rb_float_noflonum_value(
VALUE v)
7528 return ((
struct RFloat *)
v)->float_value;
7530 static inline double
7531 rb_float_value_inline(
VALUE v)
7534 return rb_float_flonum_value(
v);
7536 return rb_float_noflonum_value(
v);
7539 rb_float_new_inline(
double d)
7543 #define rb_float_value(v) rb_float_value_inline(v)
7544 #define rb_float_new(d) rb_float_new_inline(d)
7561 #define RBASIC_CLEAR_CLASS(obj) memset(&(((struct RBasicRaw *)((VALUE)(obj)))->klass), 0, sizeof(VALUE))
7562 #define RBASIC_SET_CLASS_RAW(obj,cls) memcpy(&((struct RBasicRaw *)((VALUE)(obj)))->klass, &(cls), sizeof(VALUE))
7563 #define RBASIC_SET_CLASS(obj,cls) do { VALUE _obj_ = (obj); RB_OBJ_WRITE(_obj_, &((struct RBasicRaw *)(_obj_))->klass, cls); } while (0)
7564 #define USE_SYMBOL_GC 1
7567 #pragma GCC visibility push(default)
7571 #pragma GCC visibility pop
7589 #define RB_MAX_GROUPS (65536)
7619 unsigned exception : 1;
7636 #define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
7637 static inline size_t
7638 ARGVSTR2ARGC(
VALUE argv_str)
7648 #define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
7649 #define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
7650 #define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
7678 #define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
7679 #define rb_fstring_literal(str) rb_fstring_lit(str)
7681 #define rb_fstring_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_fstring_new((str), (long)strlen(str)) : rb_fstring_cstr(str) )
7686 #define QUOTE(str) rb_str_quote_unprintable(str)
7687 #define QUOTE_ID(id) rb_id_quote_unprintable(id)
7692 #define STR_NOEMBED FL_USER1
7693 #define STR_SHARED FL_USER2
7694 #define STR_EMBED_P(str) (!FL_TEST_RAW((str), STR_NOEMBED))
7695 #define STR_SHARED_P(s) FL_ALL_RAW((s), STR_NOEMBED|ELTS_SHARED)
7696 #define is_ascii_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT)
7697 #define is_broken_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN)
7707 rb_str_eql_internal(
const VALUE str1,
const VALUE str2)
7710 const char *ptr1, *ptr2;
7721 #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); })
7727 #define COVERAGE_INDEX_LINES 0
7728 #define COVERAGE_INDEX_BRANCHES 1
7729 #define COVERAGE_TARGET_LINES 1
7730 #define COVERAGE_TARGET_BRANCHES 2
7731 #define COVERAGE_TARGET_METHODS 4
7732 #define COVERAGE_TARGET_ONESHOT_LINES 8
7748 char *
ruby_dtoa(
double d_,
int mode,
int ndigits,
int *decpt,
int *sign,
char **rve);
7749 char *
ruby_hdtoa(
double d,
const char *xdigs,
int ndigits,
int *decpt,
int *sign,
char **rve);
7750 #define ROBJECT_TRANSIENT_FLAG FL_USER13
7751 #define ROBJ_TRANSIENT_P(obj) FL_TEST_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7752 #define ROBJ_TRANSIENT_SET(obj) FL_SET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7753 #define ROBJ_TRANSIENT_UNSET(obj) FL_UNSET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7821 #define CACHELINE 64
7862 #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); })
7863 #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); })
7874 #pragma GCC visibility push(default)
7910 #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)
7916 #define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
7956 #define RB_OBJ_GC_FLAGS_MAX 6
7963 #pragma GCC visibility pop
7965 #define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
7966 #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)
7967 #define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
7968 #define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
7969 #define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : RB_BUILTIN_TYPE(arg_obj); })
7970 #define FLEX_ARY_LEN
7971 #define BITFIELD(type,name,size) type name : size
7972 #define COMPILER_WARNING_PUSH _Pragma("GCC diagnostic push")
7973 #define COMPILER_WARNING_POP _Pragma("GCC diagnostic pop")
7974 #define COMPILER_WARNING_SPECIFIER(kind,msg) GCC diagnostic kind #msg
7975 #define COMPILER_WARNING_ERROR(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(error, flag))
7976 #define COMPILER_WARNING_IGNORED(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(ignored, flag))
7977 #define COMPILER_WARNING_PRAGMA(str) COMPILER_WARNING_PRAGMA_(str)
7978 #define COMPILER_WARNING_PRAGMA_(str) _Pragma(#str)
7979 #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; })
7980 #define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
7982 #define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
7985 #pragma GCC visibility push(default)
7991 #pragma GCC visibility pop
7993 #define vm_exec rb_vm_exec
7995 #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
7996 #define RUBY_MARK_FREE_DEBUG 0
7997 #define RUBY_MARK_ENTER(msg)
7998 #define RUBY_MARK_LEAVE(msg)
7999 #define RUBY_FREE_ENTER(msg)
8000 #define RUBY_FREE_LEAVE(msg)
8001 #define RUBY_GC_INFO if(0)printf
8002 #define RUBY_MARK_NO_PIN_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
8003 #define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
8004 #define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
8005 #define STACK_UPPER(x,a,b) (b)
8006 #define STACK_GROW_DIR_DETECTION
8007 #define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
8008 #define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
8014 #pragma GCC visibility push(default)
8024 int (*callback)(
void *start,
void *end,
size_t stride,
void *data),
8027 int (*callback)(
void *,
void *,
size_t,
void *),
8030 #pragma GCC visibility pop
8032 #define RUBY_VM_CORE_H
8033 #define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
8034 #define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
8037 #define assert RUBY_ASSERT
8038 #define VM_ASSERT(expr) ((void)0)
8039 #define VM_UNREACHABLE(func) UNREACHABLE
8040 #define RUBY_VM_THREAD_MODEL 2
8041 #define VM_INSN_INFO_TABLE_IMPL 2
8042 #define RUBY_NODE_H 1
8166 typedef struct RNode {
8192 #define RNODE(obj) (R_CAST(RNode)(obj))
8193 #define NODE_FL_NEWLINE (((VALUE)1)<<7)
8194 #define NODE_TYPESHIFT 8
8195 #define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
8196 #define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
8197 #define nd_set_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
8198 #define NODE_LSHIFT (NODE_TYPESHIFT+7)
8199 #define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
8200 #define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
8201 #define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
8202 #define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
8203 #define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
8204 #define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
8205 #define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
8206 #define nd_first_loc(n) ((n)->nd_loc.beg_pos)
8207 #define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
8208 #define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
8209 #define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
8210 #define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
8211 #define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
8212 #define nd_last_loc(n) ((n)->nd_loc.end_pos)
8213 #define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
8214 #define nd_node_id(n) ((n)->node_id)
8215 #define nd_set_node_id(n,id) ((n)->node_id = (id))
8216 #define nd_head u1.node
8217 #define nd_alen u2.argc
8218 #define nd_next u3.node
8219 #define nd_cond u1.node
8220 #define nd_body u2.node
8221 #define nd_else u3.node
8222 #define nd_resq u2.node
8223 #define nd_ensr u3.node
8224 #define nd_1st u1.node
8225 #define nd_2nd u2.node
8226 #define nd_stts u1.node
8227 #define nd_entry u3.entry
8228 #define nd_vid u1.id
8229 #define nd_cflag u2.id
8230 #define nd_cval u3.value
8231 #define nd_oid u1.id
8232 #define nd_tbl u1.tbl
8233 #define nd_var u1.node
8234 #define nd_iter u3.node
8235 #define nd_value u2.node
8236 #define nd_aid u3.id
8237 #define nd_lit u1.value
8238 #define nd_rest u1.id
8239 #define nd_opt u1.node
8240 #define nd_pid u1.id
8241 #define nd_plen u2.argc
8242 #define nd_recv u1.node
8243 #define nd_mid u2.id
8244 #define nd_args u3.node
8245 #define nd_ainfo u3.args
8246 #define nd_defn u3.node
8247 #define nd_cpath u1.node
8248 #define nd_super u3.node
8249 #define nd_beg u1.node
8250 #define nd_end u2.node
8251 #define nd_state u3.state
8252 #define nd_rval u2.value
8253 #define nd_nth u2.argc
8254 #define nd_tag u1.id
8255 #define nd_alias u1.id
8256 #define nd_orig u2.id
8257 #define nd_undef u2.node
8258 #define nd_brace u2.argc
8259 #define nd_pconst u1.node
8260 #define nd_pkwargs u2.node
8261 #define nd_pkwrestarg u3.node
8262 #define nd_apinfo u3.apinfo
8263 #define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
8264 #define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
8265 #define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
8266 #define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
8267 #define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
8268 #define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
8269 #define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
8270 #define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
8271 #define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
8272 #define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
8273 #define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
8274 #define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
8275 #define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
8276 #define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
8277 #define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
8278 #define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
8279 #define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
8280 #define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
8281 #define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
8282 #define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
8283 #define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
8284 #define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
8285 #define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
8286 #define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
8287 #define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
8288 #define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
8289 #define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
8290 #define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
8291 #define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
8292 #define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
8293 #define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
8294 #define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
8295 #define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
8296 #define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v),loc)
8297 #define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
8298 #define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
8299 #define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
8300 #define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
8301 #define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
8302 #define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
8303 #define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
8304 #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)
8305 #define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
8306 #define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
8307 #define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
8308 #define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
8309 #define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v),loc)
8310 #define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
8311 #define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
8312 #define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
8313 #define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
8314 #define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
8315 #define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
8316 #define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
8317 #define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
8318 #define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
8319 #define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
8320 #define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
8321 #define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
8322 #define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
8323 #define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
8324 #define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
8325 #define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
8326 #define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
8327 #define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
8328 #define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
8329 #define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
8330 #define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
8331 #define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
8332 #define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
8333 #define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
8334 #define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
8335 #define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
8336 #define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
8337 #define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
8338 #define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
8339 #define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
8340 #define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
8341 #define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
8342 #define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
8343 #define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
8344 #define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
8345 #define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
8346 #define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
8347 #define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
8348 #define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
8349 #define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
8350 #define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
8351 #define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
8352 #define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
8353 #define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
8354 #define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
8355 #define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
8356 #define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
8357 #define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
8358 #define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
8359 #define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
8360 #define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
8361 #define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
8362 #define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
8363 #define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
8364 #define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
8365 #define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
8368 #pragma GCC visibility push(default)
8432 #pragma GCC visibility pop
8434 #define RUBY_VM_OPTS_H
8435 #define OPT_TAILCALL_OPTIMIZATION 0
8436 #define OPT_PEEPHOLE_OPTIMIZATION 1
8437 #define OPT_SPECIALISED_INSTRUCTION 1
8438 #define OPT_INLINE_CONST_CACHE 1
8439 #define OPT_FROZEN_STRING_LITERAL 0
8440 #define OPT_DEBUG_FROZEN_STRING_LITERAL 0
8441 #define OPT_THREADED_CODE 0
8442 #define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
8443 #define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
8444 #define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
8445 #define OPT_CHECKED_RUN 1
8446 #define OPT_INLINE_METHOD_CACHE 1
8447 #define OPT_GLOBAL_METHOD_CACHE 1
8448 #define OPT_BLOCKINLINING 0
8449 #define OPT_IC_FOR_IVAR 1
8450 #define OPT_OPERANDS_UNIFICATION 1
8451 #define OPT_INSTRUCTIONS_UNIFICATION 0
8452 #define OPT_UNIFY_ALL_COMBINATION 0
8453 #define OPT_STACK_CACHING 0
8454 #define OPT_SUPPORT_JOKE 0
8455 #define VM_COLLECT_USAGE_DETAILS 0
8470 #define ID_STATIC_SYM RUBY_ID_STATIC_SYM
8471 #define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
8472 #define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
8473 #define ID_LOCAL RUBY_ID_LOCAL
8474 #define ID_INSTANCE RUBY_ID_INSTANCE
8475 #define ID_GLOBAL RUBY_ID_GLOBAL
8476 #define ID_ATTRSET RUBY_ID_ATTRSET
8477 #define ID_CONST RUBY_ID_CONST
8478 #define ID_CLASS RUBY_ID_CLASS
8479 #define ID_JUNK RUBY_ID_JUNK
8480 #define ID_INTERNAL RUBY_ID_INTERNAL
8481 #define symIFUNC ID2SYM(idIFUNC)
8482 #define symCFUNC ID2SYM(idCFUNC)
8483 #define RUBY_TOKEN_DOT2 128
8484 #define RUBY_TOKEN_DOT3 129
8485 #define RUBY_TOKEN_BDOT2 130
8486 #define RUBY_TOKEN_BDOT3 131
8487 #define RUBY_TOKEN_UPLUS 132
8488 #define RUBY_TOKEN_UMINUS 133
8489 #define RUBY_TOKEN_POW 134
8490 #define RUBY_TOKEN_CMP 135
8491 #define RUBY_TOKEN_LSHFT 136
8492 #define RUBY_TOKEN_RSHFT 137
8493 #define RUBY_TOKEN_LEQ 138
8494 #define RUBY_TOKEN_GEQ 139
8495 #define RUBY_TOKEN_EQ 140
8496 #define RUBY_TOKEN_EQQ 141
8497 #define RUBY_TOKEN_NEQ 142
8498 #define RUBY_TOKEN_MATCH 143
8499 #define RUBY_TOKEN_NMATCH 144
8500 #define RUBY_TOKEN_AREF 145
8501 #define RUBY_TOKEN_ASET 146
8502 #define RUBY_TOKEN_COLON2 147
8503 #define RUBY_TOKEN_ANDOP 148
8504 #define RUBY_TOKEN_OROP 149
8505 #define RUBY_TOKEN_ANDDOT 150
8506 #define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
8507 #define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
8508 #define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
8509 #define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
8510 #define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
8511 #define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
8512 #define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
8513 #define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
8648 #define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
8714 #define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
8715 #define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
8719 #define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
8720 #define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
8721 #define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
8725 #define RUBY_METHOD_H 1
8726 #define END_OF_ENUMERATION(key)
8759 #define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
8760 #define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
8761 #define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
8762 #define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
8789 (
src->flags & (((
VALUE)RUBY_FL_USER4)|((
VALUE)RUBY_FL_USER5)|((
VALUE)RUBY_FL_USER6)));
8806 #define VM_METHOD_TYPE_MINIMUM_BITS 4
8809 #define rb_iseq_t rb_iseq_t
8858 #define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
8859 #define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
8872 #pragma GCC visibility push(default)
8876 #pragma GCC visibility pop
8891 #define RUBY_ATOMIC_H
8893 #define ATOMIC_SET(var,val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
8894 #define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
8895 #define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
8896 #define ATOMIC_OR(var,val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
8897 #define ATOMIC_EXCHANGE(var,val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
8898 #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; })
8899 #define ATOMIC_SIZE_ADD(var,val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
8900 #define ATOMIC_SIZE_SUB(var,val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
8901 #define RUBY_ATOMIC_GENERIC_MACRO 1
8902 #define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
8903 #define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
8904 #define ATOMIC_SIZE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8905 #define ATOMIC_SIZE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
8906 #define ATOMIC_PTR_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8907 #define ATOMIC_PTR_CAS(var,oldval,newval) ATOMIC_CAS(var, oldval, newval)
8908 #define ATOMIC_VALUE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8909 #define ATOMIC_VALUE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
8912 #define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, __ASSERT_FUNC, #__e))
8913 #define __ASSERT_FUNC __func__
8918 #define static_assert _Static_assert
8920 #define stringify(expr) stringify_1(expr)
8921 #define stringify_1(expr) #expr
8922 #define CCAN_CONTAINER_OF_H
8923 #define CCAN_CHECK_TYPE_H
8924 #define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
8925 #define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
8926 #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))
8927 static inline char *container_of_or_null_(
void *member_ptr,
size_t offset)
8929 return member_ptr ? (
char *)member_ptr - offset : ((
void *)0);
8931 #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))
8932 #define container_off(containing_type,member) offsetof(containing_type, member)
8933 #define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
8934 #define container_off_var(var,member) container_off(typeof(*var), member)
8943 #define LIST_LOC __FILE__ ":" stringify(__LINE__)
8944 #define list_debug(h,loc) ((void)loc, h)
8945 #define list_debug_node(n,loc) ((void)loc, n)
8946 #define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
8947 #define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
8948 static inline void list_head_init(
struct list_head *
h)
8950 h->n.next =
h->n.prev = &
h->n;
8952 static inline void list_node_init(
struct list_node *
n)
8954 n->next =
n->prev =
n;
8956 #define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
8957 static inline void list_add_after_(
struct list_head *
h,
8960 const char *abortstr)
8966 (
void)((
void)abortstr,
h);
8968 #define list_add(h,n) list_add_(h, n, LIST_LOC)
8969 static inline void list_add_(
struct list_head *
h,
8971 const char *abortstr)
8973 list_add_after_(
h, &
h->n,
n, abortstr);
8975 #define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
8976 static inline void list_add_before_(
struct list_head *
h,
8979 const char *abortstr)
8985 (
void)((
void)abortstr,
h);
8987 #define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
8988 static inline void list_add_tail_(
struct list_head *
h,
8990 const char *abortstr)
8992 list_add_before_(
h, &
h->n,
n, abortstr);
8994 #define list_empty(h) list_empty_(h, LIST_LOC)
8995 static inline int list_empty_(
const struct list_head *
h,
const char* abortstr)
8997 (
void)((
void)abortstr,
h);
8998 return h->n.next == &
h->n;
9000 #define list_empty_nodebug(h) list_empty(h)
9001 static inline _Bool list_empty_nocheck(
const struct list_head *
h)
9003 return h->n.next == &
h->n;
9005 #define list_del(n) list_del_(n, LIST_LOC)
9006 static inline void list_del_(
struct list_node *
n,
const char* abortstr)
9008 (
void)((
void)abortstr,
n);
9009 n->next->prev =
n->prev;
9010 n->prev->next =
n->next;
9012 #define list_del_init(n) list_del_init_(n, LIST_LOC)
9013 static inline void list_del_init_(
struct list_node *
n,
const char *abortstr)
9015 list_del_(
n, abortstr);
9020 ((!list_empty_(
h,
"../ruby-2.7.2/ccan/list/list.h" ":" "328")) ? (
void)0 :
__assert_func (
"../ruby-2.7.2/ccan/list/list.h", 328, __func__,
"!list_empty(h)"));
9021 list_del_(
n,
"../ruby-2.7.2/ccan/list/list.h" ":" "329");
9023 #define list_swap(o,n) list_swap_(o, n, LIST_LOC)
9024 static inline void list_swap_(
struct list_node *o,
9026 const char* abortstr)
9028 (
void)((
void)abortstr, o);
9033 #define list_entry(n,type,member) container_of(n, type, member)
9034 #define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
9035 static inline const void *list_top_(
const struct list_head *
h,
size_t off)
9037 if (list_empty_(
h,
"../ruby-2.7.2/ccan/list/list.h" ":" "399"))
9039 return (
const char *)
h->n.next - off;
9041 #define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
9042 static inline const void *list_pop_(
const struct list_head *
h,
size_t off)
9045 if (list_empty_(
h,
"../ruby-2.7.2/ccan/list/list.h" ":" "425"))
9048 list_del_(
n,
"../ruby-2.7.2/ccan/list/list.h" ":" "428");
9049 return (
const char *)
n - off;
9051 #define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
9052 static inline const void *list_tail_(
const struct list_head *
h,
size_t off)
9054 if (list_empty_(
h,
"../ruby-2.7.2/ccan/list/list.h" ":" "451"))
9056 return (
const char *)
h->n.prev - off;
9058 #define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
9059 #define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
9060 #define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
9061 #define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
9062 #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)))
9063 #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)))
9064 #define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
9065 static inline void list_append_list_(
struct list_head *to,
9067 const char *abortstr)
9071 to->
n.
prev = from_tail;
9072 from_tail->
next = &to->
n;
9073 to_tail->
next = &from->
n;
9074 from->
n.
prev = to_tail;
9075 list_del_(&from->
n,
"../ruby-2.7.2/ccan/list/list.h" ":" "600");
9076 list_head_init(from);
9078 #define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
9079 static inline void list_prepend_list_(
struct list_head *to,
9081 const char *abortstr)
9087 to_head->
prev = from_tail;
9088 from_tail->
next = to_head;
9089 list_del_(&from->
n,
"../ruby-2.7.2/ccan/list/list.h" ":" "632");
9090 list_head_init(from);
9092 #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)))
9093 #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)))
9094 #define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
9095 #define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
9096 #define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
9097 #define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
9098 #define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
9099 #define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
9100 #define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
9101 #define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
9102 #define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
9103 #define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
9104 static inline void *list_node_to_off_(
struct list_node *node,
size_t off)
9106 return (
void *)((
char *)node - off);
9108 static inline struct list_node *list_node_from_off_(
void *
ptr,
size_t off)
9112 #define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
9113 #define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
9114 #define list_typeof(var) typeof(var)
9115 static inline void *list_entry_or_null(
const struct list_head *
h,
9121 return (
char *)
n - off;
9123 #define RUBY_THREAD_NATIVE_H 1
9125 #define _SYS_SCHED_H_
9126 #define SCHED_OTHER 3
9127 #define SCHED_FIFO 1
9165 #define PTHREAD_CANCEL_ASYNCHRONOUS 1
9166 #define PTHREAD_CANCEL_ENABLE 0
9167 #define PTHREAD_CANCEL_DEFERRED 0
9168 #define PTHREAD_CANCEL_DISABLE 1
9169 #define PTHREAD_CANCELED ((void *)-1)
9170 #define PTHREAD_COND_INITIALIZER (pthread_cond_t)21
9171 #define PTHREAD_CREATE_DETACHED 1
9172 #define PTHREAD_CREATE_JOINABLE 0
9173 #define PTHREAD_EXPLICIT_SCHED 1
9174 #define PTHREAD_INHERIT_SCHED 0
9175 #define PTHREAD_MUTEX_RECURSIVE 0
9176 #define PTHREAD_MUTEX_ERRORCHECK 1
9177 #define PTHREAD_MUTEX_NORMAL 2
9178 #define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
9179 #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP (pthread_mutex_t)18
9180 #define PTHREAD_NORMAL_MUTEX_INITIALIZER_NP (pthread_mutex_t)19
9181 #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP (pthread_mutex_t)20
9182 #define PTHREAD_MUTEX_INITIALIZER PTHREAD_NORMAL_MUTEX_INITIALIZER_NP
9183 #define PTHREAD_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, 0 }
9184 #define PTHREAD_PROCESS_SHARED 1
9185 #define PTHREAD_PROCESS_PRIVATE 0
9186 #define PTHREAD_RWLOCK_INITIALIZER (pthread_rwlock_t)22
9187 #define PTHREAD_SCOPE_PROCESS 0
9188 #define PTHREAD_SCOPE_SYSTEM 1
9189 #define PTHREAD_BARRIER_SERIAL_THREAD (-1)
9190 int pthread_atfork (
void (*)(
void),
void (*)(
void),
void (*)(
void));
9219 #define pthread_cleanup_push(_fn,_arg) { __pthread_cleanup_handler __cleanup_handler = { _fn, _arg, NULL }; _pthread_cleanup_push( &__cleanup_handler );
9220 #define pthread_cleanup_pop(_execute) _pthread_cleanup_pop( _execute ); }
9243 void *(*)(
void *),
void *);
9316 #pragma GCC visibility push(default)
9324 #pragma GCC visibility pop
9326 #define RUBY_THREAD_PTHREAD_H
9327 #define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
9328 #define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
9358 #define _JBLEN (13 * 4)
9362 #define _SAVEMASK _JBLEN
9363 #define _SIGMASK (_JBLEN+1)
9364 #define _CYGWIN_WORKING_SIGSETJMP
9365 #define __SIGMASK_FUNC pthread_sigmask
9368 #define sigsetjmp(env,savemask) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((*_sjbuf)[_SAVEMASK] = savemask, __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)), setjmp (*_sjbuf)); })
9369 #define siglongjmp(env,val) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((((*_sjbuf)[_SAVEMASK]) ? __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0) : 0), longjmp (*_sjbuf, val)); })
9377 #define RUBY_NSIG NSIG
9378 #define RUBY_SIGCHLD (SIGCLD)
9379 #define SIGCHLD_LOSSY (0)
9380 #define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
9381 #define va_init_list(a,b) va_start((a),(b))
9382 #define USE_SIGALTSTACK
9384 #define RB_ALTSTACK_INIT(var) var = rb_register_sigaltstack()
9385 #define RB_ALTSTACK_FREE(var) xfree(var)
9386 #define RB_ALTSTACK(var) var
9402 #define TAG_NONE RUBY_TAG_NONE
9403 #define TAG_RETURN RUBY_TAG_RETURN
9404 #define TAG_BREAK RUBY_TAG_BREAK
9405 #define TAG_NEXT RUBY_TAG_NEXT
9406 #define TAG_RETRY RUBY_TAG_RETRY
9407 #define TAG_REDO RUBY_TAG_REDO
9408 #define TAG_RAISE RUBY_TAG_RAISE
9409 #define TAG_THROW RUBY_TAG_THROW
9410 #define TAG_FATAL RUBY_TAG_FATAL
9411 #define TAG_MASK RUBY_TAG_MASK
9456 #define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
9457 #define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
9466 #define PATHOBJ_PATH 0
9467 #define PATHOBJ_REALPATH 1
9469 pathobj_path(
VALUE pathobj)
9476 return (rb_array_const_ptr_transient(pathobj)[0]);
9480 pathobj_realpath(
VALUE pathobj)
9487 return (rb_array_const_ptr_transient(pathobj)[1]);
9526 const struct rb_iseq_param_keyword {
9536 struct iseq_insn_info {
9582 #define USE_LAZY_LOAD 0
9633 #define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
9710 #define RUBY_VM_SIZE_ALIGN 4096
9711 #define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9712 #define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9713 #define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9714 #define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9715 #define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
9716 #define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9717 #define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
9718 #define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9719 #define INTEGER_REDEFINED_OP_FLAG (1 << 0)
9720 #define FLOAT_REDEFINED_OP_FLAG (1 << 1)
9721 #define STRING_REDEFINED_OP_FLAG (1 << 2)
9722 #define ARRAY_REDEFINED_OP_FLAG (1 << 3)
9723 #define HASH_REDEFINED_OP_FLAG (1 << 4)
9724 #define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
9725 #define TIME_REDEFINED_OP_FLAG (1 << 7)
9726 #define REGEXP_REDEFINED_OP_FLAG (1 << 8)
9727 #define NIL_REDEFINED_OP_FLAG (1 << 9)
9728 #define TRUE_REDEFINED_OP_FLAG (1 << 10)
9729 #define FALSE_REDEFINED_OP_FLAG (1 << 11)
9730 #define PROC_REDEFINED_OP_FLAG (1 << 12)
9731 #define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
9732 #define VM_DEBUG_BP_CHECK 0
9733 #define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
9774 rb_thread_ptr(
VALUE thval)
9846 #define VM_CORE_H_EC_DEFINED 1
9905 #define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
9906 #define VM_DEFINECLASS_FLAG_SCOPED 0x08
9907 #define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
9908 #define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
9909 #define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
9911 #pragma GCC visibility push(default)
9926 rb_iseq_new_with_callback_new_callback(
9943 #pragma GCC visibility pop
9945 #define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
9948 unsigned int is_from_method: 1;
9949 unsigned int is_lambda: 1;
9956 unsigned int env_size;
9959 #define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
9962 const VALUE pathobj;
9963 unsigned short first_lineno;
9970 #define VM_CHECKMATCH_TYPE_MASK 0x03
9971 #define VM_CHECKMATCH_ARRAY 0x04
9987 #define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
9988 #define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
9989 #define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
9990 #define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
9991 #define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
9992 #define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
9993 #define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
9994 #define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
9995 #define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
9996 #define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
9997 #define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
9998 #define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
10019 #define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
10020 #define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
10021 #define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
10022 #define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
10023 #define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
10047 #define VM_ENV_DATA_SIZE ( 3)
10048 #define VM_ENV_DATA_INDEX_ME_CREF (-2)
10049 #define VM_ENV_DATA_INDEX_SPECVAL (-1)
10050 #define VM_ENV_DATA_INDEX_FLAGS ( 0)
10051 #define VM_ENV_DATA_INDEX_ENV ( 1)
10052 #define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
10053 static inline void VM_FORCE_WRITE_SPECIAL_CONST(
const VALUE *
ptr,
VALUE special_const_value);
10055 VM_ENV_FLAGS_SET(
const VALUE *ep,
VALUE flag)
10057 VALUE flags = ep[( 0)];
10059 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
10062 VM_ENV_FLAGS_UNSET(
const VALUE *ep,
VALUE flag)
10064 VALUE flags = ep[( 0)];
10066 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
10068 static inline unsigned long
10069 VM_ENV_FLAGS(
const VALUE *ep,
long flag)
10071 VALUE flags = ep[( 0)];
10073 return flags & flag;
10075 static inline unsigned long
10120 return !VM_FRAME_CFRAME_P(
cfp);
10122 #define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
10123 #define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
10124 #define VM_BLOCK_HANDLER_NONE 0
10126 VM_ENV_LOCAL_P(
const VALUE *ep)
10130 static inline const VALUE *
10131 VM_ENV_PREV_EP(
const VALUE *ep)
10134 return ((
void *)(((ep[(-1)])) & ~0x03));
10136 static inline VALUE
10137 VM_ENV_BLOCK_HANDLER(
const VALUE *ep)
10143 VM_ENV_ESCAPED_P(
const VALUE *ep)
10148 static inline VALUE
10149 VM_ENV_ENVVAL(
const VALUE *ep)
10151 VALUE envval = ep[( 1)];
10157 VM_ENV_ENVVAL_PTR(
const VALUE *ep)
10159 return (
const rb_env_t *)VM_ENV_ENVVAL(ep);
10165 env->env_size = env_size;
10175 VM_FORCE_WRITE_SPECIAL_CONST(
const VALUE *
ptr,
VALUE special_const_value)
10178 VM_FORCE_WRITE(
ptr, special_const_value);
10184 VM_FORCE_WRITE(&ep[
index],
v);
10191 #define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
10192 #define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
10193 #define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
10202 return !((
void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (
void *)(
cfp));
10214 static inline VALUE
10238 static inline VALUE
10287 vm_block_type(
const struct rb_block *block)
10289 return block->
type;
10297 static inline const struct rb_block *
10298 vm_proc_block(
VALUE procval)
10304 static inline const VALUE *vm_block_ep(
const struct rb_block *block);
10306 vm_proc_iseq(
VALUE procval)
10308 return vm_block_iseq(vm_proc_block(procval));
10310 static inline const VALUE *
10311 vm_proc_ep(
VALUE procval)
10313 return vm_block_ep(vm_proc_block(procval));
10316 vm_block_iseq(
const struct rb_block *block)
10318 switch (vm_block_type(block)) {
10324 __builtin_unreachable();
10325 return ((
void *)0);
10327 static inline const VALUE *
10328 vm_block_ep(
const struct rb_block *block)
10330 switch (vm_block_type(block)) {
10336 __builtin_unreachable();
10337 return ((
void *)0);
10339 static inline VALUE
10340 vm_block_self(
const struct rb_block *block)
10342 switch (vm_block_type(block)) {
10347 return vm_block_self(vm_proc_block(block->
as.
proc));
10351 __builtin_unreachable();
10354 static inline VALUE
10360 static inline VALUE
10366 static inline VALUE
10372 static inline VALUE
10373 VM_BH_FROM_PROC(
VALUE procval)
10386 #define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
10387 #define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
10392 #pragma GCC visibility push(default)
10399 #pragma GCC visibility pop
10407 static inline VALUE
10412 static inline VALUE
10431 rb_vm_living_threads_init(
rb_vm_t *vm)
10449 list_del_(&th->
vmlt_node,
"../ruby-2.7.2/vm_core.h" ":" "1710");
10462 #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)))
10466 #define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
10467 #define RUBY_CONST_ASSERT(expr) (1/!!(expr))
10468 #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))
10469 #define WHEN_VM_STACK_OVERFLOWED(cfp,sp,margin) if (LIKELY(!VM_STACK_OVERFLOWED_P(cfp, sp, margin))) {(void)0;} else
10470 #define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, sp, margin) vm_stackoverflow()
10471 #define CHECK_VM_STACK_OVERFLOW(cfp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, (cfp)->sp, margin) vm_stackoverflow()
10474 #pragma GCC visibility push(default)
10482 #pragma GCC visibility pop
10484 #define GET_VM() rb_current_vm()
10485 #define GET_THREAD() rb_current_thread()
10486 #define GET_EC() rb_current_execution_context()
10500 return ((
void *)0);
10504 rb_current_execution_context(
void)
10509 rb_current_thread(
void)
10512 return rb_ec_thread_ptr(ec);
10515 rb_current_vm(
void)
10531 rb_thread_set_current_raw(th);
10540 #define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
10541 #define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
10542 #define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
10543 #define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
10544 #define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
10545 #define RUBY_VM_INTERRUPTED_ANY(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask)
10563 #define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
10568 if ((
__builtin_expect(!!(((ec)->interrupt_flag & ~(ec)->interrupt_mask)), 0))) {
10590 #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)
10597 trace_arg.
event = flag;
10600 trace_arg.
self =
self;
10614 #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)
10615 #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)
10619 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);
10623 #pragma GCC visibility push(default)
10626 #define RUBY_EVENT_COVERAGE_LINE 0x010000
10627 #define RUBY_EVENT_COVERAGE_BRANCH 0x020000
10634 #pragma GCC visibility pop
10636 #define RUBY_DEBUG_H
10638 #pragma GCC visibility push(default)
10640 #define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
10641 #define dp(v) ruby_debug_print_value(-1, 0, "", (v))
10642 #define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
10643 #define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
10651 #pragma GCC visibility pop
10653 #define RUBY_ISEQ_H 1
10655 #define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
10656 #define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
10658 static inline size_t
10659 rb_call_info_kw_arg_bytes(
int keyword_len)
10665 #define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
10666 #define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
10667 #define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
10668 #define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
10669 #define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
10670 #define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
10671 #define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
10679 static inline VALUE *
10693 static inline VALUE *
10699 #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)
10700 #define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
10701 #define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
10702 #define ISEQ_TRANSLATED IMEMO_FL_USER3
10703 #define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
10704 #define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW((iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
10738 return ((
void *)0);
10754 iseq_imemo_alloc(
void)
10769 #pragma GCC visibility push(default)
10823 unsigned int start;
10830 iseq_catch_table_bytes(
int n)
10834 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (
struct iseq_catch_table,
entries)) / catch_table_entry_size
10836 if (
n > catch_table_entries_max)
rb_fatal(
"too large iseq_catch_table - %d",
n);
10838 n * catch_table_entry_size);
10840 #define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
10871 #pragma GCC visibility pop
10873 #define RUBY_EVAL_INTERN_H
10887 #define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
10888 #define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
10889 #define ruby_setjmp(env) RUBY_SETJMP(env)
10890 #define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
10893 #define __ERRNO_H__
10895 #define __error_t_defined 1
10896 #define _SYS_ERRNO_H_
10897 #define errno (*__errno())
10899 extern __attribute__((dllimport))
const char *
const _sys_errlist[];
10903 extern __attribute__((dllimport))
char *program_invocation_name;
10904 extern __attribute__((dllimport))
char *program_invocation_short_name;
10905 #define __errno_r(ptr) ((ptr)->_errno)
10943 #define EL2NSYNC 38
10958 #define EDEADLOCK 56
10972 #define EMULTIHOP 74
10977 #define ENOTUNIQ 80
10984 #define ELIBEXEC 87
10987 #define ENOTEMPTY 90
10988 #define ENAMETOOLONG 91
10990 #define EOPNOTSUPP 95
10991 #define EPFNOSUPPORT 96
10992 #define ECONNRESET 104
10993 #define ENOBUFS 105
10994 #define EAFNOSUPPORT 106
10995 #define EPROTOTYPE 107
10996 #define ENOTSOCK 108
10997 #define ENOPROTOOPT 109
10998 #define ESHUTDOWN 110
10999 #define ECONNREFUSED 111
11000 #define EADDRINUSE 112
11001 #define ECONNABORTED 113
11002 #define ENETUNREACH 114
11003 #define ENETDOWN 115
11004 #define ETIMEDOUT 116
11005 #define EHOSTDOWN 117
11006 #define EHOSTUNREACH 118
11007 #define EINPROGRESS 119
11008 #define EALREADY 120
11009 #define EDESTADDRREQ 121
11010 #define EMSGSIZE 122
11011 #define EPROTONOSUPPORT 123
11012 #define ESOCKTNOSUPPORT 124
11013 #define EADDRNOTAVAIL 125
11014 #define ENETRESET 126
11015 #define EISCONN 127
11016 #define ENOTCONN 128
11017 #define ETOOMANYREFS 129
11018 #define EPROCLIM 130
11022 #define ENOTSUP 134
11023 #define ENOMEDIUM 135
11024 #define ENOSHARE 136
11025 #define ECASECLASH 137
11027 #define EOVERFLOW 139
11028 #define ECANCELED 140
11029 #define ENOTRECOVERABLE 141
11030 #define EOWNERDEAD 142
11031 #define ESTRPIPE 143
11032 #define EWOULDBLOCK EAGAIN
11033 #define __ELASTERROR 2000
11034 #define _SYS_PARAM_H
11035 #define __need_NULL
11036 #undef __need_ptrdiff_t
11037 #undef __need_size_t
11038 #undef __need_wchar_t
11040 #define NULL ((void *)0)
11042 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
11043 #define NOFILE 8192
11044 #define NGROUPS NGROUPS_MAX
11046 #define MAXHOSTNAMELEN 128
11047 #define MAXPATHLEN PATH_MAX
11048 #define MAXSYMLINKS SYMLOOP_MAX
11049 #define DEV_BSIZE 1024
11051 #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
11052 #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
11053 #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
11054 #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
11055 #define howmany(x,y) (((x)+((y)-1))/(y))
11056 #define rounddown(x,y) (((x)/(y))*(y))
11057 #define roundup(x,y) ((((x)+((y)-1))/(y))*(y))
11058 #define roundup2(x,y) (((x)+((y)-1))&(~((y)-1)))
11059 #define powerof2(x) ((((x)-1)&(x))==0)
11060 #define MIN(a,b) (((a)<(b))?(a):(b))
11061 #define MAX(a,b) (((a)>(b))?(a):(b))
11062 #define SAVE_ROOT_JMPBUF_BEFORE_STMT
11063 #define SAVE_ROOT_JMPBUF_AFTER_STMT
11064 #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)
11065 #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;
11066 #define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
11067 #define EC_TMPPOP_TAG() _ec->tag = _tag.prev
11068 #define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
11069 #define VAR_FROM_MEMORY(var) (var)
11070 #define VAR_INITIALIZED(var) ((void)&(var))
11071 #define VAR_NOCLOBBERED(var) var
11084 __builtin_longjmp(((ec->
tag->
buf)),(1));
11086 #define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
11087 #define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
11088 #define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
11089 #define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
11090 #define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
11091 static inline VALUE
11094 return cref->
klass;
11106 static inline VALUE
11107 CREF_REFINEMENTS(
const rb_cref_t *cref)
11115 #pragma GCC diagnostic push
11117 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11118 ; typeof(rb_obj_write((
VALUE)(cref), (
VALUE *)(&cref->
refinements), (
VALUE)(refs),
"../ruby-2.7.2/eval_intern.h", 220)) unaligned_member_access_result = (rb_obj_write((
VALUE)(cref), (
VALUE *)(&cref->refinements), (
VALUE)(refs), "../
ruby-2.7.2/eval_intern.
h", 220));
11119 #pragma GCC diagnostic pop
11120 ; unaligned_member_access_result; });
11123 CREF_PUSHED_BY_EVAL(
const rb_cref_t *cref)
11125 return cref->
flags & ((
VALUE)RUBY_FL_USER5);
11128 CREF_PUSHED_BY_EVAL_SET(
rb_cref_t *cref)
11133 CREF_OMOD_SHARED(
const rb_cref_t *cref)
11135 return cref->
flags & ((
VALUE)RUBY_FL_USER6);
11143 CREF_OMOD_SHARED_UNSET(
rb_cref_t *cref)
11152 #define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
11153 #define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
11154 #define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
11155 #define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
11178 #define CharNext(p) ((p) + mblen((p), RUBY_MBCHAR_MAXSIZE))
11180 translit_char(
char *p,
int from,
int to)
11183 if ((
unsigned char)*p == from)
11185 p = ((p) +
mblen((p), 0x7fffffff));
11188 #define BUILTIN_H_INCLUDED
11193 const char *
const name;
11195 #define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i }
11206 static 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)){}
11207 static 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)){}
11208 static 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)){}
11209 static 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)){}
11210 static 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)){}
11211 static 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)){}
11212 static 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)){}
11215 static inline VALUE
11222 const unsigned char *
bin;
11226 #define DTRACE_PROBES_DISABLED 1
11227 #define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
11228 #define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11229 #define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
11230 #define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11231 #define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
11232 #define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11233 #define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
11234 #define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11235 #define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
11236 #define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
11237 #define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
11238 #define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11239 #define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
11240 #define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
11241 #define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
11242 #define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11243 #define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
11244 #define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
11245 #define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
11246 #define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
11247 #define RUBY_DTRACE_RAISE_ENABLED() 0
11248 #define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
11249 #define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
11250 #define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
11251 #define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
11252 #define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
11253 #define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
11254 #define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
11255 #define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
11256 #define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
11257 #define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
11258 #define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
11259 #define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
11260 #define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
11261 #define RUBY_DTRACE_PARSE_END_ENABLED() 0
11262 #define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
11263 #define RUBY_DTRACE_INSN_ENABLED() 0
11264 #define RUBY_DTRACE_INSN(insns_name) do {} while (0)
11265 #define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
11266 #define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
11267 #define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
11268 #define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
11269 #define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
11270 #define RUBY_DTRACE_GC_MARK_END() do {} while (0)
11271 #define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
11272 #define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
11273 #define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
11274 #define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
11275 #define RUBY_DTRACE_METHOD_CACHE_CLEAR_ENABLED() 0
11276 #define RUBY_DTRACE_METHOD_CACHE_CLEAR(class,filename,lineno) do {} while (0)
11277 #define RUBY_PROBES_HELPER_H
11287 #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)
11288 #define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
11289 #define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
11290 #define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
11291 #define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
11299 while (!VM_ENV_LOCAL_P(ep)) {
11300 ep = VM_ENV_PREV_EP(ep);
11308 return ((
void *)0);
11312 while (
cfp < eocfp) {
11313 if (
cfp->
ep == ep) {
11318 return ((
void *)0);
11324 return VM_EP_LEP(ep);
11327 static inline const VALUE *
11330 return VM_EP_LEP(
cfp->
ep);
11332 static inline const VALUE *
11335 return VM_ENV_PREV_EP(
cfp->
ep);
11338 static inline VALUE
11342 return VM_ENV_BLOCK_HANDLER(ep);
11347 return VM_FRAME_CFRAME_KW_P(
cfp);
11352 return VM_FRAME_CFRAME_EMPTY_KW_P(
cfp);
11357 return VM_CF_BLOCK_HANDLER(
cfp);
11391 int omod_shared = 0;
11398 scope_visi.visi.module_func = module_func;
11399 if (prev_cref != ((
void *)0) && prev_cref != (
void *)1 ) {
11400 refinements = CREF_REFINEMENTS(prev_cref);
11403 CREF_OMOD_SHARED_SET(prev_cref);
11407 if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
11408 if (omod_shared) CREF_OMOD_SHARED_SET(cref);
11414 return vm_cref_new0(
klass, visi, module_func, prev_cref, pushed_by_eval, 0);
11419 return vm_cref_new0(
klass, visi, module_func, prev_cref, pushed_by_eval, 1);
11431 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
11432 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
11437 CREF_REFINEMENTS_SET(new_cref, ref);
11438 CREF_OMOD_SHARED_UNSET(new_cref);
11455 return vm_cref_new_toplevel(rb_current_execution_context());
11458 vm_cref_dump(
const char *mesg,
const rb_cref_t *cref)
11460 fprintf(((
__getreent())->_stderr),
"vm_cref_dump: %s (%p)\n", mesg, (
void *)cref);
11463 cref = CREF_NEXT(cref);
11477 #pragma GCC diagnostic push
11479 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11481 #pragma GCC diagnostic pop
11482 ; unaligned_member_access_result; });
11490 #define RUBY_MJIT_H 1
11491 #define USE_DEBUG_COUNTER 0
11492 #define RUBY_DEBUG_COUNTER_H 1
11494 #define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
11671 #undef RB_DEBUG_COUNTER
11673 #define RB_DEBUG_COUNTER_INC(type) ((void)0)
11674 #define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (cond)
11675 #define RB_DEBUG_COUNTER_INC_IF(type,cond) (cond)
11678 #pragma GCC visibility push(default)
11684 #pragma GCC visibility pop
11710 #pragma GCC visibility push(default)
11719 #pragma GCC visibility pop
11732 #define JIT_ISEQ_SIZE_THRESHOLD 1000
11736 return (body->
type == ISEQ_TYPE_METHOD || body->
type == ISEQ_TYPE_BLOCK)
11739 static inline VALUE
11778 return func(ec, ec->
cfp);
11781 #define RUBY_INSNHELPER_H
11783 #pragma GCC visibility push(default)
11790 #pragma GCC visibility pop
11792 #define COLLECT_USAGE_INSN(insn)
11793 #define COLLECT_USAGE_OPERAND(insn,n,op)
11794 #define COLLECT_USAGE_REGISTER(reg,s)
11795 #define PUSH(x) (SET_SV(x), INC_SP(1))
11796 #define TOPN(n) (*(GET_SP()-(n)-1))
11797 #define POPN(n) (DEC_SP(n))
11798 #define POP() (DEC_SP(1))
11799 #define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
11800 #define VM_REG_CFP (reg_cfp)
11801 #define VM_REG_PC (VM_REG_CFP->pc)
11802 #define VM_REG_SP (VM_REG_CFP->sp)
11803 #define VM_REG_EP (VM_REG_CFP->ep)
11804 #define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
11805 #define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
11806 #define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
11807 #define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
11808 #define GET_CURRENT_INSN() (*GET_PC())
11809 #define GET_OPERAND(n) (GET_PC()[(n)])
11810 #define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
11811 #define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
11812 #define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
11813 #define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
11814 #define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
11815 #define GET_LEP() (VM_EP_LEP(GET_EP()))
11816 #define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
11817 #define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11818 #define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11819 #define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11820 #define SET_SV(x) (*GET_SP() = (x))
11821 #define GET_ISEQ() (GET_CFP()->iseq)
11822 #define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
11823 #define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
11837 #define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
11838 #define SETUP_CANARY()
11839 #define CHECK_CANARY()
11840 #define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
11841 #define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
11842 #define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
11843 #define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
11844 #define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
11845 #define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
11850 obj->throw_state =
st;
11853 static inline VALUE
11857 return obj->throw_obj;
11863 return obj->catch_frame;
11869 return obj->throw_state;
11875 return obj->flags & ((
VALUE)RUBY_FL_USER4);
11887 obj->throw_state =
st;
11894 obj->flags |= ((
VALUE)RUBY_FL_USER4);
11897 #define IS_ARGS_SPLAT(ci) ((ci)->flag & VM_CALL_ARGS_SPLAT)
11898 #define IS_ARGS_KEYWORD(ci) ((ci)->flag & VM_CALL_KWARG)
11899 #define IS_ARGS_KW_SPLAT(ci) ((ci)->flag & VM_CALL_KW_SPLAT)
11900 #define IS_ARGS_KW_OR_KW_SPLAT(ci) ((ci)->flag & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
11907 #define RUBY_VM_EXEC_H
11913 #define DEBUG_ENTER_INSN(insn)
11914 #define DEBUG_END_INSN()
11915 #define throwdebug if(0)printf
11916 #define LABEL(x) INSN_LABEL_ ##x
11917 #define ELABEL(x) INSN_ELABEL_ ##x
11918 #define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
11919 #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));
11920 #define INSN_DISPATCH_SIG(insn)
11921 #define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
11922 #define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
11923 #define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
11924 #define INSN_DISPATCH() TC_DISPATCH(__START__) {
11925 #define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
11926 #define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
11927 #define START_OF_ORIGINAL_INSN(x) start_of_ ##x:
11928 #define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
11929 #define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
11930 #define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
11931 #define SCREG(r) (reg_ ##r)
11932 #define VM_DEBUG_STACKOVERFLOW 0
11933 #define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
11934 #define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
11935 #define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
11936 #define BIN(n) YARVINSN_ ##n
12146 #define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
12155 #define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
12156 #define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
12157 #define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
12208 __attribute__ ((__noreturn__))
static void vm_stackoverflow(
void);
12210 vm_stackoverflow(
void)
12212 ec_stack_overflow(rb_current_execution_context(), 1);
12223 ec_stack_overflow(ec, 1);
12225 #define vm_check_canary(ec,sp)
12226 #define vm_check_frame(a,b,c,d)
12255 *sp++ = cref_or_me;
12268 VALUE flags = ep[( 0)];
12271 rb_vm_check_ints(ec);
12278 vm_pop_frame(ec, ec->
cfp, ec->
cfp->
ep);
12280 static inline VALUE
12281 rb_arity_error_new(
int argc,
int min,
int max)
12283 VALUE err_mess = 0;
12285 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d)",
argc, min);
12287 else if (max == (-1)) {
12288 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d+)",
argc, min);
12291 err_mess =
rb_sprintf(
"wrong number of arguments (given %d, expected %d..%d)",
argc, min, max);
12305 VM_FORCE_WRITE(&ep[
index],
v);
12312 VALUE flags = ep[( 0)];
12314 VM_STACK_ENV_WRITE(ep,
index,
v);
12317 vm_env_write_slowpath(ep,
index,
v);
12336 __builtin_unreachable();
12340 static inline struct vm_svar *
12344 if (lep && (ec == ((
void *)0) || ec->
root_lep != lep)) {
12351 return (
struct vm_svar *)svar;
12357 if (lep && (ec == ((
void *)0) || ec->
root_lep != lep)) {
12358 vm_env_write(lep, (-2), (
VALUE)svar);
12362 #pragma GCC diagnostic push
12364 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12365 ; typeof(rb_obj_write((
VALUE)(rb_ec_thread_ptr(ec)->
self), (
VALUE *)(&ec->
root_svar), (
VALUE)(svar),
"../ruby-2.7.2/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.2/vm_insnhelper.c", 486));
12366 #pragma GCC diagnostic pop
12367 ; unaligned_member_access_result; });
12373 const struct vm_svar *svar = lep_svar(ec, lep);
12377 return svar->lastline;
12379 return svar->backref;
12381 const VALUE ary = svar->others;
12399 struct vm_svar *svar = lep_svar(ec, lep);
12401 lep_svar_write(ec, lep, svar = svar_new((
VALUE)svar));
12406 #pragma GCC diagnostic push
12408 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12409 ; typeof(rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->lastline), (
VALUE)(val),
"../ruby-2.7.2/vm_insnhelper.c", 532)) unaligned_member_access_result = (rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->
lastline), (
VALUE)(val), "../
ruby-2.7.2/vm_insnhelper.c", 532));
12410 #pragma GCC diagnostic pop
12411 ; unaligned_member_access_result; });
12415 #pragma GCC diagnostic push
12417 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12418 ; typeof(rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->backref), (
VALUE)(val),
"../ruby-2.7.2/vm_insnhelper.c", 535)) unaligned_member_access_result = (rb_obj_write((
VALUE)(svar), (
VALUE *)(&svar->
backref), (
VALUE)(val), "../
ruby-2.7.2/vm_insnhelper.c", 535));
12419 #pragma GCC diagnostic pop
12420 ; unaligned_member_access_result; });
12423 VALUE ary = svar->others;
12426 #pragma GCC diagnostic push
12428 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12430 #pragma GCC diagnostic pop
12431 ; unaligned_member_access_result; });
12437 static inline VALUE
12442 val = lep_svar_get(ec, lep,
key);
12447 switch (
type >> 1) {
12461 rb_bug(
"unexpected back-ref");
12479 return ((
void *)0);
12485 return ((
void *)0);
12493 while (!VM_ENV_LOCAL_P(ep)) {
12494 if ((
me = check_method_entry(ep[(-2)], 0)) != ((
void *)0))
return me;
12495 ep = VM_ENV_PREV_EP(ep);
12497 return check_method_entry(ep[(-2)], 1);
12506 return ((
void *)0);
12524 return ((
void *)0);
12528 vm_env_cref(
const VALUE *ep)
12531 while (!VM_ENV_LOCAL_P(ep)) {
12532 if ((cref = check_cref(ep[(-2)], 0)) != ((
void *)0))
return cref;
12533 ep = VM_ENV_PREV_EP(ep);
12535 return check_cref(ep[(-2)], 1);
12553 vm_env_cref_by_cref(
const VALUE *ep)
12555 while (!VM_ENV_LOCAL_P(ep)) {
12556 if (is_cref(ep[(-2)], 0))
return 1;
12557 ep = VM_ENV_PREV_EP(ep);
12559 return is_cref(ep[(-2)], 1);
12570 new_cref = vm_cref_dup(cref);
12573 #pragma GCC diagnostic push
12575 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12576 ; typeof(rb_obj_write((
VALUE)(parent), (
VALUE *)(vptr), (
VALUE)(new_cref),
"../ruby-2.7.2/vm_insnhelper.c", 716)) unaligned_member_access_result = (rb_obj_write((
VALUE)(parent), (
VALUE *)(vptr), (
VALUE)(new_cref), "../
ruby-2.7.2/vm_insnhelper.c", 716));
12577 #pragma GCC diagnostic pop
12578 ; unaligned_member_access_result; });
12581 VM_FORCE_WRITE(vptr, (
VALUE)new_cref);
12589 rb_bug(
"cref_replace_with_duplicated_cref_each_frame: unreachable");
12597 vm_cref_replace_with_duplicated_cref(
const VALUE *ep)
12599 if (vm_env_cref_by_cref(ep)) {
12602 while (!VM_ENV_LOCAL_P(ep)) {
12604 if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((
void *)0)) {
12607 ep = VM_ENV_PREV_EP(ep);
12610 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
12613 rb_bug(
"vm_cref_dup: unreachable");
12617 vm_get_cref(
const VALUE *ep)
12620 if (cref != ((
void *)0)) {
12624 rb_bug(
"vm_get_cref: unreachable");
12631 if (
cfp == ((
void *)0)) {
12632 return ((
void *)0);
12634 return vm_get_cref(
cfp->
ep);
12637 vm_get_const_key_cref(
const VALUE *ep)
12639 const rb_cref_t *cref = vm_get_cref(ep);
12646 cref = CREF_NEXT(cref);
12648 return ((
void *)0);
12655 if (CREF_CLASS(cref) == old_klass) {
12657 *new_cref_ptr = new_cref;
12660 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref),
METHOD_VISI_UNDEF, 0, cref, 0);
12661 cref = CREF_NEXT(cref);
12662 *new_cref_ptr = new_cref;
12665 *new_cref_ptr = ((
void *)0);
12672 prev_cref = vm_env_cref(ep);
12677 prev_cref = vm_env_cref(
cfp->
ep);
12682 static inline VALUE
12683 vm_get_cbase(
const VALUE *ep)
12685 const rb_cref_t *cref = vm_get_cref(ep);
12688 if ((
klass = CREF_CLASS(cref)) != 0) {
12691 cref = CREF_NEXT(cref);
12695 static inline VALUE
12696 vm_get_const_base(
const VALUE *ep)
12698 const rb_cref_t *cref = vm_get_cref(ep);
12701 if (!CREF_PUSHED_BY_EVAL(cref) &&
12702 (
klass = CREF_CLASS(cref)) != 0) {
12705 cref = CREF_NEXT(cref);
12717 vm_ensure_not_refinement_module(
VALUE self)
12720 rb_warn(
"not defined at the refinement, but at the outer class/module");
12723 static inline VALUE
12728 static inline VALUE
12737 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
12738 root_cref = CREF_NEXT(root_cref);
12741 while (cref && CREF_NEXT(cref)) {
12742 if (CREF_PUSHED_BY_EVAL(cref)) {
12746 klass = CREF_CLASS(cref);
12748 cref = CREF_NEXT(cref);
12757 if (am ==
klass)
break;
12759 if (is_defined)
return 1;
12762 goto search_continue;
12776 klass = vm_get_iclass(ec->
cfp, CREF_CLASS(root_cref));
12789 vm_check_if_namespace(orig_klass);
12798 static inline VALUE
12803 rb_bug(
"vm_get_cvar_base: no cref");
12805 while (CREF_NEXT(cref) &&
12807 CREF_PUSHED_BY_EVAL(cref))) {
12808 cref = CREF_NEXT(cref);
12810 if (!CREF_NEXT(cref)) {
12811 rb_warn(
"class variable access from toplevel");
12813 klass = vm_get_iclass(
cfp, CREF_CLASS(cref));
12820 vm_search_const_defined_class(
const VALUE cbase,
ID id)
12833 static inline VALUE
12874 if (
index < numiv) {
12875 val = ivptr[
index];
12912 static inline VALUE
12924 #pragma GCC diagnostic push
12926 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12928 #pragma GCC diagnostic pop
12929 ; unaligned_member_access_result; });
12941 else if (
index >= 0x7fffffff) {
12956 static inline VALUE
12959 return vm_getivar(
obj,
id, ic, ((
void *)0), 0);
12964 vm_setivar(
obj,
id, val, ic, 0, 0);
12985 const int flag,
const VALUE throwobj)
12996 while (base_iseq->
body->
type != ISEQ_TYPE_BLOCK) {
12997 if (escape_cfp->
iseq->
body->
type == ISEQ_TYPE_CLASS) {
12998 escape_cfp = ((escape_cfp)+1);
12999 ep = escape_cfp->
ep;
13000 base_iseq = escape_cfp->
iseq;
13003 ep = VM_ENV_PREV_EP(ep);
13005 escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
13009 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13014 ep = VM_ENV_PREV_EP(ep);
13015 while (escape_cfp < eocfp) {
13016 if (escape_cfp->
ep == ep) {
13022 for (
i=0;
i < ct->
size;
i++) {
13025 #pragma GCC diagnostic push
13027 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13028 ; typeof(&(ct)->
entries[
i]) unaligned_member_access_result = (&(ct)->
entries[
i]);
13029 #pragma GCC diagnostic pop
13030 ; unaligned_member_access_result; });
13032 entry->
iseq == base_iseq &&
13033 entry->
start < epc && entry->
end >= epc) {
13034 if (entry->
cont == epc) {
13042 escape_cfp = ((escape_cfp)+1);
13050 const VALUE *ep = VM_ENV_PREV_EP(((((
reg_cfp)->ep))));
13051 escape_cfp = rb_vm_search_cf_from_ep(ec,
reg_cfp, ep);
13055 const VALUE *target_lep = VM_EP_LEP(current_ep);
13056 int in_class_frame = 0;
13059 while (escape_cfp < eocfp) {
13060 const VALUE *lep = VM_CF_LEP(escape_cfp);
13064 if (lep == target_lep &&
13065 VM_FRAME_RUBYFRAME_P(escape_cfp) &&
13067 in_class_frame = 1;
13070 if (lep == target_lep) {
13071 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13073 if (in_class_frame) {
13077 const VALUE *tep = current_ep;
13078 while (target_lep != tep) {
13079 if (escape_cfp->
ep == tep) {
13082 tep = VM_ENV_PREV_EP(tep);
13086 else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
13088 case ISEQ_TYPE_TOP:
13089 case ISEQ_TYPE_MAIN:
13091 if (in_class_frame)
goto unexpected_return;
13095 case ISEQ_TYPE_EVAL:
13096 case ISEQ_TYPE_CLASS:
13104 if (escape_cfp->
ep == target_lep && escape_cfp->
iseq->
body->
type == ISEQ_TYPE_METHOD) {
13107 escape_cfp = ((escape_cfp)+1);
13109 unexpected_return:;
13114 rb_bug(
"isns(throw): unsupported throw type");
13117 return (
VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
13126 return vm_throw_start(ec,
reg_cfp, state, flag, throwobj);
13129 return vm_throw_continue(ec, throwobj);
13135 int is_splat = flag & 0x01;
13136 rb_num_t space_size = num + is_splat;
13147 ptr = rb_array_const_ptr_transient(ary);
13150 if (space_size == 0) {
13152 else if (flag & 0x02) {
13155 for (
i=0;
i<num-
len;
i++) {
13159 for (j=0;
i<num;
i++, j++) {
13169 VALUE *bptr = &base[space_size - 1];
13170 for (
i=0;
i<num;
i++) {
13172 for (;
i<num;
i++) {
13188 (*__extension__ ({
volatile VALUE *rb_gc_guarded_ptr = &(ary);
__asm__(
"" : :
"m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
13199 return vm_call_general;
13203 return vm_call_general;
13207 return vm_call_general;
13212 return vm_call_general;
13243 static inline _Bool
13266 for (;
i > 0;
i--) {
13291 vm_search_method_fastpath(cd,
klass);
13307 vm_search_method(cd, recv);
13308 return check_cfunc(cd->
cc.
me, func);
13313 if (vm_method_cfunc_is(cd, recv, rb_obj_equal)) {
13318 #define BUILTIN_CLASS_P(x,k) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == k)
13319 #define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
13320 static inline _Bool
13325 long z = x & y & 1;
13328 static inline _Bool
13336 if (FIXNUM_2_P(recv,
obj)) {
13337 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 0))) == 0), 1))) != 0) * 2 - 1;
13339 if (FLONUM_2_P(recv,
obj)) {
13340 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 1))) == 0), 1))) != 0) * 2 - 1;
13343 return (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(
BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
13352 switch (comparable_by_identity(recv,
obj)) {
13368 return rb_str_eql_internal(recv,
obj);
13372 return opt_equal_fallback(recv,
obj, cd);
13379 switch (comparable_by_identity(recv,
obj)) {
13398 return opt_equal_fallback(recv,
obj, cd);
13400 #undef BUILTIN_CLASS_P
13401 #undef EQ_UNREDEFINED_P
13406 return opt_eq_func(obj1,
obj2, &cd);
13412 return opt_eql_func(obj1,
obj2, &cd);
13432 return __extension__({
static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, pattern,
idEqq, 1, &target); });
13436 rb_bug(
"check_match: unreachable");
13439 #define CHECK_CMP_NAN(a,b)
13440 static inline VALUE
13441 double_cmp_lt(
double a,
double b)
13446 static inline VALUE
13447 double_cmp_le(
double a,
double b)
13452 static inline VALUE
13453 double_cmp_gt(
double a,
double b)
13458 static inline VALUE
13459 double_cmp_ge(
double a,
double b)
13464 static inline VALUE *
13513 arg_rest_dup(args);
13526 args_reduce(
struct args_info *args,
int over_argc)
13529 const long len = rb_array_len(args->
rest);
13530 if (
len > over_argc) {
13531 arg_rest_dup(args);
13541 args->
argc -= over_argc;
13544 args_check_block_arg0(
struct args_info *args)
13547 if (args->
rest && rb_array_len(args->
rest) == 1) {
13548 VALUE arg0 = (rb_array_const_ptr_transient(args->
rest)[0]);
13551 else if (args->
argc == 1) {
13554 args->
argv[0] = arg0;
13570 arg_rest_dup(args);
13573 #pragma GCC diagnostic push
13575 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13576 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[--args->
rest_index]), (
VALUE)(_v),
"../ruby-2.7.2/vm_args.c", 154)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[--args->rest_index]), (
VALUE)(_v), "../
ruby-2.7.2/vm_args.c", 154));
13577 #pragma GCC diagnostic pop
13578 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
13584 else if (args->
argc > 0) {
13591 static inline const VALUE *
13594 return rb_array_const_ptr_transient(args->
rest) + args->
rest_index;
13596 static inline VALUE
13597 args_rest_array(
struct args_info *args)
13610 #define KW_HASH_HAS_NO_KEYS 0
13611 #define KW_HASH_HAS_SYMBOL_KEY 1
13612 #define KW_HASH_HAS_OTHER_KEY 2
13613 #define KW_HASH_HAS_BOTH_KEYS 3
13618 if ((*(
int*)
arg & 3) == 3) {
13624 keyword_hash_symbol_other(
VALUE hash)
13626 int symbol_other = 0;
13628 return symbol_other;
13640 keyword_hash_split(
VALUE *kw_hash_ptr,
VALUE *rest_hash_ptr)
13646 keyword_hash_p(
VALUE *kw_hash_ptr,
VALUE *rest_hash_ptr,
int check_only_symbol)
13650 if (check_only_symbol) {
13651 switch (keyword_hash_symbol_other(*rest_hash_ptr)) {
13660 keyword_hash_split(kw_hash_ptr, rest_hash_ptr);
13664 *kw_hash_ptr = *rest_hash_ptr;
13674 args_pop_keyword_hash(
struct args_info *args,
VALUE *kw_hash_ptr,
int check_only_symbol)
13680 *kw_hash_ptr = args->
argv[args->
argc-1];
13681 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13683 args->
argv[args->
argc-1] = rest_hash;
13692 long len = rb_array_len(args->
rest);
13694 *kw_hash_ptr = (rb_array_const_ptr_transient(args->
rest)[
len - 1]);
13695 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13697 do {
const VALUE _ary = (args->
rest);
const VALUE _v = (rest_hash);
VALUE *
ptr = (
VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
13698 #pragma GCC diagnostic push
13700 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13701 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v),
"../ruby-2.7.2/vm_args.c", 291)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v), "../
ruby-2.7.2/vm_args.c", 291));
13702 #pragma GCC diagnostic pop
13703 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
13706 arg_rest_dup(args);
13719 args_kw_argv_to_hash(
struct args_info *args)
13725 const int kw_start = args->
argc - kw_len;
13726 const VALUE *
const kw_argv = args->
argv + kw_start;
13728 args->
argc = kw_start + 1;
13729 for (
i=0;
i<kw_len;
i++) {
13736 args_stored_kw_argv_to_hash(
struct args_info *args)
13741 const int passed_keyword_len = kw_arg->
keyword_len;
13743 for (
i=0;
i<passed_keyword_len;
i++) {
13748 arg_rest_dup(args);
13764 const VALUE *
argv = args_rest_argv(args);
13766 locals[
i] =
argv[j];
13776 len = rb_array_len(args->
rest);
13781 args_setup_opt_parameters(
struct args_info *args,
int opt_max,
VALUE *locals)
13784 if (args->
argc >= opt_max) {
13785 args->
argc -= opt_max;
13786 args->
argv += opt_max;
13794 int len = ((
int)(rb_array_len(args->
rest)));
13795 const VALUE *
argv = rb_array_const_ptr_transient(args->
rest);
13800 for (j=
i; j<opt_max; j++) {
13807 args_setup_rest_parameter(
struct args_info *args,
VALUE *locals)
13809 *locals = args_rest_array(args);
13812 make_unknown_kw_hash(
const VALUE *passed_keywords,
int passed_keyword_len,
const VALUE *kw_argv)
13816 for (
i=0;
i<passed_keyword_len;
i++) {
13824 make_rest_kw_hash(
const VALUE *passed_keywords,
int passed_keyword_len,
const VALUE *kw_argv)
13828 for (
i=0;
i<passed_keyword_len;
i++) {
13836 args_setup_kw_parameters_lookup(
const ID key,
VALUE *
ptr,
const VALUE *
const passed_keywords,
VALUE *passed_values,
const int passed_keyword_len)
13840 for (
i=0;
i<passed_keyword_len;
i++) {
13841 if (keyname == passed_keywords[
i]) {
13842 *
ptr = passed_values[
i];
13849 #define KW_SPECIFIED_BITS_MAX (32-1)
13852 VALUE *
const passed_values,
const int passed_keyword_len,
const VALUE *
const passed_keywords,
13853 VALUE *
const locals)
13860 int i, di, found = 0;
13861 int unspecified_bits = 0;
13863 for (
i=0;
i<req_key_num;
i++) {
13864 ID key = acceptable_keywords[
i];
13865 if (args_setup_kw_parameters_lookup(
key, &locals[
i], passed_keywords, passed_values, passed_keyword_len)) {
13873 if (missing) argument_kw_error(ec,
iseq,
"missing", missing);
13874 for (di=0;
i<key_num;
i++, di++) {
13875 if (args_setup_kw_parameters_lookup(acceptable_keywords[
i], &locals[
i], passed_keywords, passed_values, passed_keyword_len)) {
13882 unspecified_bits |= 0x01 << di;
13888 for (j=0; j<(32-1); j++) {
13889 if (unspecified_bits & (0x01 << j)) {
13898 locals[
i] = default_values[di];
13903 const int rest_hash_index = key_num + 1;
13904 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
13907 if (found != passed_keyword_len) {
13908 VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
13909 argument_kw_error(ec,
iseq,
"unknown",
keys);
13915 locals[key_num] = unspecified_bits_value;
13918 args_setup_kw_rest_parameter(
VALUE keyword_hash,
VALUE *locals)
13937 int i =
arg->argc++;
13955 static st_table *caller_to_callees = 0;
13960 if (!
iseq)
return 0;
13963 if (!
cfp)
return 0;
13965 if (!caller_to_callees) {
13973 if (val ==
callee)
return 1;
13992 if (rb_warn_check(ec,
iseq))
return;
13995 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
14001 rb_warn(
"Passing the keyword argument for `%""l""i" "\v""' as the last hash parameter is deprecated",
14005 rb_warn(
"Passing the keyword argument as the last hash parameter is deprecated");
14007 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14008 "The called method `%""l""i" "\v""' is defined here",
name);
14011 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14012 "The called method is defined here");
14019 if (rb_warn_check(ec,
iseq))
return;
14024 rb_warn(
"Splitting the last argument for `%""l""i" "\v""' into positional and keyword parameters is deprecated",
14028 rb_warn(
"Splitting the last argument into positional and keyword parameters is deprecated");
14030 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14031 "The called method `%""l""i" "\v""' is defined here",
name);
14034 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14035 "The called method is defined here");
14042 if (rb_warn_check(ec,
iseq))
return;
14047 rb_warn(
"Using the last argument for `%""l""i" "\v""' as keyword parameters is deprecated; maybe ** should be added to the call",
14051 rb_warn(
"Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call");
14053 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14054 "The called method `%""l""i" "\v""' is defined here",
name);
14057 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)((
long)(((
long)((rb_array_const_ptr_transient(loc)[1])))>>(
int)(1)))),
14058 "The called method is defined here");
14073 int opt_pc = 0, allow_autosplat = !kw_flag;
14078 int remove_empty_keyword_hash = 1;
14079 VALUE flag_keyword_hash = 0;
14084 ec->
cfp->
sp = &locals[
i];
14087 args->
argv = locals;
14094 args->
argc -= kw_len;
14095 given_argc -= kw_len;
14100 given_argc = args_kw_argv_to_hash(args);
14105 args->
kw_arg = ((
void *)0);
14109 remove_empty_keyword_hash = 0;
14112 VALUE rest_last = 0;
14114 args->
rest = locals[--args->
argc];
14117 given_argc +=
len - 1;
14118 rest_last = (rb_array_const_ptr_transient(args->
rest)[
len - 1]);
14119 if (!kw_flag &&
len > 0) {
14125 remove_empty_keyword_hash = 0;
14133 if (
len > 0 && ignore_keyword_hash_p(rest_last,
iseq)) {
14135 if (remove_empty_keyword_hash) {
14136 arg_rest_dup(args);
14144 do {
const VALUE _ary = (args->
rest);
const VALUE _v = (rest_last);
VALUE *
ptr = (
VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
14145 #pragma GCC diagnostic push
14147 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
14148 ; typeof(rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v),
"../ruby-2.7.2/vm_args.c", 826)) unaligned_member_access_result = (rb_obj_write((
VALUE)(_ary), (
VALUE *)(&
ptr[
len - 1]), (
VALUE)(_v), "../
ruby-2.7.2/vm_args.c", 826));
14149 #pragma GCC diagnostic pop
14150 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); }
while (0);
14152 flag_keyword_hash = rest_last;
14159 else if (!remove_empty_keyword_hash && rest_last) {
14160 flag_keyword_hash = rest_last;
14167 if (ignore_keyword_hash_p(last_arg,
iseq)) {
14169 if (remove_empty_keyword_hash) {
14177 args->
argv[args->
argc-1] = last_arg;
14179 flag_keyword_hash = last_arg;
14186 else if (!remove_empty_keyword_hash) {
14187 flag_keyword_hash = args->
argv[args->
argc-1];
14202 if (given_argc == 1 &&
14207 args_check_block_arg0(args)) {
14208 given_argc = ((
int)(rb_array_len(args->
rest)));
14214 args_stored_kw_argv_to_hash(args);
14215 given_argc = args_argc(args);
14232 (kw_splat && given_argc >
max_argc)) &&
14233 args->
kw_argv == ((
void *)0)) {
14239 if (args_pop_keyword_hash(args, &keyword_hash, check_only_symbol)) {
14242 else if (check_only_symbol) {
14251 else if (args_pop_keyword_hash(args, &keyword_hash, 1)) {
14259 else if (given_argc ==
min_argc && kw_flag) {
14265 args_reduce(args, given_argc -
max_argc);
14290 if (args->
kw_argv != ((
void *)0)) {
14298 arg.vals =
arg.keys + kw_len;
14302 args_setup_kw_parameters(ec,
iseq,
arg.vals, kw_len,
arg.keys, klocals);
14306 args_setup_kw_parameters(ec,
iseq, ((
void *)0), 0, ((
void *)0), klocals);
14322 ec->
cfp->
sp = orig_sp;
14334 ec->
cfp->
sp, 0, 0 );
14352 const ID *keywords = kw->table;
14353 int req_key_num = kw->required_num;
14354 if (req_key_num > 0) {
14355 static const char required[] =
"; required keywords";
14358 rb_str_cat(mesg, required,
sizeof(required) - 1 - (req_key_num == 1));
14364 }
while (--req_key_num);
14368 raise_argument_error(ec,
iseq,
exc);
14384 const VALUE *
ptr = rb_array_const_ptr_transient(
ary);
14385 long len = rb_array_len(
ary),
i;
14387 for (
i = 0;
i <
len;
i++) {
14402 for (
i=0;
i<kw_len;
i++) {
14405 (sp-kw_len)[0] =
h;
14406 cfp->
sp -= kw_len - 1;
14411 vm_to_proc(
VALUE proc)
14425 "wrong argument type %s (expected Proc)",
14441 const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
14442 const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
14459 ec = rb_current_execution_context();
14461 vm_passed_block_handler_set(ec, blockarg);
14506 return vm_to_proc(block_code);
14509 else if (blockiseq != ((
void *)0)) {
14512 return VM_BH_FROM_ISEQ_BLOCK(captured);
14516 return ((VM_EP_LEP(((((
reg_cfp)->
ep)))))[(-1)]);
14535 return vm_call_iseq_setup_tailcall(ec,
cfp,
calling, cd, 0);
14545 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14612 #define USE_OPT_HIST 0
14621 const int opt =
calling->argc - lead_num;
14626 const int delta = opt_num - opt;
14638 const int opt =
calling->argc - lead_num;
14645 VALUE *
const passed_values,
const int passed_keyword_len,
const VALUE *
const passed_keywords,
14646 VALUE *
const locals);
14663 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14665 VALUE *
const ci_kws = (
VALUE*)__builtin_alloca_with_align((
sizeof(
VALUE)*(ci_kw_len)), _Alignof(
VALUE) * 8);
14667 args_setup_kw_parameters(ec,
iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14670 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14684 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14686 for (
i=0;
i<kw_param->num;
i++) {
14687 klocals[
i] = kw_param->default_values[
i];
14692 return vm_call_iseq_setup_normal(ec,
cfp,
calling,
cc->
me, 0, param, local);
14711 else if (rb_iseq_only_optparam_p(
iseq)) {
14718 const int opt =
argc - lead_num;
14719 if (opt < 0 || opt > opt_num) {
14720 argument_arity_error(ec,
iseq,
argc, lead_num, lead_num + opt_num);
14723 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_normal_opt_start,
14728 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_tailcall_opt_start,
14733 for (
int i=
argc;
i<lead_num + opt_num;
i++) {
14747 VALUE *
const ci_kws = (
VALUE*)__builtin_alloca_with_align((
sizeof(
VALUE)*(ci_kw_len)), _Alignof(
VALUE) * 8);
14749 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14750 args_setup_kw_parameters(ec,
iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14751 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_kwparm_kwarg,
14756 else if (
argc == lead_num) {
14757 VALUE *
const klocals =
argv + kw_param->bits_start - kw_param->num;
14758 args_setup_kw_parameters(ec,
iseq, ((
void *)0), 0, ((
void *)0), klocals);
14760 CC_SET_FASTPATH(
cc, vm_call_iseq_setup_kwparm_nokwarg,
14780 static inline VALUE
14793 static inline VALUE
14808 static inline VALUE
14818 VALUE *sp_orig, *sp;
14820 if (VM_BH_FROM_CFP_P(
calling->block_handler,
cfp)) {
14824 if (VM_BH_ISEQ_BLOCK_P(
calling->block_handler)) {
14825 calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
14828 calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
14833 sp_orig = sp =
cfp->
sp;
14837 *sp++ = src_argv[
i];
14867 return (*
f)(recv,
argv[0]);
14890 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
14896 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
14902 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
14908 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
14914 VALUE(*
f)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE) = (
VALUE(*)(
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE,
VALUE))func;
14920 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;
14921 return (*
f)(recv,
argv[0],
argv[1],
argv[2],
argv[3],
argv[4],
argv[5],
argv[6],
argv[7],
argv[8],
argv[9]);
14926 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;
14927 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]);
14932 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;
14933 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]);
14938 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;
14939 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]);
14944 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;
14945 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]);
14950 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;
14951 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]);
14958 if ((((ec)->raised_flag & (ov_flags)) != 0)) {
14959 ((ec)->raised_flag &= ~(ov_flags));
14964 #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)))
14969 return __extension__({
14970 #pragma GCC diagnostic push
14972 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
14973 ; typeof(&(
me->
def)->body.cfunc) unaligned_member_access_result = (&(
me->
def)->body.cfunc);
14974 #pragma GCC diagnostic pop
14975 ; unaligned_member_access_result; });
14990 int orig_argc =
argc;
14999 vm_push_frame(ec, ((
void *)0), frame_type, recv,
15001 0, ec->
cfp->
sp, 0, 0);
15015 int empty_kw_splat;
15018 empty_kw_splat =
calling->kw_splat;
15020 if (empty_kw_splat &&
calling->kw_splat) {
15021 empty_kw_splat = 0;
15023 return vm_call_cfunc_with_frame(ec,
reg_cfp,
calling, cd, empty_kw_splat);
15042 static inline VALUE
15064 return vm_call_bmethod_body(ec,
calling, cd,
argv);
15096 cd.ci_kw.
ci = *orig_ci;
15119 (((
reg_cfp)->sp) -= (((1))));
15133 (((
reg_cfp)->sp) -= (((1))));
15142 return vm_invoke_block_opt_call(ec,
reg_cfp,
calling,
ci, VM_BH_FROM_PROC(procval));
15155 vm_search_method(cd,
calling->recv);
15183 (((
reg_cfp)->sp) += (((1))));
15197 return vm_call_method_nome(ec,
cfp,
calling, cd);
15201 CC_SET_ME(
cc, refined_method_callable_without_refinement(
cc->
me));
15203 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15205 static inline VALUE
15222 if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec,
cfp)) {
15225 }
while (
cfp->
iseq != local_iseq);
15230 find_defined_class_by_owner(
VALUE current_class,
VALUE target_owner)
15236 if (owner == target_owner) {
15241 return current_class;
15254 #pragma GCC diagnostic push
15256 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
15258 #pragma GCC diagnostic pop
15259 ; unaligned_member_access_result; });
15295 for (; cref; cref = CREF_NEXT(cref)) {
15296 const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref),
cc->
me->
owner);
15301 if (
cc->
call == vm_call_super_method) {
15310 CC_SET_ME(
cc, ref_me);
15317 CC_SET_ME(
cc, ((
void *)0));
15322 CC_SET_ME(
cc, refined_method_callable_without_refinement(
cc->
me));
15337 CC_SET_FASTPATH(
cc, vm_call_iseq_setup, 1);
15338 return vm_call_iseq_setup(ec,
cfp,
calling, cd);
15341 CC_SET_FASTPATH(
cc, vm_call_cfunc, 1);
15346 rb_warn_keyword_to_last_hash(ec,
calling,
ci, ((
void *)0));
15354 return vm_call_attrset(ec,
cfp,
calling, cd);
15364 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15365 return vm_call_method_missing(ec,
cfp,
calling, cd);
15367 CC_SET_FASTPATH(
cc, vm_call_bmethod, 1);
15368 return vm_call_bmethod(ec,
cfp,
calling, cd);
15370 CC_SET_ME(
cc, aliased_callable_method_entry(
cc->
me));
15372 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15376 CC_SET_FASTPATH(
cc, vm_call_opt_send, 1);
15377 return vm_call_opt_send(ec,
cfp,
calling, cd);
15379 CC_SET_FASTPATH(
cc, vm_call_opt_call, 1);
15380 return vm_call_opt_call(ec,
cfp,
calling, cd);
15382 CC_SET_FASTPATH(
cc, vm_call_opt_block_call, 1);
15383 return vm_call_opt_block_call(ec,
cfp,
calling, cd);
15385 rb_bug(
"vm_call_method: unsupported optimized method type (%d)",
15393 if (search_refined_method(ec,
cfp,
ci->mid,
cc))
15394 return vm_call_method(ec,
cfp,
calling, cd);
15396 return vm_call_method_nome(ec,
cfp,
calling, cd);
15406 const int stat = ci_missing_reason(
ci);
15414 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15415 return vm_call_method_missing(ec,
cfp,
calling, cd);
15418 static inline VALUE
15424 if (
cc->
me != ((
void *)0)) {
15427 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15433 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15434 return vm_call_method_missing(ec,
cfp,
calling, cd);
15436 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15441 return vm_call_method_missing(ec,
cfp,
calling, cd);
15448 return vm_call_method_each_type(ec,
cfp,
calling, (
void *)&cd_entry);
15452 return vm_call_method_each_type(ec,
cfp,
calling, &cd_entry);
15456 return vm_call_method_each_type(ec,
cfp,
calling, cd);
15462 return vm_call_method_nome(ec,
cfp,
calling, cd);
15479 static inline VALUE
15489 __attribute__ ((__noreturn__))
static void vm_super_outside(
void);
15491 vm_super_outside(
void)
15503 vm_super_outside();
15507 current_defined_class = ((((
struct RClass*)(current_defined_class))->
ptr)->refined_class);
15513 ((((
struct RClass*)(current_defined_class))->
ptr)->includer) : current_defined_class;
15516 "self has wrong type to call super in this context: "
15517 "%""l""i" "\v"" (expected %""l""i" "\v"")",
15523 "implicit argument passing of super from method defined"
15524 " by define_method() is not supported."
15525 " Specify all arguments explicitly.");
15531 CC_SET_FASTPATH(
cc, vm_call_method_missing, 1);
15535 CC_SET_FASTPATH(
cc, vm_call_super_method, 1);
15539 block_proc_is_lambda(
const VALUE procval)
15543 (((proc)) = (
rb_proc_t*)(((
struct RData*)(((procval))))->data));
15563 else if (
argc == 0) {
15571 switch (kw_splat) {
15582 ((
VALUE)((captured->
ep)) | (0x01)),
15584 0, ec->
cfp->
sp, 0, 0);
15598 long len = rb_array_len(ary);
15601 argv[
i] = (rb_array_const_ptr_transient(ary)[
i]);
15605 static inline VALUE
15606 vm_callee_setup_block_arg_arg0_check(
VALUE *
argv)
15663 calling->kw_splat = kw_splat;
15678 (((
reg_cfp)->sp) = (((rsp))));
15679 vm_push_frame(ec,
iseq,
15682 ((
VALUE)((captured->
ep)) | (0x01)), 0,
15708 int kw_splat =
calling->kw_splat;
15711 if (kw_splat && !
calling->kw_splat) {
15715 kw_splat =
calling->kw_splat;
15718 val = vm_yield_with_cfunc(ec, captured, captured->
self,
argc, (((((
reg_cfp)->sp)))-(
argc)), kw_splat,
calling->block_handler, ((
void *)0));
15723 vm_proc_to_block_handler(
VALUE procval)
15725 const struct rb_block *block = vm_proc_block(procval);
15726 switch (vm_block_type(block)) {
15728 return VM_BH_FROM_ISEQ_BLOCK(&block->
as.
captured);
15730 return VM_BH_FROM_IFUNC_BLOCK(&block->
as.
captured);
15732 return VM_BH_FROM_SYMBOL(block->
as.
symbol);
15734 return VM_BH_FROM_PROC(block->
as.
proc);
15736 __builtin_unreachable();
15739 static inline VALUE
15749 return vm_invoke_iseq_block(ec,
reg_cfp,
calling,
ci, is_lambda, captured);
15757 is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(
block_handler));
15763 __builtin_unreachable();
15767 vm_make_proc_with_iseq(
const rb_iseq_t *blockiseq)
15773 rb_bug(
"vm_make_proc_with_iseq: unreachable");
15775 captured = VM_CFP_TO_CAPTURED_BLOCK(
cfp);
15777 return rb_vm_make_proc(ec, captured,
rb_cProc);
15786 vm_once_clear(
VALUE data)
15861 expr_type = check_respond_to_missing(
obj,
v);
15883 expr_type = check_respond_to_missing(
obj,
v);
15888 if (((VM_EP_LEP(((((
reg_cfp)->ep)))))[(-1)]) != 0) {
15911 rb_bug(
"unimplemented defined? type (VM)");
15914 if (expr_type != 0) {
15926 static const VALUE *
15930 const VALUE *ep = reg_ep;
15931 for (
i = 0;
i < lv;
i++) {
15932 ep = ((
VALUE *)((ep)[(-1)] & ~0x03));
15937 vm_get_special_object(
const VALUE *
const reg_ep,
15944 return vm_get_cbase(reg_ep);
15946 return vm_get_const_base(reg_ep);
15948 rb_bug(
"putspecialobject insn: unknown value_type %d",
type);
15962 const VALUE ary2 = ary2st;
15966 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); });
15969 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); });
15971 if (tmp1 == ary1) {
15981 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); });
15996 const long n = rb_array_len(pattern);
15997 for (
i = 0;
i <
n;
i++) {
15998 VALUE v = (rb_array_const_ptr_transient(pattern)[
i]);
16007 return check_match(ec, pattern, target,
type);
16013 const VALUE kw_bits = *(ep - bits);
16015 unsigned int b = (
unsigned int)((
unsigned long)((
long)(((
long)(kw_bits))>>(
int)(1))));
16016 if ((idx < (32-1)) && (b & (0x01 << idx)))
16052 if ((ns = vm_search_const_defined_class(
cbase,
id)) == 0) {
16055 else if (((flags) & 0x08)) {
16068 else if (((flags) & 0x10)) {
16070 if (tmp != super) {
16072 "superclass mismatch for class %""l""i" "\v""",
16122 rb_str_catf(message,
"\n%""l""i" "\v"":%""l""i" "\v"":"
16123 " previous definition of %""l""i" "\v"" was here",
16134 "superclass must be a Class (%""l""i" "\v"" given)",
16137 vm_check_if_namespace(
cbase);
16139 if ((
klass = vm_const_get_under(
id, flags,
cbase)) != 0) {
16140 if (!vm_check_if_class(
id, flags, super,
klass))
16141 unmatched_redefinition(
"class",
cbase,
id,
klass);
16145 return vm_declare_class(
id, flags,
cbase, super);
16152 vm_check_if_namespace(
cbase);
16153 if ((
mod = vm_const_get_under(
id, flags,
cbase)) != 0) {
16154 if (!vm_check_if_module(
id,
mod))
16155 unmatched_redefinition(
"module",
cbase,
id,
mod);
16159 return vm_declare_module(
id,
cbase);
16163 vm_find_or_create_class_by_id(
ID id,
16171 return vm_define_class(
id, flags,
cbase, super);
16175 return vm_define_module(
id, flags,
cbase);
16177 rb_bug(
"unknown defineclass type: %d", (
int)
type);
16184 if (!vm_env_cref_by_cref(
cfp->
ep)) {
16188 return CREF_SCOPE_VISI(vm_ec_cref(ec))->
method_visi;
16195 if (!vm_env_cref_by_cref(
cfp->
ep)) {
16199 return CREF_SCOPE_VISI(vm_ec_cref(ec))->
module_func;
16208 if (!is_singleton) {
16209 klass = CREF_CLASS(cref);
16210 visi = vm_scope_visibility_get(ec);
16220 if (!is_singleton && vm_scope_module_func_check(ec)) {
16226 vm_search_method_wrap(
16231 vm_search_method(cd, recv);
16234 vm_search_invokeblock(
16262 void (*method_explorer)(
16270 int argc =
ci->orig_argc;
16285 if (((((
reg_cfp)))->
iseq)->body->catch_except_p) {
16298 vm_opt_str_freeze(
VALUE str,
int bop,
ID id)
16300 if (((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16307 #define id_cmp idCmp
16321 if ((((((
int)(
long)(
v))&
RUBY_FIXNUM_FLAG) && (((
int)(
long)(result))&
RUBY_FIXNUM_FLAG) && (((cmp_opt).
opt_inited & (1
U <<
cmp_opt_Fixnum)) ? ((cmp_opt).
opt_methods & (1
U <<
cmp_opt_Fixnum)) : (((cmp_opt).
opt_inited |= (1
U <<
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 |= (1
U <<
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) ? ( 0 || (!(((
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) ? ( 0 || (!(((
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 & (1
U <<
cmp_opt_String)) ? ((cmp_opt).opt_methods & (1
U <<
cmp_opt_String)) : (((cmp_opt).opt_inited |= (1
U <<
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 |= (1
U <<
cmp_opt_String))))) ?
rb_str_cmp(
v, result) : (( 0 || (!(((
VALUE)(
v) &
RUBY_IMMEDIATE_MASK) || !!(((
VALUE)(
v) & (
VALUE)~((
VALUE)
RUBY_Qnil)) == 0)) && (
int)(((
struct RBasic*)(
v))->flags &
RUBY_T_MASK) ==
RUBY_T_FLOAT)) && ( 0 || (!(((
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 & (1
U <<
cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1
U <<
cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1
U <<
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 |= (1
U <<
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) {
16330 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)); }); });
16346 if ((((((
int)(
long)(
v))&
RUBY_FIXNUM_FLAG) && (((
int)(
long)(result))&
RUBY_FIXNUM_FLAG) && (((cmp_opt).
opt_inited & (1
U <<
cmp_opt_Fixnum)) ? ((cmp_opt).
opt_methods & (1
U <<
cmp_opt_Fixnum)) : (((cmp_opt).
opt_inited |= (1
U <<
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 |= (1
U <<
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) ? ( 0 || (!(((
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) ? ( 0 || (!(((
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 & (1
U <<
cmp_opt_String)) ? ((cmp_opt).opt_methods & (1
U <<
cmp_opt_String)) : (((cmp_opt).opt_inited |= (1
U <<
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 |= (1
U <<
cmp_opt_String))))) ?
rb_str_cmp(
v, result) : (( 0 || (!(((
VALUE)(
v) &
RUBY_IMMEDIATE_MASK) || !!(((
VALUE)(
v) & (
VALUE)~((
VALUE)
RUBY_Qnil)) == 0)) && (
int)(((
struct RBasic*)(
v))->flags &
RUBY_T_MASK) ==
RUBY_T_FLOAT)) && ( 0 || (!(((
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 & (1
U <<
cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1
U <<
cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1
U <<
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 |= (1
U <<
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) {
16355 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)); }); });
16360 vm_ic_hit_p(
IC ic,
const VALUE *reg_ep)
16363 return (ic->
ic_cref == ((
void *)0) ||
16364 ic->
ic_cref == vm_get_cref(reg_ep));
16374 ic->
ic_cref = vm_get_const_key_cref(reg_ep);
16391 #pragma GCC diagnostic push
16393 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
16394 ; typeof(rb_obj_write((
VALUE)(ec->
cfp->
iseq), (
VALUE *)(&is->
once.
value), (
VALUE)(val),
"../ruby-2.7.2/vm_insnhelper.c", 4160)) unaligned_member_access_result = (rb_obj_write((
VALUE)(ec->
cfp->
iseq), (
VALUE *)(&is->once.value), (
VALUE)(val), "../
ruby-2.7.2/vm_insnhelper.c", 4160));
16395 #pragma GCC diagnostic pop
16396 ; unaligned_member_access_result; });
16404 rb_vm_check_ints(ec);
16421 double kval = rb_float_value_inline(
key);
16422 if (!(__builtin_isinf_sign (kval)) &&
modf(kval, &kval) == 0.0) {
16430 return else_offset;
16444 static const char stack_consistency_error[] =
16445 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
16446 rb_bug(stack_consistency_error, nsp, nbp);
16451 if (FIXNUM_2_P(recv,
obj) &&
16453 return rb_fix_plus_fix(recv,
obj);
16455 else if (FLONUM_2_P(recv,
obj) &&
16457 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(
obj));
16465 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(
obj));
16484 if (FIXNUM_2_P(recv,
obj) &&
16486 return rb_fix_minus_fix(recv,
obj);
16488 else if (FLONUM_2_P(recv,
obj) &&
16490 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(
obj));
16498 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(
obj));
16507 if (FIXNUM_2_P(recv,
obj) &&
16509 return rb_fix_mul_fix(recv,
obj);
16511 else if (FLONUM_2_P(recv,
obj) &&
16513 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(
obj));
16521 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(
obj));
16530 if (FIXNUM_2_P(recv,
obj) &&
16534 else if (FLONUM_2_P(recv,
obj) &&
16553 if (FIXNUM_2_P(recv,
obj) &&
16557 else if (FLONUM_2_P(recv,
obj) &&
16559 return rb_float_new_inline(
ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(
obj)));
16567 return rb_float_new_inline(
ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(
obj)));
16577 VALUE val = opt_eq_func(recv,
obj, cd_eq);
16587 if (FIXNUM_2_P(recv,
obj) &&
16591 else if (FLONUM_2_P(recv,
obj) &&
16598 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16611 if (FIXNUM_2_P(recv,
obj) &&
16615 else if (FLONUM_2_P(recv,
obj) &&
16622 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16635 if (FIXNUM_2_P(recv,
obj) &&
16639 else if (FLONUM_2_P(recv,
obj) &&
16646 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16659 if (FIXNUM_2_P(recv,
obj) &&
16663 else if (FLONUM_2_P(recv,
obj) &&
16670 else if ((((
struct RBasic*)(recv))->klass) ==
rb_cFloat &&
16701 if (FIXNUM_2_P(recv,
obj) &&
16703 return (recv &
obj) | 1;
16712 if (FIXNUM_2_P(recv,
obj) &&
16724 if (FIXNUM_2_P(recv,
obj) &&
16733 return rb_ary_entry_internal(recv, ((
long)(((
long)(
obj))>>(
int)(1))));
16793 vm_opt_length(
VALUE recv,
int bop)
16799 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16808 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
16809 return rb_long2num_inline(rb_array_len(recv));
16812 ((
__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
16820 vm_opt_empty_p(
VALUE recv)
16836 else if (vm_method_cfunc_is(cd, recv,
rb_false)) {
16849 case ((~0UL)>>(
int)(1)):
16856 vm_opt_succ(
VALUE recv)
16860 return fix_succ(recv);
16876 if (vm_method_cfunc_is(cd, recv, rb_obj_not)) {
16912 if (event & global_hooks->
events) {
16914 vm_dtrace(event, ec);
16915 rb_exec_event_hook_orig(ec, global_hooks, event,
self, 0, 0, 0 , val, 0);
16918 if (local_hooks != ((
void *)0)) {
16919 if (event & local_hooks->
events) {
16921 rb_exec_event_hook_orig(ec, local_hooks, event,
self, 0, 0, 0 , val, 0);
16926 #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)
16940 enabled_flags |= local_hook_events;
16942 if ((pc_events & enabled_flags) == 0) {
16945 else if (ec->
trace_arg != ((
void *)0)) {
16961 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);
16962 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);
16963 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);
16964 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);
16965 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);
16974 return (*(rb_invoke_funcptr0_t)funcptr)(ec,
self);
16980 return (*(rb_invoke_funcptr1_t)funcptr)(ec,
self,
argv[0]);
16986 return (*(rb_invoke_funcptr2_t)funcptr)(ec,
self,
argv[0],
argv[1]);
16992 return (*(rb_invoke_funcptr3_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2]);
16998 return (*(rb_invoke_funcptr4_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2],
argv[3]);
17004 return (*(rb_invoke_funcptr5_t)funcptr)(ec,
self,
argv[0],
argv[1],
argv[2],
argv[3],
argv[4]);
17027 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);
17028 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]);
17033 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);
17034 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]);
17039 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);
17040 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]);
17045 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);
17046 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]);
17051 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);
17052 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]);
17057 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);
17058 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]);
17063 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);
17064 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]);
17068 lookup_builtin_invoker(
int argc)
17088 return invokers[
argc];
17090 static inline VALUE
17099 return invoke_bf(ec,
cfp, bf,
argv);
17106 for (
int i=0;
i<bf->
argc;
i++) {
17112 if (bf->
argc == 0) {
17113 return invoke_bf(ec,
cfp, bf, ((
void *)0));
17117 return invoke_bf(ec,
cfp, bf,
argv);
17137 static VALUE rb_eUncaughtThrow;
17138 static ID id_result, id_tag, id_value;
17139 #define id_mesg idMesg
17170 rb_raise(e,
"method name must be a Symbol but %""l""i" "\v"" is given",
17175 format =
rb_fstring_new((
"private method `%s' called for %s%s%s"), (
sizeof(
"private method `%s' called for %s%s%s" "") - 1));
17178 format =
rb_fstring_new((
"protected method `%s' called for %s%s%s"), (
sizeof(
"protected method `%s' called for %s%s%s" "") - 1));
17181 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));
17185 format =
rb_fstring_new((
"super: no superclass method `%s' for %s%s%s"), (
sizeof(
"super: no superclass method `%s' for %s%s%s" "") - 1));
17200 vm_passed_block_handler_set(ec, 0);
17203 static inline VALUE
17215 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))));
17221 if (!
klass)
goto missing;
17232 if (VM_FRAME_RUBYFRAME_P(
cfp)) {
17236 while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec,
cfp)) {
17237 if (VM_FRAME_RUBYFRAME_P(
cfp)) {
17261 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 0);
17267 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 1);
17273 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 2);
17279 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 3);
17285 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 4);
17291 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 0, 5);
17297 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 0);
17303 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 1);
17309 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 2);
17315 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 3);
17321 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 4);
17327 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 1, 5);
17333 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 0);
17339 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 1);
17345 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 2);
17351 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 3);
17357 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 4);
17363 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 2, 5);
17369 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 0);
17375 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 1);
17381 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 2);
17387 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 3);
17393 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 4);
17399 return vm_call_iseq_setup_normal(ec,
cfp,
calling, cd->
cc.
me, 0, 3, 5);
17402 {vm_call_iseq_setup_normal_0start_0params_0locals,
17403 vm_call_iseq_setup_normal_0start_0params_1locals,
17404 vm_call_iseq_setup_normal_0start_0params_2locals,
17405 vm_call_iseq_setup_normal_0start_0params_3locals,
17406 vm_call_iseq_setup_normal_0start_0params_4locals,
17407 vm_call_iseq_setup_normal_0start_0params_5locals},
17408 {vm_call_iseq_setup_normal_0start_1params_0locals,
17409 vm_call_iseq_setup_normal_0start_1params_1locals,
17410 vm_call_iseq_setup_normal_0start_1params_2locals,
17411 vm_call_iseq_setup_normal_0start_1params_3locals,
17412 vm_call_iseq_setup_normal_0start_1params_4locals,
17413 vm_call_iseq_setup_normal_0start_1params_5locals},
17414 {vm_call_iseq_setup_normal_0start_2params_0locals,
17415 vm_call_iseq_setup_normal_0start_2params_1locals,
17416 vm_call_iseq_setup_normal_0start_2params_2locals,
17417 vm_call_iseq_setup_normal_0start_2params_3locals,
17418 vm_call_iseq_setup_normal_0start_2params_4locals,
17419 vm_call_iseq_setup_normal_0start_2params_5locals},
17420 {vm_call_iseq_setup_normal_0start_3params_0locals,
17421 vm_call_iseq_setup_normal_0start_3params_1locals,
17422 vm_call_iseq_setup_normal_0start_3params_2locals,
17423 vm_call_iseq_setup_normal_0start_3params_3locals,
17424 vm_call_iseq_setup_normal_0start_3params_4locals,
17425 vm_call_iseq_setup_normal_0start_3params_5locals}
17431 return &vm_call_iseq_setup_tailcall_0start;
17434 return &vm_call_iseq_setup_normal_0start;
17442 return &vm_call_iseq_setup_normal_0start;