Ruby  2.7.2p137(2020-10-01revision5445e0435260b449decf2ac16f9d09bae3cafe72)
rb_mjit_min_header-2.7.2.h
Go to the documentation of this file.
1 #define MJIT_HEADER 1
2 #define _FORTIFY_SOURCE 2
3 #define RUBY_EXPORT 1
4 #define CANONICALIZATION_FOR_MATHN 1
5 #define _XOPEN_SOURCE 1
6 #define _GNU_SOURCE 1
7 #define RUBY_INTERNAL_H 1
8 #define RUBY_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
23 #define RUBY_RUBY_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
36 #define _ALL_SOURCE 1
37 #define _GNU_SOURCE 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
45 #define HAVE_LIBDL 1
46 #define HAVE_DIRENT_H 1
47 #define HAVE__BOOL 1
48 #define HAVE_STDBOOL_H 1
49 #define HAVE_SYS_WAIT_H 1
50 #define HAVE_A_OUT_H 1
51 #define HAVE_GRP_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
60 #define HAVE_PWD_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
74 #define HAVE_TIME_H 1
75 #define HAVE_UCONTEXT_H 1
76 #define HAVE_UTIME_H 1
77 #define HAVE_GMP_H 1
78 #define HAVE_LIBGMP 1
79 #define HAVE_TYPEOF 1
80 #define restrict __restrict
81 #define HAVE_LONG_LONG 1
82 #define HAVE_OFF_T 1
83 #define SIZEOF_INT 4
84 #define SIZEOF_SHORT 2
85 #define SIZEOF_LONG 4
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"
98 #define HAVE_PID_T 1
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
104 #define HAVE_UID_T 1
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
110 #define HAVE_GID_T 1
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
122 #define HAVE_DEV_T 1
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
140 #define HAVE_OFF_T 1
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
243 #define HAVE_ACOSH 1
244 #define HAVE_CBRT 1
245 #define HAVE_CRYPT 1
246 #define HAVE_DUP2 1
247 #define HAVE_ERF 1
248 #define HAVE_EXPLICIT_BZERO 1
249 #define HAVE_FFS 1
250 #define HAVE_FLOCK 1
251 #define HAVE_HYPOT 1
252 #define HAVE_LGAMMA_R 1
253 #define HAVE_MEMMOVE 1
254 #define HAVE_NAN 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
263 #define HAVE_ISINF 1
264 #define HAVE_ISNAN 1
265 #define HAVE_SIGNBIT 1
266 #define HAVE_FORK 1
267 #define HAVE_VFORK 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
276 #define HAVE_COSH 1
277 #define HAVE_CRYPT_R 1
278 #define HAVE_DIRFD 1
279 #define HAVE_DLOPEN 1
280 #define HAVE_DLADDR 1
281 #define HAVE_DUP 1
282 #define HAVE_DUP3 1
283 #define HAVE_EACCESS 1
284 #define HAVE_ENDGRENT 1
285 #define HAVE_FCHMOD 1
286 #define HAVE_FCHOWN 1
287 #define HAVE_FCNTL 1
288 #define HAVE_FDATASYNC 1
289 #define HAVE_FDOPENDIR 1
290 #define HAVE_FMOD 1
291 #define HAVE_FSTATAT 1
292 #define HAVE_FSYNC 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
309 #define HAVE_IOCTL 1
310 #define HAVE_ISSETUGID 1
311 #define HAVE_KILLPG 1
312 #define HAVE_LCHOWN 1
313 #define HAVE_LINK 1
314 #define HAVE_LLABS 1
315 #define HAVE_LOCKF 1
316 #define HAVE_LOG2 1
317 #define HAVE_LSTAT 1
318 #define HAVE_LUTIMES 1
319 #define HAVE_MALLOC_USABLE_SIZE 1
320 #define HAVE_MBLEN 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
326 #define HAVE_MKNOD 1
327 #define HAVE_MKTIME 1
328 #define HAVE_OPENAT 1
329 #define HAVE_PIPE2 1
330 #define HAVE_POLL 1
331 #define HAVE_POSIX_FADVISE 1
332 #define HAVE_POSIX_MEMALIGN 1
333 #define HAVE_PPOLL 1
334 #define HAVE_PREAD 1
335 #define HAVE_PWRITE 1
336 #define HAVE_QSORT_R 1
337 #define HAVE_READLINK 1
338 #define HAVE_REALPATH 1
339 #define HAVE_ROUND 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
358 #define HAVE_SINH 1
359 #define HAVE_SPAWNV 1
360 #define HAVE_SYMLINK 1
361 #define HAVE_SYSCONF 1
362 #define HAVE_TANH 1
363 #define HAVE_TELLDIR 1
364 #define HAVE_TIMEGM 1
365 #define HAVE_TIMES 1
366 #define HAVE_TRUNCATE 1
367 #define HAVE_UNSETENV 1
368 #define HAVE_UTIMENSAT 1
369 #define HAVE_UTIMES 1
370 #define HAVE_WAIT4 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
398 #define HAVE_LIBRT 1
399 #define HAVE_LIBRT 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
408 #define HAVE_SIG_T 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"
413 #define _REENTRANT 1
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
430 #define DLEXT ".so"
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)
436 #define USE_MJIT 1
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; })
450 #define _STDIO_H_
451 #define _ANSIDECL_H_
452 #define __NEWLIB_H__ 1
453 #define _NEWLIB_VERSION_H__ 1
454 #define _NEWLIB_VERSION "3.3.0"
455 #define __NEWLIB__ 3
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
488 #undef _POSIX_SOURCE
489 #define _POSIX_SOURCE 1
490 #undef _POSIX_C_SOURCE
491 #define _POSIX_C_SOURCE 200809L
492 #undef _XOPEN_SOURCE
493 #define _XOPEN_SOURCE 700
494 #undef _XOPEN_SOURCE_EXTENDED
495 #define _XOPEN_SOURCE_EXTENDED 1
496 #undef _POSIX_SOURCE
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
572 #define _XOPEN_SHM 1
573 #define __STDC_ISO_10646__ 201806L
574 #define _POINTER_INT long
575 #undef __RAND_MAX
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
596 #define __EXPORT
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
601 #define _BEGIN_STD_C
602 #define _END_STD_C
603 #define _NOTHROW
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
609 #define _FSTDIO
610 #define __need_size_t
611 #define __need_NULL
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
617 typedef signed char __int8_t;
618 typedef unsigned char __uint8_t;
619 #define ___int8_t_defined 1
620 typedef short int __int16_t;
621 typedef short unsigned int __uint16_t;
622 #define ___int16_t_defined 1
623 typedef int __int32_t;
624 typedef unsigned int __uint32_t;
625 #define ___int32_t_defined 1
626 typedef long long int __int64_t;
627 typedef long long unsigned int __uint64_t;
628 #define ___int64_t_defined 1
629 typedef signed char __int_least8_t;
630 typedef unsigned char __uint_least8_t;
631 #define ___int_least8_t_defined 1
632 typedef short int __int_least16_t;
633 typedef short unsigned int __uint_least16_t;
634 #define ___int_least16_t_defined 1
635 typedef int __int_least32_t;
636 typedef unsigned int __uint_least32_t;
637 #define ___int_least32_t_defined 1
638 typedef long long int __int_least64_t;
639 typedef long long unsigned int __uint_least64_t;
640 #define ___int_least64_t_defined 1
641 typedef long long int __intmax_t;
642 typedef long long unsigned int __uintmax_t;
643 typedef int __intptr_t;
644 typedef unsigned int __uintptr_t;
645 #undef __EXP
646 #define __size_t__
647 #define __SIZE_T__
648 #define _SIZE_T
649 #define _SYS_SIZE_T_H
650 #define _T_SIZE_
651 #define _T_SIZE
652 #define __SIZE_T
653 #define _SIZE_T_
654 #define _BSD_SIZE_T_
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
660 #define _GCC_SIZE_T
661 #define _SIZET_
662 #define __size_t
663 typedef unsigned int size_t;
664 #undef __need_size_t
665 #undef NULL
666 #define NULL ((void *)0)
667 #undef __need_NULL
668 #define __PMT(args) args
669 #define __DOTS , ...
670 #define __THROW
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]
678 #define __bounded
679 #define __unbounded
680 #define __ptrvalue
681 #define __has_extension __has_feature
682 #define __has_feature(x) 0
683 #define __has_builtin(x) 0
684 #define __BEGIN_DECLS
685 #define __END_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")))
744 #define __hidden
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))
765 #define _Nonnull
766 #define _Nullable
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))
787 #define _STDDEF_H
788 #define _STDDEF_H_
789 #define _ANSI_STDDEF_H
790 #define _PTRDIFF_T
791 #define _T_PTRDIFF_
792 #define _T_PTRDIFF
793 #define __PTRDIFF_T
794 #define _PTRDIFF_T_
795 #define _BSD_PTRDIFF_T_
796 #define ___int_ptrdiff_t_h
797 #define _GCC_PTRDIFF_T
798 #define _PTRDIFF_T_DECLARED
799 typedef int ptrdiff_t;
800 #undef __need_ptrdiff_t
801 #undef __need_size_t
802 #define __wchar_t__
803 #define __WCHAR_T__
804 #define _WCHAR_T
805 #define _T_WCHAR_
806 #define _T_WCHAR
807 #define __WCHAR_T
808 #define _WCHAR_T_
809 #define _BSD_WCHAR_T_
810 #define _WCHAR_T_DEFINED_
811 #define _WCHAR_T_DEFINED
812 #define _WCHAR_T_H
813 #define ___int_wchar_t_h
814 #define __INT_WCHAR_T_H
815 #define _GCC_WCHAR_T
816 #define _WCHAR_T_DECLARED
817 #undef _BSD_WCHAR_T_
818 typedef short unsigned int wchar_t;
819 #undef __need_wchar_t
820 #undef NULL
821 #define NULL ((void *)0)
822 #undef __need_NULL
823 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
824 #define _GCC_MAX_ALIGN_T
825 typedef struct {
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))));
829 } max_align_t;
830 #define __need___va_list
831 #undef __need___va_list
832 #define __GNUC_VA_LIST
833 typedef __builtin_va_list __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
841 #undef __need_size_t
842 #undef __need_wchar_t
843 #define _WINT_T
844 typedef unsigned int wint_t;
845 #undef __need_wint_t
846 #undef NULL
847 #define NULL ((void *)0)
848 #undef __need_NULL
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
858 typedef unsigned long __fsblkcnt_t;
859 #define __machine_fsfilcnt_t_defined
860 typedef unsigned long __fsfilcnt_t;
861 #define __machine_uid_t_defined
863 #define __machine_gid_t_defined
865 #define __machine_ino_t_defined
867 #define __machine_key_t_defined
868 typedef long long __key_t;
869 #define __machine_sa_family_t_defined
871 #define __machine_socklen_t_defined
872 typedef int __socklen_t;
873 typedef long _off_t;
874 typedef int __pid_t;
877 __extension__ typedef long long _off64_t;
880 typedef long _fpos_t;
882 #undef __size_t
883 typedef unsigned int __size_t;
884 #define unsigned signed
885 typedef signed int _ssize_t;
886 #undef unsigned
888 typedef struct
889 {
890  int __count;
891  union
892  {
894  unsigned char __wchb[4];
895  } __value;
896 } _mbstate_t;
897 typedef void *_iconv_t;
898 #define _CLOCK_T_ unsigned long
899 typedef unsigned long __clock_t;
900 #define _TIME_T_ long
901 typedef long __time_t;
902 #define _CLOCKID_T_ unsigned long
903 typedef unsigned long __clockid_t;
904 #define _TIMER_T_ unsigned long
905 typedef unsigned long __timer_t;
906 typedef int __nl_item;
907 typedef unsigned short __nlink_t;
908 typedef long __suseconds_t;
909 typedef unsigned long __useconds_t;
910 typedef __builtin_va_list __va_list;
911 #define _NULL 0
912 #define __Long long
913 typedef unsigned long __ULong;
914 #define _SYS_LOCK_H_
915 typedef void *_LOCK_T;
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)
938 struct _reent;
939 struct __locale_t;
940 struct _Bigint
941 {
942  struct _Bigint *_next;
945 };
946 struct __tm
947 {
948  int __tm_sec;
949  int __tm_min;
952  int __tm_mon;
957 };
958 #define _ATEXIT_SIZE 32
960  void * _fnargs[32];
961  void * _dso_handle[32];
964 };
965 struct _atexit {
966  struct _atexit *_next;
967  int _ind;
968  void (*_fns[32])(void);
970 };
971 #define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
972 #define _REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT,
973 struct __sbuf {
974  unsigned char *_base;
975  int _size;
976 };
977 #define _REENT_SMALL_CHECK_INIT(ptr)
978 struct __sFILE {
979  unsigned char *_p;
980  int _r;
981  int _w;
982  short _flags;
983  short _file;
984  struct __sbuf _bf;
985  int _lbfsize;
986  void * _cookie;
987  _ssize_t (*_read) (struct _reent *, void *,
988  char *, size_t);
989  _ssize_t (*_write) (struct _reent *, void *,
990  const char *,
991  size_t);
992  _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
993  int (*_close) (struct _reent *, void *);
994  struct __sbuf _ub;
995  unsigned char *_up;
996  int _ur;
997  unsigned char _ubuf[3];
998  unsigned char _nbuf[1];
999  struct __sbuf _lb;
1002  struct _reent *_data;
1005  int _flags2;
1006 };
1007 struct __sFILE64 {
1008  unsigned char *_p;
1009  int _r;
1010  int _w;
1011  short _flags;
1012  short _file;
1013  struct __sbuf _bf;
1015  struct _reent *_data;
1016  void * _cookie;
1017  _ssize_t (*_read) (struct _reent *, void *,
1018  char *, size_t);
1019  _ssize_t (*_write) (struct _reent *, void *,
1020  const char *,
1021  size_t);
1022  _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
1023  int (*_close) (struct _reent *, void *);
1024  struct __sbuf _ub;
1025  unsigned char *_up;
1026  int _ur;
1027  unsigned char _ubuf[3];
1028  unsigned char _nbuf[1];
1029  struct __sbuf _lb;
1031  int _flags2;
1033  _fpos64_t (*_seek64) (struct _reent *, void *, _fpos64_t, int);
1036 };
1037 typedef struct __sFILE64 __FILE;
1038 struct _glue
1039 {
1040  struct _glue *_next;
1041  int _niobs;
1043 };
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)
1051 struct _rand48 {
1052  unsigned short _seed[3];
1053  unsigned short _mult[3];
1054  unsigned short _add;
1055 };
1056 #define _REENT_EMERGENCY_SIZE 25
1057 #define _REENT_ASCTIME_SIZE 26
1058 #define _REENT_SIGNAL_SIZE 24
1059 struct _reent
1060 {
1061  int _errno;
1063  int _inc;
1064  char _emergency[25];
1066  struct __locale_t *_locale;
1068  void (*__cleanup) (struct _reent *);
1069  struct _Bigint *_result;
1071  struct _Bigint *_p5s;
1072  struct _Bigint **_freelist;
1073  int _cvtlen;
1074  char *_cvtbuf;
1075  union
1076  {
1077  struct
1078  {
1079  unsigned int _unused_rand;
1081  char _asctime_buf[26];
1082  struct __tm _localtime_buf;
1084  __extension__ unsigned long long _rand_next;
1085  struct _rand48 _r48;
1089  char _l64a_buf[8];
1090  char _signal_buf[24];
1099  struct
1100  {
1101 #define _N_LISTS 30
1102  unsigned char * _nextf[30];
1103  unsigned int _nmalloc[30];
1105  } _new;
1106  struct _atexit *_atexit;
1107  struct _atexit _atexit0;
1109  struct _glue __sglue;
1111 };
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__
1149 extern struct _reent *_impure_ptr ;
1150 extern struct _reent *const _global_impure_ptr ;
1151 void _reclaim_reent (struct _reent *);
1152  struct _reent * __getreent (void);
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
1164 typedef __int8_t int8_t ;
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
1202 static __inline__ __uint32_t __ntohl(__uint32_t);
1203 static __inline__ __uint16_t __ntohs(__uint16_t);
1204 static __inline__ __uint32_t
1205 __ntohl(__uint32_t _x)
1206 {
1207  __asm__("bswap %0" : "=r" (_x) : "0" (_x));
1208  return _x;
1209 }
1210 static __inline__ __uint16_t
1211 __ntohs(__uint16_t _x)
1212 {
1213  __asm__("xchgb %b0,%h0"
1214  : "=Q" (_x)
1215  : "0" (_x));
1216  return _x;
1217 }
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_
1231 typedef unsigned long __sigset_t;
1232 #define _SYS__TIMEVAL_H_
1234 #define _SUSECONDS_T_DECLARED
1235 typedef long time_t;
1236 #define __time_t_defined
1237 #define _TIME_T_DECLARED
1238 #define _TIMEVAL_DEFINED
1239 struct timeval {
1240  time_t tv_sec;
1242 };
1243 #define _SYS_TIMESPEC_H_
1244 #define _SYS__TIMESPEC_H_
1245 struct timespec {
1246  time_t tv_sec;
1247  long tv_nsec;
1248 };
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)
1251 struct itimerspec {
1252  struct timespec it_interval;
1253  struct timespec it_value;
1254 };
1255 #define _SIGSET_T_DECLARED
1257 #define _SYS_TYPES_FD_SET
1258 #define FD_SETSIZE 64
1259 typedef unsigned long __fd_mask;
1261 #define _NFDBITS ((int)sizeof(__fd_mask) * 8)
1262 #define NFDBITS _NFDBITS
1263 #define _howmany(x,y) (((x) + ((y) - 1)) / (y))
1264 typedef struct fd_set {
1265  __fd_mask __fds_bits[(((64) + ((((int)sizeof(__fd_mask) * 8)) - 1)) / (((int)sizeof(__fd_mask) * 8)))];
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)
1274 
1275 int select (int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout);
1276 int pselect (int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set);
1277 
1278 #define physadr physadr_t
1279 #define quad quad_t
1281 #define _IN_ADDR_T_DECLARED
1283 #define _IN_PORT_T_DECLARED
1285 typedef unsigned char u_char;
1286 #define __u_char_defined
1287 typedef unsigned short u_short;
1288 #define __u_short_defined
1289 typedef unsigned int u_int;
1290 #define __u_int_defined
1291 typedef unsigned long u_long;
1292 #define __u_long_defined
1293 #define _BSDTYPES_DEFINED
1294 typedef unsigned short ushort;
1295 typedef unsigned int uint;
1296 typedef unsigned long ulong;
1298 #define _BLKCNT_T_DECLARED
1300 #define _BLKSIZE_T_DECLARED
1301 typedef unsigned long clock_t;
1302 #define __clock_t_defined
1303 #define _CLOCK_T_DECLARED
1304 typedef long daddr_t;
1305 #define __daddr_t_defined
1306 typedef char * caddr_t;
1307 #define __caddr_t_defined
1310 #define _FSBLKCNT_T_DECLARED
1311 typedef __id_t id_t;
1312 #define _ID_T_DECLARED
1313 typedef __ino_t ino_t;
1314 #define _INO_T_DECLARED
1315 typedef __off_t off_t;
1316 #define _OFF_T_DECLARED
1317 typedef __dev_t dev_t;
1318 #define _DEV_T_DECLARED
1319 typedef __uid_t uid_t;
1320 #define _UID_T_DECLARED
1321 typedef __gid_t gid_t;
1322 #define _GID_T_DECLARED
1323 typedef __pid_t pid_t;
1324 #define _PID_T_DECLARED
1325 typedef __key_t key_t;
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_
1344 typedef unsigned int __cpu_mask;
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))
1350 typedef struct
1351 {
1352  __cpu_mask __bits[(1024 / (8 * sizeof (__cpu_mask)))];
1353 } cpu_set_t;
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
1377 typedef struct __pthread_t {char __dummy;} *pthread_t;
1379 typedef struct __pthread_key_t {char __dummy;} *pthread_key_t;
1380 typedef struct __pthread_attr_t {char __dummy;} *pthread_attr_t;
1383 typedef struct __pthread_cond_t {char __dummy;} *pthread_cond_t;
1386 typedef struct
1387 {
1389  int state;
1390 }
1395 #define _ENDIAN_H_
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)
1400 {
1401  return (__x >> 8) | (__x << 8);
1402 }
1403 static __inline unsigned int
1404 __bswap_32 (unsigned int __x)
1405 {
1406  return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
1407 }
1408 static __inline unsigned long long
1409 __bswap_64 (unsigned long long __x)
1410 {
1411  return (((unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
1412 }
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
1428 typedef struct timespec timespec_t;
1429 #define __timestruc_t_defined
1430 typedef struct timespec timestruc_t;
1432 struct flock {
1433  short l_type;
1434  short l_whence;
1438 };
1439 #define __BIT_TYPES_DEFINED__ 1
1440 #define __vm_offset_t_defined
1441 typedef unsigned long vm_offset_t;
1442 #define __vm_size_t_defined
1443 typedef unsigned long vm_size_t;
1444 #define __vm_object_t_defined
1445 typedef void *vm_object_t;
1446 #define __addr_t_defined
1447 typedef char *addr_t;
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)
1454 {
1455  return (int)(((dev) >> 16) & 0xffff);
1456 }
1457 static __inline__ int
1458 gnu_dev_minor(dev_t dev)
1459 {
1460  return (int)((dev) & 0xffff);
1461 }
1462 static __inline__ dev_t
1463 gnu_dev_makedev(int maj, int min)
1464 {
1465  return (((maj) << 16) | ((min) & 0xffff));
1466 }
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
1471 
1472 typedef __FILE FILE;
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); })
1479 
1480 ssize_t getline (char **, size_t *, FILE *);
1481 ssize_t getdelim (char **, size_t *, int, FILE *);
1482 
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
1501 #define _IOFBF 0
1502 #define _IOLBF 1
1503 #define _IONBF 2
1504 #define EOF (-1)
1505 #define BUFSIZ 1024
1506 #define FOPEN_MAX 20
1507 #define FILENAME_MAX __FILENAME_MAX__
1508 #define L_tmpnam FILENAME_MAX
1509 #define P_tmpdir "/tmp"
1510 #define SEEK_SET 0
1511 #define SEEK_CUR 1
1512 #define SEEK_END 2
1513 #define TMP_MAX 26
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
1521 char * ctermid (char *);
1522 char * cuserid (char *);
1523 FILE * tmpfile (void);
1524 char * tmpnam (char *);
1525 char * tempnam (const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
1526 int fclose (FILE *);
1527 int fflush (FILE *);
1528 FILE * freopen (const char *__restrict, const char *__restrict, FILE *__restrict);
1530 int setvbuf (FILE *__restrict, char *__restrict, int, size_t);
1531 int fprintf (FILE *__restrict, const char *__restrict, ...)
1532  __attribute__ ((__format__ (__printf__, 2, 3)));
1534  __attribute__ ((__format__ (__scanf__, 2, 3)));
1535 int printf (const char *__restrict, ...)
1536  __attribute__ ((__format__ (__printf__, 1, 2)));
1537 int scanf (const char *__restrict, ...)
1538  __attribute__ ((__format__ (__scanf__, 1, 2)));
1539 int sscanf (const char *__restrict, const char *__restrict, ...)
1540  __attribute__ ((__format__ (__scanf__, 2, 3)));
1542  __attribute__ ((__format__ (__printf__, 2, 0)));
1544  __attribute__ ((__format__ (__printf__, 1, 0)));
1546  __attribute__ ((__format__ (__printf__, 2, 0)));
1547 int fgetc (FILE *);
1548 char * fgets (char *__restrict, int, FILE *__restrict);
1549 int fputc (int, FILE *);
1551 int getc (FILE *);
1552 int getchar (void);
1553 char * gets (char *);
1554 int putc (int, FILE *);
1555 int putchar (int);
1556 int puts (const char *);
1557 int ungetc (int, FILE *);
1558 size_t fread (void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1559 size_t fwrite (const void *__restrict , size_t _size, size_t _n, FILE *);
1561 int fseek (FILE *, long, int);
1563 long ftell ( FILE *);
1564 void rewind (FILE *);
1565 void clearerr (FILE *);
1566 int feof (FILE *);
1567 int ferror (FILE *);
1568 void perror (const char *);
1569 FILE * fopen (const char *__restrict _name, const char *__restrict _type);
1570 int sprintf (char *__restrict, const char *__restrict, ...)
1571  __attribute__ ((__format__ (__printf__, 2, 3)));
1572 int remove (const char *);
1573 int rename (const char *, const char *);
1574 int fseeko (FILE *, off_t, int);
1576 int fcloseall (void);
1577 int snprintf (char *__restrict, size_t, const char *__restrict, ...)
1578  __attribute__ ((__format__ (__printf__, 3, 4)));
1580  __attribute__ ((__format__ (__printf__, 3, 0)));
1582  __attribute__ ((__format__ (__scanf__, 2, 0)));
1584  __attribute__ ((__format__ (__scanf__, 1, 0)));
1586  __attribute__ ((__format__ (__scanf__, 2, 0)));
1587 int asprintf (char **__restrict, const char *__restrict, ...)
1588  __attribute__ ((__format__ (__printf__, 2, 3)));
1589 int vasprintf (char **, const char *, __gnuc_va_list)
1590  __attribute__ ((__format__ (__printf__, 2, 0)));
1591 int asiprintf (char **, const char *, ...)
1592  __attribute__ ((__format__ (__printf__, 2, 3)));
1593 char * asniprintf (char *, size_t *, const char *, ...)
1594  __attribute__ ((__format__ (__printf__, 3, 4)));
1595 char * asnprintf (char *__restrict, size_t *__restrict, const char *__restrict, ...)
1596  __attribute__ ((__format__ (__printf__, 3, 4)));
1597 int diprintf (int, const char *, ...)
1598  __attribute__ ((__format__ (__printf__, 2, 3)));
1599 int fiprintf (FILE *, const char *, ...)
1600  __attribute__ ((__format__ (__printf__, 2, 3)));
1601 int fiscanf (FILE *, const char *, ...)
1602  __attribute__ ((__format__ (__scanf__, 2, 3)));
1603 int iprintf (const char *, ...)
1604  __attribute__ ((__format__ (__printf__, 1, 2)));
1605 int iscanf (const char *, ...)
1606  __attribute__ ((__format__ (__scanf__, 1, 2)));
1607 int siprintf (char *, const char *, ...)
1608  __attribute__ ((__format__ (__printf__, 2, 3)));
1609 int siscanf (const char *, const char *, ...)
1610  __attribute__ ((__format__ (__scanf__, 2, 3)));
1611 int sniprintf (char *, size_t, const char *, ...)
1612  __attribute__ ((__format__ (__printf__, 3, 4)));
1613 int vasiprintf (char **, const char *, __gnuc_va_list)
1614  __attribute__ ((__format__ (__printf__, 2, 0)));
1615 char * vasniprintf (char *, size_t *, const char *, __gnuc_va_list)
1616  __attribute__ ((__format__ (__printf__, 3, 0)));
1617 char * vasnprintf (char *, size_t *, const char *, __gnuc_va_list)
1618  __attribute__ ((__format__ (__printf__, 3, 0)));
1619 int vdiprintf (int, const char *, __gnuc_va_list)
1620  __attribute__ ((__format__ (__printf__, 2, 0)));
1622  __attribute__ ((__format__ (__printf__, 2, 0)));
1624  __attribute__ ((__format__ (__scanf__, 2, 0)));
1626  __attribute__ ((__format__ (__printf__, 1, 0)));
1628  __attribute__ ((__format__ (__scanf__, 1, 0)));
1629 int vsiprintf (char *, const char *, __gnuc_va_list)
1630  __attribute__ ((__format__ (__printf__, 2, 0)));
1631 int vsiscanf (const char *, const char *, __gnuc_va_list)
1632  __attribute__ ((__format__ (__scanf__, 2, 0)));
1633 int vsniprintf (char *, size_t, const char *, __gnuc_va_list)
1634  __attribute__ ((__format__ (__printf__, 3, 0)));
1635 FILE * fdopen (int, const char *);
1636 int fileno (FILE *);
1637 int pclose (FILE *);
1638 FILE * popen (const char *, const char *);
1639 void setbuffer (FILE *, char *, int);
1641 int getw (FILE *);
1642 int putw (int, FILE *);
1644 int getchar_unlocked (void);
1645 void flockfile (FILE *);
1648 int putc_unlocked (int, FILE *);
1650 int dprintf (int, const char *__restrict, ...)
1651  __attribute__ ((__format__ (__printf__, 2, 3)));
1652 FILE * fmemopen (void *__restrict, size_t, const char *__restrict);
1653 FILE * open_memstream (char **, size_t *);
1655  __attribute__ ((__format__ (__printf__, 2, 0)));
1656 int renameat (int, const char *, int, const char *);
1657 int renameat2 (int, const char *, int, const char *, unsigned int);
1658 int _asiprintf_r (struct _reent *, char **, const char *, ...)
1659  __attribute__ ((__format__ (__printf__, 3, 4)));
1660 char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...)
1661  __attribute__ ((__format__ (__printf__, 4, 5)));
1662 char * _asnprintf_r (struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict, ...)
1663  __attribute__ ((__format__ (__printf__, 4, 5)));
1664 int _asprintf_r (struct _reent *, char **__restrict, const char *__restrict, ...)
1665  __attribute__ ((__format__ (__printf__, 3, 4)));
1666 int _diprintf_r (struct _reent *, int, const char *, ...)
1667  __attribute__ ((__format__ (__printf__, 3, 4)));
1668 int _dprintf_r (struct _reent *, int, const char *__restrict, ...)
1669  __attribute__ ((__format__ (__printf__, 3, 4)));
1670 int _fclose_r (struct _reent *, FILE *);
1671 int _fcloseall_r (struct _reent *);
1672 FILE * _fdopen_r (struct _reent *, int, const char *);
1673 int _fflush_r (struct _reent *, FILE *);
1674 int _fgetc_r (struct _reent *, FILE *);
1675 int _fgetc_unlocked_r (struct _reent *, FILE *);
1676 char * _fgets_r (struct _reent *, char *__restrict, int, FILE *__restrict);
1677 char * _fgets_unlocked_r (struct _reent *, char *__restrict, int, FILE *__restrict);
1678 int _fgetpos_r (struct _reent *, FILE *, fpos_t *);
1679 int _fsetpos_r (struct _reent *, FILE *, const fpos_t *);
1680 int _fiprintf_r (struct _reent *, FILE *, const char *, ...)
1681  __attribute__ ((__format__ (__printf__, 3, 4)));
1682 int _fiscanf_r (struct _reent *, FILE *, const char *, ...)
1683  __attribute__ ((__format__ (__scanf__, 3, 4)));
1684 FILE * _fmemopen_r (struct _reent *, void *__restrict, size_t, const char *__restrict);
1685 FILE * _fopen_r (struct _reent *, const char *__restrict, const char *__restrict);
1687 int _fprintf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...)
1688  __attribute__ ((__format__ (__printf__, 3, 4)));
1689 int _fpurge_r (struct _reent *, FILE *);
1690 int _fputc_r (struct _reent *, int, FILE *);
1691 int _fputc_unlocked_r (struct _reent *, int, FILE *);
1692 int _fputs_r (struct _reent *, const char *__restrict, FILE *__restrict);
1694 size_t _fread_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1695 size_t _fread_unlocked_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1696 int _fscanf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...)
1697  __attribute__ ((__format__ (__scanf__, 3, 4)));
1698 int _fseek_r (struct _reent *, FILE *, long, int);
1699 int _fseeko_r (struct _reent *, FILE *, _off_t, int);
1700 long _ftell_r (struct _reent *, FILE *);
1701 _off_t _ftello_r (struct _reent *, FILE *);
1702 void _rewind_r (struct _reent *, FILE *);
1703 size_t _fwrite_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1704 size_t _fwrite_unlocked_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1705 int _getc_r (struct _reent *, FILE *);
1706 int _getc_unlocked_r (struct _reent *, FILE *);
1707 int _getchar_r (struct _reent *);
1709 char * _gets_r (struct _reent *, char *);
1710 int _iprintf_r (struct _reent *, const char *, ...)
1711  __attribute__ ((__format__ (__printf__, 2, 3)));
1712 int _iscanf_r (struct _reent *, const char *, ...)
1713  __attribute__ ((__format__ (__scanf__, 2, 3)));
1714 FILE * _open_memstream_r (struct _reent *, char **, size_t *);
1715 void _perror_r (struct _reent *, const char *);
1716 int _printf_r (struct _reent *, const char *__restrict, ...)
1717  __attribute__ ((__format__ (__printf__, 2, 3)));
1718 int _putc_r (struct _reent *, int, FILE *);
1719 int _putc_unlocked_r (struct _reent *, int, FILE *);
1720 int _putchar_unlocked_r (struct _reent *, int);
1721 int _putchar_r (struct _reent *, int);
1722 int _puts_r (struct _reent *, const char *);
1723 int _remove_r (struct _reent *, const char *);
1724 int _rename_r (struct _reent *,
1725  const char *_old, const char *_new);
1726 int _scanf_r (struct _reent *, const char *__restrict, ...)
1727  __attribute__ ((__format__ (__scanf__, 2, 3)));
1728 int _siprintf_r (struct _reent *, char *, const char *, ...)
1729  __attribute__ ((__format__ (__printf__, 3, 4)));
1730 int _siscanf_r (struct _reent *, const char *, const char *, ...)
1731  __attribute__ ((__format__ (__scanf__, 3, 4)));
1732 int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...)
1733  __attribute__ ((__format__ (__printf__, 4, 5)));
1734 int _snprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, ...)
1735  __attribute__ ((__format__ (__printf__, 4, 5)));
1736 int _sprintf_r (struct _reent *, char *__restrict, const char *__restrict, ...)
1737  __attribute__ ((__format__ (__printf__, 3, 4)));
1738 int _sscanf_r (struct _reent *, const char *__restrict, const char *__restrict, ...)
1739  __attribute__ ((__format__ (__scanf__, 3, 4)));
1740 char * _tempnam_r (struct _reent *, const char *, const char *);
1741 FILE * _tmpfile_r (struct _reent *);
1742 char * _tmpnam_r (struct _reent *, char *);
1743 int _ungetc_r (struct _reent *, int, FILE *);
1744 int _vasiprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
1745  __attribute__ ((__format__ (__printf__, 3, 0)));
1746 char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
1747  __attribute__ ((__format__ (__printf__, 4, 0)));
1748 char * _vasnprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
1749  __attribute__ ((__format__ (__printf__, 4, 0)));
1750 int _vasprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
1751  __attribute__ ((__format__ (__printf__, 3, 0)));
1752 int _vdiprintf_r (struct _reent *, int, const char *, __gnuc_va_list)
1753  __attribute__ ((__format__ (__printf__, 3, 0)));
1754 int _vdprintf_r (struct _reent *, int, const char *__restrict, __gnuc_va_list)
1755  __attribute__ ((__format__ (__printf__, 3, 0)));
1756 int _vfiprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
1757  __attribute__ ((__format__ (__printf__, 3, 0)));
1758 int _vfiscanf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
1759  __attribute__ ((__format__ (__scanf__, 3, 0)));
1761  __attribute__ ((__format__ (__printf__, 3, 0)));
1763  __attribute__ ((__format__ (__scanf__, 3, 0)));
1764 int _viprintf_r (struct _reent *, const char *, __gnuc_va_list)
1765  __attribute__ ((__format__ (__printf__, 2, 0)));
1766 int _viscanf_r (struct _reent *, const char *, __gnuc_va_list)
1767  __attribute__ ((__format__ (__scanf__, 2, 0)));
1769  __attribute__ ((__format__ (__printf__, 2, 0)));
1771  __attribute__ ((__format__ (__scanf__, 2, 0)));
1772 int _vsiprintf_r (struct _reent *, char *, const char *, __gnuc_va_list)
1773  __attribute__ ((__format__ (__printf__, 3, 0)));
1774 int _vsiscanf_r (struct _reent *, const char *, const char *, __gnuc_va_list)
1775  __attribute__ ((__format__ (__scanf__, 3, 0)));
1776 int _vsniprintf_r (struct _reent *, char *, size_t, const char *, __gnuc_va_list)
1777  __attribute__ ((__format__ (__printf__, 4, 0)));
1778 int _vsnprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, __gnuc_va_list)
1779  __attribute__ ((__format__ (__printf__, 4, 0)));
1781  __attribute__ ((__format__ (__printf__, 3, 0)));
1783  __attribute__ ((__format__ (__scanf__, 3, 0)));
1784 int fpurge (FILE *);
1785 ssize_t __getdelim (char **, size_t *, int, FILE *);
1786 ssize_t __getline (char **, size_t *, FILE *);
1793 int fputc_unlocked (int, FILE *);
1794 size_t fread_unlocked (void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1795 size_t fwrite_unlocked (const void *__restrict , size_t _size, size_t _n, FILE *);
1798 int __srget_r (struct _reent *, FILE *);
1799 int __swbuf_r (struct _reent *, int, FILE *);
1800 FILE *funopen (const void *__cookie,
1801  int (*__readfn)(void *__c, char *__buf,
1802  size_t __n),
1803  int (*__writefn)(void *__c, const char *__buf,
1804  size_t __n),
1805  _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
1806  int (*__closefn)(void *__c));
1807 FILE *_funopen_r (struct _reent *, const void *__cookie,
1808  int (*__readfn)(void *__c, char *__buf,
1809  size_t __n),
1810  int (*__writefn)(void *__c, const char *__buf,
1811  size_t __n),
1812  _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
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)
1816 typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n);
1817 typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf,
1818  size_t __n);
1819 typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off,
1820  int __whence);
1821 typedef int cookie_close_function_t(void *__cookie);
1822 typedef struct
1823 {
1829 FILE *fopencookie (void *__cookie,
1830  const char *__mode, cookie_io_functions_t __functions);
1831 FILE *_fopencookie_r (struct _reent *, void *__cookie,
1832  const char *__mode, cookie_io_functions_t __functions);
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)
1836  {
1837  int __c = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
1838  if ((__p->_flags & 0x4000) && (__c == '\r'))
1839  {
1840  int __c2 = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
1841  if (__c2 == '\n')
1842  __c = __c2;
1843  else
1844  ungetc(__c2, __p);
1845  }
1846  return __c;
1847  }
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);
1853  else
1854  return (__swbuf_r(_ptr, _c, _p));
1855 }
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)
1866 static __inline int
1867 _getchar_unlocked(void)
1868 {
1869  struct _reent *_ptr;
1870  _ptr = (__getreent());
1871  return (__sgetc_r(_ptr, ((_ptr)->_stdin)));
1872 }
1873 static __inline int
1874 _putchar_unlocked(int _c)
1875 {
1876  struct _reent *_ptr;
1877  _ptr = (__getreent());
1878  return (__sputc_r(_ptr, _c, ((_ptr)->_stdout)));
1879 }
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))
1883 #define L_cuserid 9
1884 #define L_ctermid 16
1885 
1886 #define _SSP_STDIO_H_
1887 #define _SSP_SSP_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)))
1899 
1900 void __stack_chk_fail(void) __attribute__((__noreturn__));
1901 void __chk_fail(void) __attribute__((__noreturn__));
1902 
1903 
1904 int __sprintf_chk(char *__restrict, int, size_t, const char *__restrict, ...)
1905  __attribute__((__format__ (__printf__, 4, 5)));
1906 int __vsprintf_chk(char *__restrict, int, size_t, const char *__restrict,
1907  __va_list)
1908  __attribute__((__format__ (__printf__, 4, 0)));
1909 int __snprintf_chk(char *__restrict, size_t, int, size_t,
1910  const char *__restrict, ...)
1911  __attribute__((__format__ (__printf__, 5, 6)));
1912 int __vsnprintf_chk(char *__restrict, size_t, int, size_t,
1913  const char *__restrict, __va_list)
1914  __attribute__((__format__ (__printf__, 5, 0)));
1915 char *__gets_chk(char *, size_t);
1916 
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))
1922 char * __ssp_real_fgets (char *__restrict __buf, int __len, FILE *__fp) __asm__("_" "fgets"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * fgets (char *__restrict __buf, int __len, FILE *__fp)
1923 {
1924  if (__len > 0)
1925  if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1927 }
1928 char * __ssp_real_fgets_unlocked (char *__restrict __buf, int __len, FILE *__fp) __asm__("_" "fgets_unlocked"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * fgets_unlocked (char *__restrict __buf, int __len, FILE *__fp)
1929 {
1930  if (__len > 0)
1931  if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1933 }
1934 size_t __ssp_real_fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp) __asm__("_" "fread"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t fread (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp)
1935 {
1936  if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
1937  return __ssp_real_fread(__ptr, __size, __n, __fp);
1938 }
1939 size_t __ssp_real_fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp) __asm__("_" "fread_unlocked"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t fread_unlocked (void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp)
1940 {
1941  if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
1943 }
1944 #define _SYS_STAT_H
1945 #define _TIME_H_
1946 #define __need_size_t
1947 #define __need_NULL
1948 #undef __need_ptrdiff_t
1949 #undef __need_size_t
1950 #undef __need_wchar_t
1951 #undef NULL
1952 #define NULL ((void *)0)
1953 #undef __need_NULL
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
1960 struct __locale_t;
1961 typedef struct __locale_t *locale_t;
1962 
1963 struct tm
1964 {
1965  int tm_sec;
1966  int tm_min;
1967  int tm_hour;
1968  int tm_mday;
1969  int tm_mon;
1970  int tm_year;
1971  int tm_wday;
1972  int tm_yday;
1975  const char *tm_zone;
1976 };
1978 double difftime (time_t _time2, time_t _time1);
1979 time_t mktime (struct tm *_timeptr);
1980 time_t time (time_t *_timer);
1981 char *asctime (const struct tm *_tblock);
1982 char *ctime (const time_t *_time);
1983 struct tm *gmtime (const time_t *_timer);
1984 struct tm *localtime (const time_t *_timer);
1985 size_t strftime (char *__restrict _s,
1986  size_t _maxsize, const char *__restrict _fmt,
1987  const struct tm *__restrict _t);
1988 extern size_t strftime_l (char *__restrict _s, size_t _maxsize,
1989  const char *__restrict _fmt,
1990  const struct tm *__restrict _t, locale_t _l);
1991 char *asctime_r (const struct tm *__restrict,
1992  char *__restrict);
1993 char *ctime_r (const time_t *, char *);
1994 struct tm *gmtime_r (const time_t *__restrict,
1995  struct tm *__restrict);
1996 struct tm *localtime_r (const time_t *__restrict,
1997  struct tm *__restrict);
1998 
1999 char *strptime (const char *__restrict,
2000  const char *__restrict,
2001  struct tm *__restrict);
2002 char *strptime_l (const char *__restrict, const char *__restrict,
2003  struct tm *__restrict, locale_t);
2004 void tzset (void);
2005 void _tzset_r (struct _reent *);
2006 typedef struct __tzrule_struct
2007 {
2008  char ch;
2009  int m;
2010  int n;
2011  int d;
2012  int s;
2014  long offset;
2016 typedef struct __tzinfo_struct
2017 {
2023 extern __attribute__((dllimport)) long _timezone;
2024 extern __attribute__((dllimport)) int _daylight;
2025 extern __attribute__((dllimport)) char *_tzname[2];
2026 #define tzname _tzname
2027 #define _CYGWIN_TIME_H
2028 int __attribute__((__cdecl__)) clock_setres (clockid_t, struct timespec *);
2029 time_t __attribute__((__cdecl__)) timelocal (struct tm *);
2030 time_t __attribute__((__cdecl__)) timegm (struct tm *);
2031 #define TIMER_RELTIME 0
2032 extern int stime (const time_t *);
2033 extern int daylight __asm__ ("_" "_daylight");
2034 extern long timezone __asm__ ("_" "_timezone");
2035 #define _SIGNAL_H_
2036 #define _SYS_SIGNAL_H
2037 #define _CYGWIN_SIGNAL_H
2039 {
2042 };
2043 struct _fpstate
2044 {
2052  struct _uc_fpreg _st[8];
2054 };
2056 {
2064  struct _fpstate fpstate;
2084 };
2085 #define __COPY_CONTEXT_SIZE 204
2086 typedef union sigval
2087 {
2089  void *sival_ptr;
2091 typedef struct sigevent
2092 {
2099 #pragma pack(push,4)
2101 {
2106  __extension__ union
2107  {
2108  struct {
2109  int _si_fd;
2111  };
2113  char *_si_str;
2114  };
2115 };
2116 #define __SI_PAD_SIZE 32
2117 typedef struct
2118 {
2120  int si_code;
2124  __extension__ union
2125  {
2126  __uint32_t __pad[32];
2127  struct _sigcommune _si_commune;
2128  __extension__ struct
2129  {
2130  __extension__ union
2131  {
2134  };
2135  __extension__ struct
2136  {
2138  unsigned int si_overrun;
2139  };
2140  };
2141  __extension__ struct
2142  {
2146  };
2147  void *si_addr;
2148  };
2149 } siginfo_t;
2150 #pragma pack(pop)
2151 enum
2152 {
2153  SI_USER = 0,
2186 };
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
2220 enum
2221 {
2224  SIGEV_THREAD
2225 };
2226 #define SIGEV_SIGNAL SIGEV_SIGNAL
2227 #define SIGEV_NONE SIGEV_NONE
2228 #define SIGEV_THREAD SIGEV_THREAD
2229 typedef void (*_sig_func_ptr)(int);
2231 {
2232  __extension__ union
2233  {
2235  void (*sa_sigaction) ( int, siginfo_t *, void * );
2236  };
2239 };
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
2249 #undef MINSIGSTKSZ
2250 #define MINSIGSTKSZ 8192
2251 #undef SIGSTKSZ
2252 #define SIGSTKSZ 32768
2253 #define SIGHUP 1
2254 #define SIGINT 2
2255 #define SIGQUIT 3
2256 #define SIGILL 4
2257 #define SIGTRAP 5
2258 #define SIGABRT 6
2259 #define SIGIOT SIGABRT
2260 #define SIGEMT 7
2261 #define SIGFPE 8
2262 #define SIGKILL 9
2263 #define SIGBUS 10
2264 #define SIGSEGV 11
2265 #define SIGSYS 12
2266 #define SIGPIPE 13
2267 #define SIGALRM 14
2268 #define SIGTERM 15
2269 #define SIGURG 16
2270 #define SIGSTOP 17
2271 #define SIGTSTP 18
2272 #define SIGCONT 19
2273 #define SIGCHLD 20
2274 #define SIGCLD 20
2275 #define SIGTTIN 21
2276 #define SIGTTOU 22
2277 #define SIGIO 23
2278 #define SIGPOLL SIGIO
2279 #define SIGXCPU 24
2280 #define SIGXFSZ 25
2281 #define SIGVTALRM 26
2282 #define SIGPROF 27
2283 #define SIGWINCH 28
2284 #define SIGLOST 29
2285 #define SIGPWR SIGLOST
2286 #define SIGUSR1 30
2287 #define SIGUSR2 31
2288 #define _NSIG 33
2289 #define NSIG _NSIG
2290 #define SIGRTMIN 32
2291 #define SIGRTMAX (_NSIG - 1)
2292 #define SIG_HOLD ((_sig_func_ptr)2)
2293 void psiginfo (const siginfo_t *, const char *);
2294 int sigwait (const sigset_t *, int *);
2295 int sigwaitinfo (const sigset_t *, siginfo_t *);
2296 int sighold (int);
2297 int sigignore (int);
2298 int sigrelse (int);
2300 int sigqueue(pid_t, int, const union sigval);
2301 int siginterrupt (int, int);
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
2306 typedef struct sigaltstack {
2307  void *ss_sp;
2309  size_t ss_size;
2311 #define SIG_SETMASK 0
2312 #define SIG_BLOCK 1
2313 #define SIG_UNBLOCK 2
2314 int sigprocmask (int, const sigset_t *, sigset_t *);
2315 int pthread_sigmask (int, const sigset_t *, sigset_t *);
2316 int kill (pid_t, int);
2317 int killpg (pid_t, int);
2318 int sigaction (int, const struct sigaction *, struct sigaction *);
2319 int sigaddset (sigset_t *, const int);
2320 int sigdelset (sigset_t *, const int);
2321 int sigismember (const sigset_t *, int);
2325 int sigsuspend (const sigset_t *);
2326 int sigwait (const sigset_t *, int *);
2327 int sigpause (int) __asm__ ("_" "__xpg_sigpause");
2330 int sigwaitinfo (const sigset_t *, siginfo_t *);
2331 int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);
2332 int sigqueue (pid_t, int, const union sigval);
2333 #define _SYS_UCONTEXT_H_
2334 typedef struct __mcontext mcontext_t;
2335 typedef __attribute__ ((__aligned__ (16))) struct __ucontext {
2336  mcontext_t uc_mcontext;
2337  struct __ucontext *uc_link;
2338  sigset_t uc_sigmask;
2339  stack_t uc_stack;
2340  unsigned long int uc_flags;
2342 
2343 typedef int sig_atomic_t;
2346 #define SIG_DFL ((_sig_func_ptr)0)
2347 #define SIG_IGN ((_sig_func_ptr)1)
2348 #define SIG_ERR ((_sig_func_ptr)-1)
2349 struct _reent;
2351 int _raise_r (struct _reent *, int);
2353 int raise (int);
2354 void psignal (int, const char *);
2355 
2356 int clock_settime (clockid_t clock_id, const struct timespec *tp);
2357 int clock_gettime (clockid_t clock_id, struct timespec *tp);
2358 int clock_getres (clockid_t clock_id, struct timespec *res);
2359 int timer_create (clockid_t clock_id,
2360  struct sigevent *__restrict evp,
2361  timer_t *__restrict timerid);
2362 int timer_delete (timer_t timerid);
2363 int timer_settime (timer_t timerid, int flags,
2364  const struct itimerspec *__restrict value,
2365  struct itimerspec *__restrict ovalue);
2366 int timer_gettime (timer_t timerid, struct itimerspec *value);
2368 int nanosleep (const struct timespec *rqtp, struct timespec *rmtp);
2369 int clock_nanosleep (clockid_t clock_id, int flags,
2370  const struct timespec *rqtp, struct timespec *rmtp);
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)
2386 int clock_getcpuclockid (pid_t pid, clockid_t *clock_id);
2387 int clock_setenable_attr (clockid_t clock_id, int attr);
2388 int clock_getenable_attr (clockid_t clock_id, int *attr);
2389 #define _CYGWIN_STAT_H
2390 struct stat
2391 {
2406 };
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
2462 int chmod (const char *__path, mode_t __mode );
2463 int fchmod (int __fd, mode_t __mode);
2464 int fstat (int __fd, struct stat *__sbuf );
2465 int mkdir (const char *_path, mode_t __mode );
2466 int mkfifo (const char *__path, mode_t __mode );
2467 int stat (const char *__restrict __path, struct stat *__restrict __sbuf );
2468 mode_t umask (mode_t __mask );
2469 int lstat (const char *__restrict __path, struct stat *__restrict __buf );
2470 int mknod (const char *__path, mode_t __mode, dev_t __dev );
2471 int fchmodat (int, const char *, mode_t, int);
2472 int fstatat (int, const char *__restrict , struct stat *__restrict, int);
2473 int mkdirat (int, const char *, mode_t);
2474 int mkfifoat (int, const char *, mode_t);
2475 int mknodat (int, const char *, mode_t, dev_t);
2476 int utimensat (int, const char *, const struct timespec *, int);
2477 int futimens (int, const struct timespec *);
2478 #define _STDLIB_H_
2479 #define __need_size_t
2480 #define __need_wchar_t
2481 #define __need_NULL
2482 #undef __need_ptrdiff_t
2483 #undef __need_size_t
2484 #undef __need_wchar_t
2485 #undef NULL
2486 #define NULL ((void *)0)
2487 #undef __need_NULL
2488 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2489 #define _MACHSTDLIB_H_
2490 char *mkdtemp (char *);
2491 #define _NEWLIB_ALLOCA_H
2492 #undef alloca
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
2498 #define WNOHANG 1
2499 #define WUNTRACED 2
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))
2510 const char *getprogname (void);
2511 void setprogname (const char *);
2512 char *canonicalize_file_name (const char *);
2513 int unsetenv (const char *);
2514 int clearenv (void);
2515 char *ptsname (int);
2516 int grantpt (int);
2517 int unlockpt (int);
2518 int ptsname_r(int, char *, size_t);
2519 int getpt (void);
2520 int posix_openpt (int);
2521 extern void *memalign (size_t, size_t);
2522 extern void *valloc (size_t);
2523 #undef _malloc_r
2524 #define _malloc_r(r,s) malloc (s)
2525 #undef _free_r
2526 #define _free_r(r,p) free (p)
2527 #undef _realloc_r
2528 #define _realloc_r(r,p,s) realloc (p, s)
2529 #undef _calloc_r
2530 #define _calloc_r(r,s1,s2) calloc (s1, s2);
2531 #undef _memalign_r
2532 #define _memalign_r(r,s1,s2) memalign (s1, s2);
2533 #undef _mallinfo_r
2534 #define _mallinfo_r(r) mallinfo ()
2535 #undef _malloc_stats_r
2536 #define _malloc_stats_r(r) malloc_stats ()
2537 #undef _mallopt_r
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)
2541 #undef _valloc_r
2542 #define _valloc_r(r,s) valloc (s)
2543 #undef _pvalloc_r
2544 #define _pvalloc_r(r,s) pvalloc (s)
2545 #undef _malloc_trim_r
2546 #define _malloc_trim_r(r,s) malloc_trim (s)
2547 #undef _mstats_r
2548 #define _mstats_r(r,p) mstats (p)
2549 int getloadavg(double loadavg[], int nelem);
2550 
2551 typedef struct
2552 {
2553  int quot;
2554  int rem;
2555 } div_t;
2556 typedef struct
2557 {
2558  long quot;
2559  long rem;
2560 } ldiv_t;
2561 typedef struct
2562 {
2563  long long int quot;
2564  long long int rem;
2565 } lldiv_t;
2566 #define __compar_fn_t_defined
2567 typedef int (*__compar_fn_t) (const void *, const void *);
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()
2573 void abort (void) __attribute__ ((__noreturn__));
2574 int abs (int);
2577 void arc4random_buf (void *, size_t);
2578 int atexit (void (*__func)(void));
2579 double atof (const char *__nptr);
2580 float atoff (const char *__nptr);
2581 int atoi (const char *__nptr);
2582 int _atoi_r (struct _reent *, const char *__nptr);
2583 long atol (const char *__nptr);
2584 long _atol_r (struct _reent *, const char *__nptr);
2585 void * bsearch (const void *__key,
2586  const void *__base,
2587  size_t __nmemb,
2588  size_t __size,
2589  __compar_fn_t _compar);
2590 void *calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
2591  __attribute__((__alloc_size__(1, 2))) ;
2592 div_t div (int __numer, int __denom);
2593 void exit (int __status) __attribute__ ((__noreturn__));
2594 void free (void *) ;
2595 char * getenv (const char *__string);
2596 char * _getenv_r (struct _reent *, const char *__string);
2597 char * secure_getenv (const char *__string);
2598 char * _findenv (const char *, int *);
2599 char * _findenv_r (struct _reent *, const char *, int *);
2600 extern char *suboptarg;
2601 int getsubopt (char **, char * const *, char **);
2602 long labs (long);
2603 ldiv_t ldiv (long __numer, long __denom);
2604 void *malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1))) ;
2605 int mblen (const char *, size_t);
2606 int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
2607 int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
2608 int _mbtowc_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
2609 int wctomb (char *, wchar_t);
2610 int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
2611 size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
2612 size_t _mbstowcs_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
2613 size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
2614 size_t _wcstombs_r (struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *);
2615 char * mkdtemp (char *);
2616 int mkostemp (char *, int);
2617 int mkostemps (char *, int, int);
2618 int mkstemp (char *);
2619 int mkstemps (char *, int);
2620 char * mktemp (char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
2621 char * _mkdtemp_r (struct _reent *, char *);
2622 int _mkostemp_r (struct _reent *, char *, int);
2623 int _mkostemps_r (struct _reent *, char *, int, int);
2624 int _mkstemp_r (struct _reent *, char *);
2625 int _mkstemps_r (struct _reent *, char *, int);
2626 char * _mktemp_r (struct _reent *, char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
2627 void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar);
2628 int rand (void);
2629 void *realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2))) ;
2630 void *reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2, 3)));
2631 void *reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)));
2632 char * realpath (const char *__restrict path, char *__restrict resolved_path);
2633 int rpmatch (const char *response);
2634 void setkey (const char *__key);
2635 void srand (unsigned __seed);
2636 double strtod (const char *__restrict __n, char **__restrict __end_PTR);
2637 double _strtod_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR);
2638 float strtof (const char *__restrict __n, char **__restrict __end_PTR);
2639 #define strtodf strtof
2640 long strtol (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2641 long _strtol_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
2642 unsigned long strtoul (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2643 unsigned long _strtoul_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
2644 double strtod_l (const char *__restrict, char **__restrict, locale_t);
2645 float strtof_l (const char *__restrict, char **__restrict, locale_t);
2646 extern long double strtold_l (const char *__restrict, char **__restrict,
2647  locale_t);
2648 long strtol_l (const char *__restrict, char **__restrict, int, locale_t);
2649 unsigned long strtoul_l (const char *__restrict, char **__restrict, int,
2650  locale_t __loc);
2651 long long strtoll_l (const char *__restrict, char **__restrict, int, locale_t);
2652 unsigned long long strtoull_l (const char *__restrict, char **__restrict, int,
2653  locale_t __loc);
2654 int system (const char *__string);
2655 long a64l (const char *__input);
2656 char * l64a (long __input);
2657 char * _l64a_r (struct _reent *,long __input);
2658 int on_exit (void (*__func)(int, void *),void *__arg);
2659 void _Exit (int __status) __attribute__ ((__noreturn__));
2660 int putenv (char *__string);
2661 int _putenv_r (struct _reent *, char *__string);
2662 void * _reallocf_r (struct _reent *, void *, size_t);
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);
2665 char * __itoa (int, char *, int);
2666 char * __utoa (unsigned, char *, int);
2667 char * itoa (int, char *, int);
2668 char * utoa (unsigned, char *, int);
2669 int rand_r (unsigned *__seed);
2670 double drand48 (void);
2671 double _drand48_r (struct _reent *);
2672 double erand48 (unsigned short [3]);
2673 double _erand48_r (struct _reent *, unsigned short [3]);
2674 long jrand48 (unsigned short [3]);
2675 long _jrand48_r (struct _reent *, unsigned short [3]);
2676 void lcong48 (unsigned short [7]);
2677 void _lcong48_r (struct _reent *, unsigned short [7]);
2678 long lrand48 (void);
2679 long _lrand48_r (struct _reent *);
2680 long mrand48 (void);
2681 long _mrand48_r (struct _reent *);
2682 long nrand48 (unsigned short [3]);
2683 long _nrand48_r (struct _reent *, unsigned short [3]);
2684 unsigned short *
2685  seed48 (unsigned short [3]);
2686 unsigned short *
2687  _seed48_r (struct _reent *, unsigned short [3]);
2688 void srand48 (long);
2689 void _srand48_r (struct _reent *, long);
2690 char * initstate (unsigned, char *, size_t);
2691 long random (void);
2692 char * setstate (char *);
2693 void srandom (unsigned);
2694 long long atoll (const char *__nptr);
2695 long long _atoll_r (struct _reent *, const char *__nptr);
2696 long long llabs (long long);
2697 lldiv_t lldiv (long long __numer, long long __denom);
2698 long long strtoll (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2699 long long _strtoll_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
2700 unsigned long long strtoull (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2701 unsigned long long _strtoull_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
2702 int posix_memalign (void **, size_t, size_t) __attribute__((__nonnull__ (1)))
2703  __attribute__((__warn_unused_result__));
2704 char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);
2705 int _system_r (struct _reent *, const char *);
2706 void __eprintf (const char *, const char *, unsigned int, const char *);
2707 void qsort_r (void *__base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void *__thunk);
2708 extern long double _strtold_r (struct _reent *, const char *__restrict, char **__restrict);
2709 extern long double strtold (const char *__restrict, char **__restrict);
2710 void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1)))
2711  __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__));
2712 int at_quick_exit(void (*)(void));
2713 _Noreturn void
2715 
2716 #define _SSP_STDLIB_H_
2717 
2718 size_t __ssp_real_mbstowcs (wchar_t *__buf, const char *__src, size_t __n) __asm__("_" "mbstowcs"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t mbstowcs (wchar_t *__buf, const char *__src, size_t __n)
2719 {
2720  if (__buf != ((void *)0))
2721  if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(wchar_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
2723 }
2724 size_t __ssp_real_wcstombs (char *__buf, const wchar_t *__src, size_t __len) __asm__("_" "wcstombs"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t wcstombs (char *__buf, const wchar_t *__src, size_t __len) { if (__buf != ((void *)0)) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_wcstombs (__buf, __src, __len); };
2725 int __ssp_real_wctomb (char *__buf, wchar_t __wc) __asm__("_" "wctomb"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int wctomb (char *__buf, wchar_t __wc)
2726 {
2727  if (__buf != ((void *)0))
2728  if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __locale_mb_cur_max() > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
2730 }
2731 
2732 #define _STRING_H_
2733 #define __need_size_t
2734 #define __need_NULL
2735 #undef __need_ptrdiff_t
2736 #undef __need_size_t
2737 #undef __need_wchar_t
2738 #undef NULL
2739 #define NULL ((void *)0)
2740 #undef __need_NULL
2741 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2742 #define _STRINGS_H_
2743 
2744 int bcmp(const void *, const void *, size_t) __attribute__((__pure__));
2745 void bcopy(const void *, void *, size_t);
2746 void bzero(void *, size_t);
2747 void explicit_bzero(void *, size_t);
2748 int ffs(int) __attribute__((__const__));
2749 int ffsl(long) __attribute__((__const__));
2750 int ffsll(long long) __attribute__((__const__));
2751 int fls(int) __attribute__((__const__));
2752 int flsl(long) __attribute__((__const__));
2753 int flsll(long long) __attribute__((__const__));
2754 char *index(const char *, int) __attribute__((__pure__));
2755 char *rindex(const char *, int) __attribute__((__pure__));
2756 int strcasecmp(const char *, const char *) __attribute__((__pure__));
2757 int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__));
2758 int strcasecmp_l (const char *, const char *, locale_t);
2759 int strncasecmp_l (const char *, const char *, size_t, locale_t);
2760 
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))
2764 void __ssp_real_explicit_bzero (void *__buf, size_t __len) __asm__("_" "explicit_bzero"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) void explicit_bzero (void *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 0) != (size_t)-1 && __len > __builtin_object_size(__buf, 0)) __chk_fail(); return __ssp_real_explicit_bzero (__buf, __len); };
2765 
2766 void * memchr (const void *, int, size_t);
2767 int memcmp (const void *, const void *, size_t);
2768 void * memcpy (void *__restrict, const void *__restrict, size_t);
2769 void * memmove (void *, const void *, size_t);
2770 void * memset (void *, int, size_t);
2771 char *strcat (char *__restrict, const char *__restrict);
2772 char *strchr (const char *, int);
2773 int strcmp (const char *, const char *);
2774 int strcoll (const char *, const char *);
2775 char *strcpy (char *__restrict, const char *__restrict);
2776 size_t strcspn (const char *, const char *);
2777 char *strerror (int);
2778 size_t strlen (const char *);
2779 char *strncat (char *__restrict, const char *__restrict, size_t);
2780 int strncmp (const char *, const char *, size_t);
2781 char *strncpy (char *__restrict, const char *__restrict, size_t);
2782 char *strpbrk (const char *, const char *);
2783 char *strrchr (const char *, int);
2784 size_t strspn (const char *, const char *);
2785 char *strstr (const char *, const char *);
2786 char *strtok (char *__restrict, const char *__restrict);
2787 size_t strxfrm (char *__restrict, const char *__restrict, size_t);
2788 int strcoll_l (const char *, const char *, locale_t);
2789 char *strerror_l (int, locale_t);
2790 size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
2791 char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
2792 int timingsafe_bcmp (const void *, const void *, size_t);
2793 int timingsafe_memcmp (const void *, const void *, size_t);
2794 void * memccpy (void *__restrict, const void *__restrict, int, size_t);
2795 void * mempcpy (void *, const void *, size_t);
2796 void * memmem (const void *, size_t, const void *, size_t);
2797 void * memrchr (const void *, int, size_t);
2798 void * rawmemchr (const void *, int);
2799 char *stpcpy (char *__restrict, const char *__restrict);
2800 char *stpncpy (char *__restrict, const char *__restrict, size_t);
2801 char *strcasestr (const char *, const char *);
2802 char *strchrnul (const char *, int);
2803 char *strdup (const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
2804 char *_strdup_r (struct _reent *, const char *);
2805 char *strndup (const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
2806 char *_strndup_r (struct _reent *, const char *, size_t);
2807 char *strerror_r (int, char *, size_t);
2808 char * _strerror_r (struct _reent *, int, int, int *);
2809 size_t strlcat (char *, const char *, size_t);
2810 size_t strlcpy (char *, const char *, size_t);
2811 size_t strnlen (const char *, size_t);
2812 char *strsep (char **, const char *);
2813 char *strnstr(const char *, const char *, size_t) __attribute__((__pure__));
2814 char *strlwr (char *);
2815 char *strupr (char *);
2816 char *strsignal (int __signo);
2817 int strtosigno (const char *__name);
2818 int strverscmp (const char *, const char *);
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
2822 char *__attribute__((__nonnull__ (1))) basename (const char *) __asm__("_" "__gnu_basename");
2823 
2824 #define _SSP_STRING_H_
2825 
2826 void *__memcpy_chk(void *, const void *, size_t, size_t);
2827 void *__memmove_chk(void *, void *, size_t, size_t);
2828 void *__mempcpy_chk(void *, const void *, size_t, size_t);
2829 void *__memset_chk(void *, int, size_t, size_t);
2830 char *__stpcpy_chk(char *, const char *, size_t);
2831 char *__strcat_chk(char *, const char *, size_t);
2832 char *__strcpy_chk(char *, const char *, size_t);
2833 char *__strncat_chk(char *, const char *, size_t, size_t);
2834 char *__strncpy_chk(char *, const char *, size_t, size_t);
2835 
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)); }
2841 
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)); }
2846 extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpcpy_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __stpcpy_ichk(char * __restrict dst, const char * __restrict src) { return __builtin___stpcpy_chk(dst, src, __builtin_object_size(dst, 0)); }
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)); }
2848 extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcpy_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcpy_ichk(char * __restrict dst, const char * __restrict src) { return __builtin___strcpy_chk(dst, src, __builtin_object_size(dst, 0)); }
2849 extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcat_ichk(char *, const char *); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * __strcat_ichk(char * __restrict dst, const char * __restrict src) { return __builtin___strcat_chk(dst, src, __builtin_object_size(dst, 0)); }
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)); }
2852 
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)
2863 #define _INTTYPES_H
2864 #define _SYS__INTSUP_H
2865 #define __STDINT_EXP(x) __ ##x ##__
2866 
2867 
2868 
2869 
2870 
2871 
2872 
2873 
2874 #undef signed
2875 #undef unsigned
2876 #undef char
2877 #undef short
2878 #undef int
2879 #undef __int20
2880 #undef __int20__
2881 #undef long
2882 #define signed +0
2883 #define unsigned +0
2884 #define char +0
2885 #define short +1
2886 #define __int20 +2
2887 #define __int20__ +2
2888 #define int +2
2889 #define long +4
2890 #define _INTPTR_EQ_INT
2891 #define __INT8 "hh"
2892 #define __INT16 "h"
2893 #define __INT32
2894 #define __INT64 "ll"
2895 #define __FAST8 "hh"
2896 #define __FAST16
2897 #define __FAST32
2898 #define __FAST64 "ll"
2899 #define __LEAST8 "hh"
2900 #define __LEAST16 "h"
2901 #define __LEAST32
2902 #define __LEAST64 "ll"
2903 #undef signed
2904 #undef unsigned
2905 #undef char
2906 #undef short
2907 #undef int
2908 #undef long
2909 
2910 
2911 
2912 
2913 
2914 #undef __int20
2915 
2916 #undef __int20__
2917 
2918 
2919 #define _STDINT_H
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
2932  typedef signed char int_fast8_t;
2933  typedef unsigned char uint_fast8_t;
2934 #define __int_fast8_t_defined 1
2935  typedef int int_fast16_t;
2936  typedef unsigned int uint_fast16_t;
2937 #define __int_fast16_t_defined 1
2938  typedef int int_fast32_t;
2939  typedef unsigned int uint_fast32_t;
2940 #define __int_fast32_t_defined 1
2941  typedef long long int int_fast64_t;
2942  typedef long long unsigned int uint_fast64_t;
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
3010 #undef NULL
3011 #define NULL ((void *)0)
3012 #undef __need_NULL
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)
3197 typedef struct {
3200 } imaxdiv_t;
3201 struct _reent;
3203 extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
3204 extern intmax_t strtoimax(const char *__restrict, char **__restrict, int);
3205 extern intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int);
3206 extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
3207 extern uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int);
3208 extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
3209 extern intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int);
3210 extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
3211 extern uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int);
3212 extern intmax_t strtoimax_l(const char *__restrict, char **_restrict, int, locale_t);
3213 extern uintmax_t strtoumax_l(const char *__restrict, char **_restrict, int, locale_t);
3214 extern intmax_t wcstoimax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t);
3215 extern uintmax_t wcstoumax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t);
3216 #define _STDALIGN_H
3217 #define alignas _Alignas
3218 #define alignof _Alignof
3219 #define __alignas_is_defined 1
3220 #define __alignof_is_defined 1
3221 #define _UNISTD_H_
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
3228 #undef NULL
3229 #define NULL ((void *)0)
3230 #undef __need_NULL
3231 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3232 extern char **environ;
3233 void _exit (int __status) __attribute__ ((__noreturn__));
3234 int access (const char *__path, int __amode);
3235 unsigned alarm (unsigned __secs);
3236 int chdir (const char *__path);
3237 int chmod (const char *__path, mode_t __mode);
3238 int chown (const char *__path, uid_t __owner, gid_t __group);
3239 int chroot (const char *__path);
3240 int close (int __fildes);
3241 size_t confstr (int __name, char *__buf, size_t __len);
3242 char * crypt (const char *__key, const char *__salt);
3243 int daemon (int nochdir, int noclose);
3244 int dup (int __fildes);
3245 int dup2 (int __fildes, int __fildes2);
3246 int dup3 (int __fildes, int __fildes2, int flags);
3247 int eaccess (const char *__path, int __mode);
3248 void encrypt (char *__block, int __edflag);
3249 void endusershell (void);
3250 int euidaccess (const char *__path, int __mode);
3251 int execl (const char *__path, const char *, ...);
3252 int execle (const char *__path, const char *, ...);
3253 int execlp (const char *__file, const char *, ...);
3254 int execlpe (const char *__file, const char *, ...);
3255 int execv (const char *__path, char * const __argv[]);
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[]);
3259 int faccessat (int __dirfd, const char *__path, int __mode, int __flags);
3260 int fchdir (int __fildes);
3261 int fchmod (int __fildes, mode_t __mode);
3262 int fchown (int __fildes, uid_t __owner, gid_t __group);
3263 int fchownat (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags);
3264 int fexecve (int __fd, char * const __argv[], char * const __envp[]);
3265 pid_t fork (void);
3266 long fpathconf (int __fd, int __name);
3267 int fsync (int __fd);
3268 int fdatasync (int __fd);
3269 char * get_current_dir_name (void);
3270 char * getcwd (char *__buf, size_t __size);
3271 int getdomainname (char *__name, size_t __len);
3272 int getentropy (void *, size_t);
3273 gid_t getegid (void);
3274 uid_t geteuid (void);
3275 gid_t getgid (void);
3276 int getgroups (int __gidsetsize, gid_t __grouplist[]);
3277 long gethostid (void);
3278 char * getlogin (void);
3279 int getlogin_r (char *name, size_t namesize) ;
3280 char * getpass (const char *__prompt);
3281 int getpagesize (void);
3282 int getpeereid (int, uid_t *, gid_t *);
3285 pid_t getpid (void);
3288 uid_t getuid (void);
3289 char * getusershell (void);
3290 char * getwd (char *__buf);
3291 int iruserok (unsigned long raddr, int superuser, const char *ruser, const char *luser);
3292 int isatty (int __fildes);
3293 int issetugid (void);
3294 int lchown (const char *__path, uid_t __owner, gid_t __group);
3295 int link (const char *__path1, const char *__path2);
3296 int linkat (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags);
3297 int nice (int __nice_value);
3298 off_t lseek (int __fildes, off_t __offset, int __whence);
3299 #define F_ULOCK 0
3300 #define F_LOCK 1
3301 #define F_TLOCK 2
3302 #define F_TEST 3
3303 int lockf (int __fd, int __cmd, off_t __len);
3304 long pathconf (const char *__path, int __name);
3305 int pause (void);
3306 int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
3307 int pipe (int __fildes[2]);
3308 int pipe2 (int __fildes[2], int flags);
3309 ssize_t pread (int __fd, void *__buf, size_t __nbytes, off_t __offset);
3310 ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, off_t __offset);
3311 _ssize_t read (int __fd, void *__buf, size_t __nbyte);
3312 int rresvport (int *__alport);
3313 int revoke (char *__path);
3314 int rmdir (const char *__path);
3315 int ruserok (const char *rhost, int superuser, const char *ruser, const char *luser);
3316 void * sbrk (ptrdiff_t __incr);
3317 int setegid (gid_t __gid);
3318 int seteuid (uid_t __uid);
3319 int setgid (gid_t __gid);
3320 int setgroups (int ngroups, const gid_t *grouplist);
3321 int sethostname (const char *, size_t);
3322 int setpgid (pid_t __pid, pid_t __pgid);
3323 int setpgrp (void);
3324 int setregid (gid_t __rgid, gid_t __egid);
3325 int setreuid (uid_t __ruid, uid_t __euid);
3326 pid_t setsid (void);
3327 int setuid (uid_t __uid);
3328 void setusershell (void);
3329 unsigned sleep (unsigned int __seconds);
3330 void swab (const void *__restrict, void *__restrict, ssize_t);
3331 long sysconf (int __name);
3332 pid_t tcgetpgrp (int __fildes);
3333 int tcsetpgrp (int __fildes, pid_t __pgrp_id);
3334 char * ttyname (int __fildes);
3335 int ttyname_r (int, char *, size_t);
3336 int unlink (const char *__path);
3337 int usleep (useconds_t __useconds);
3338 int vhangup (void);
3339 _ssize_t write (int __fd, const void *__buf, size_t __nbyte);
3340 #define __UNISTD_GETOPT__
3341 #define __GETOPT_H__
3342 extern int __attribute__((dllimport)) opterr;
3343 extern int __attribute__((dllimport)) optind;
3344 extern int __attribute__((dllimport)) optopt;
3345 extern int __attribute__((dllimport)) optreset;
3346 extern char __attribute__((dllimport)) *optarg;
3347 int getopt (int, char * const *, const char *);
3348 #undef __UNISTD_GETOPT__
3349 pid_t vfork (void);
3350 int ftruncate (int __fd, off_t __length);
3351 int truncate (const char *, off_t __length);
3352 int getdtablesize (void);
3353 useconds_t ualarm (useconds_t __useconds, useconds_t __interval);
3354  int gethostname (char *__name, size_t __len);
3355 int setdtablesize (int);
3356 void sync (void);
3358  char *__restrict __buf, size_t __buflen);
3359 int symlink (const char *__name1, const char *__name2);
3360 ssize_t readlinkat (int __dirfd1, const char *__restrict __path,
3361  char *__restrict __buf, size_t __buflen);
3362 int symlinkat (const char *, int, const char *);
3363 int unlinkat (int, const char *, int);
3364 #define F_OK 0
3365 #define R_OK 4
3366 #define W_OK 2
3367 #define X_OK 1
3368 #define SEEK_SET 0
3369 #define SEEK_CUR 1
3370 #define SEEK_END 2
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
3443 #define _SC_IPV6 67
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
3549 #define _CS_PATH 0
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_
3602 
3603 size_t __ssp_real_confstr (int __name, char *__buf, size_t __len) __asm__("_" "confstr"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) size_t confstr (int __name, char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_confstr (__name, __buf, __len); };
3604 char * __ssp_real_getcwd (char *__buf, size_t __len) __asm__("_" "getcwd"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) char * getcwd (char *__buf, size_t __len) { if (__buf != 0) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getcwd (__buf, __len); };
3605 int __ssp_real_getdomainname (char *__buf, size_t __len) __asm__("_" "getdomainname"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getdomainname (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getdomainname (__buf, __len); };
3606 int __ssp_real_getgroups (int __n, gid_t __buf[]) __asm__("_" "getgroups"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getgroups (int __n, gid_t __buf[])
3607 {
3608  if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(gid_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
3610 }
3611 int __ssp_real_gethostname (char *__buf, size_t __len) __asm__("_" "gethostname"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int gethostname (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_gethostname (__buf, __len); };
3612 int __ssp_real_getlogin_r (char *__buf, size_t __len) __asm__("_" "getlogin_r"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int getlogin_r (char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_getlogin_r (__buf, __len); };
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); };
3614 _ssize_t __ssp_real_read (int __fd, void *__buf, size_t __len) __asm__("_" "read"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) _ssize_t read (int __fd, void *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 0) != (size_t)-1 && __len > __builtin_object_size(__buf, 0)) __chk_fail(); return __ssp_real_read (__fd, __buf, __len); };
3615 ssize_t __ssp_real_readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__("_" "readlink"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) ssize_t readlink (const char *__restrict __path, char *__restrict __buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_readlink (__path, __buf, __len); };
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); };
3617 int __ssp_real_ttyname_r (int __fd, char *__buf, size_t __len) __asm__("_" "ttyname_r"); extern __inline__ __attribute__((__always_inline__, __gnu_inline__)) int ttyname_r (int __fd, char *__buf, size_t __len) { if (1) if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __len > __builtin_object_size(__buf, 2 > 1)) __chk_fail(); return __ssp_real_ttyname_r (__fd, __buf, __len); };
3618 
3619 #define RUBY_MISSING_H 1
3620 #define _MATH_H_
3621 
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(""))
3628 extern double atan (double);
3629 extern double cos (double);
3630 extern double sin (double);
3631 extern double tan (double);
3632 extern double tanh (double);
3633 extern double frexp (double, int *);
3634 extern double modf (double, double *);
3635 extern double ceil (double);
3636 extern double fabs (double);
3637 extern double floor (double);
3638 extern double acos (double);
3639 extern double asin (double);
3640 extern double atan2 (double, double);
3641 extern double cosh (double);
3642 extern double sinh (double);
3643 extern double exp (double);
3644 extern double ldexp (double, int);
3645 extern double log (double);
3646 extern double log10 (double);
3647 extern double pow (double, double);
3648 extern double sqrt (double);
3649 extern double fmod (double, double);
3650 extern int finite (double);
3651 extern int finitef (float);
3652 extern int finitel (long double);
3653 extern int isinff (float);
3654 extern int isnanf (float);
3655 extern int isinfl (long double);
3656 extern int isnanl (long 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
3661  typedef long double float_t;
3662  typedef long double double_t;
3663 #undef FLT_EVAL_METHOD
3664 #define FP_NAN 0
3665 #define FP_INFINITE 1
3666 #define FP_ZERO 2
3667 #define FP_SUBNORMAL 3
3668 #define FP_NORMAL 4
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)
3676 extern int __isinff (float x);
3677 extern int __isinfd (double x);
3678 extern int __isnanf (float x);
3679 extern int __isnand (double x);
3680 extern int __fpclassifyf (float x);
3681 extern int __fpclassifyd (double x);
3682 extern int __signbitf (float x);
3683 extern int __signbitd (double x);
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))
3696 extern double infinity (void);
3697 extern double nan (const char *);
3698 extern double copysign (double, double);
3699 extern double logb (double);
3700 extern int ilogb (double);
3701 extern double asinh (double);
3702 extern double cbrt (double);
3703 extern double nextafter (double, double);
3704 extern double rint (double);
3705 extern double scalbn (double, int);
3706 extern double exp2 (double);
3707 extern double scalbln (double, long int);
3708 extern double tgamma (double);
3709 extern double nearbyint (double);
3710 extern long int lrint (double);
3711 extern long long int llrint (double);
3712 extern double round (double);
3713 extern long int lround (double);
3714 extern long long int llround (double);
3715 extern double trunc (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);
3721 extern double log1p (double);
3722 extern double expm1 (double);
3723 extern double acosh (double);
3724 extern double atanh (double);
3725 extern double remainder (double, double);
3726 extern double gamma (double);
3727 extern double lgamma (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);
3733 extern float atanf (float);
3734 extern float cosf (float);
3735 extern float sinf (float);
3736 extern float tanf (float);
3737 extern float tanhf (float);
3738 extern float frexpf (float, int *);
3739 extern float modff (float, float *);
3740 extern float ceilf (float);
3741 extern float fabsf (float);
3742 extern float floorf (float);
3743 extern float acosf (float);
3744 extern float asinf (float);
3745 extern float atan2f (float, float);
3746 extern float coshf (float);
3747 extern float sinhf (float);
3748 extern float expf (float);
3749 extern float ldexpf (float, int);
3750 extern float logf (float);
3751 extern float log10f (float);
3752 extern float powf (float, float);
3753 extern float sqrtf (float);
3754 extern float fmodf (float, float);
3755 extern float exp2f (float);
3756 extern float scalblnf (float, long int);
3757 extern float tgammaf (float);
3758 extern float nearbyintf (float);
3759 extern long int lrintf (float);
3760 extern long long int llrintf (float);
3761 extern float roundf (float);
3762 extern long int lroundf (float);
3763 extern long long int llroundf (float);
3764 extern float truncf (float);
3765 extern float remquof (float, float, int *);
3766 extern float fdimf (float, float);
3767 extern float fmaxf (float, float);
3768 extern float fminf (float, float);
3769 extern float fmaf (float, float, float);
3770 extern float infinityf (void);
3771 extern float nanf (const char *);
3772 extern float copysignf (float, float);
3773 extern float logbf (float);
3774 extern int ilogbf (float);
3775 extern float asinhf (float);
3776 extern float cbrtf (float);
3777 extern float nextafterf (float, float);
3778 extern float rintf (float);
3779 extern float scalbnf (float, int);
3780 extern float log1pf (float);
3781 extern float expm1f (float);
3782 extern float acoshf (float);
3783 extern float atanhf (float);
3784 extern float remainderf (float, float);
3785 extern float gammaf (float);
3786 extern float lgammaf (float);
3787 extern float erff (float);
3788 extern float erfcf (float);
3789 extern float log2f (float);
3790 extern float hypotf (float, float);
3791 extern long double atanl (long double);
3792 extern long double cosl (long double);
3793 extern long double sinl (long double);
3794 extern long double tanl (long double);
3795 extern long double tanhl (long double);
3796 extern long double frexpl (long double, int *);
3797 extern long double modfl (long double, long double *);
3798 extern long double ceill (long double);
3799 extern long double fabsl (long double);
3800 extern long double floorl (long double);
3801 extern long double log1pl (long double);
3802 extern long double expm1l (long double);
3803 extern long double acosl (long double);
3804 extern long double asinl (long double);
3805 extern long double atan2l (long double, long double);
3806 extern long double coshl (long double);
3807 extern long double sinhl (long double);
3808 extern long double expl (long double);
3809 extern long double ldexpl (long double, int);
3810 extern long double logl (long double);
3811 extern long double log10l (long double);
3812 extern long double powl (long double, long double);
3813 extern long double sqrtl (long double);
3814 extern long double fmodl (long double, long double);
3815 extern long double hypotl (long double, long double);
3816 extern long double copysignl (long double, long double);
3817 extern long double nanl (const char *);
3818 extern int ilogbl (long double);
3819 extern long double asinhl (long double);
3820 extern long double cbrtl (long double);
3821 extern long double nextafterl (long double, long double);
3822 extern float nexttowardf (float, long double);
3823 extern double nexttoward (double, long double);
3824 extern long double nexttowardl (long double, long double);
3825 extern long double logbl (long double);
3826 extern long double log2l (long double);
3827 extern long double rintl (long double);
3828 extern long double scalbnl (long double, int);
3829 extern long double exp2l (long double);
3830 extern long double scalblnl (long double, long);
3831 extern long double tgammal (long double);
3832 extern long double nearbyintl (long double);
3833 extern long int lrintl (long double);
3834 extern long long int llrintl (long double);
3835 extern long double roundl (long double);
3836 extern long lroundl (long double);
3837 extern long long int llroundl (long double);
3838 extern long double truncl (long double);
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);
3844 extern long double acoshl (long double);
3845 extern long double atanhl (long double);
3846 extern long double remainderl (long double, long double);
3847 extern long double lgammal (long double);
3848 extern long double erfl (long double);
3849 extern long double erfcl (long double);
3850 extern double drem (double, double);
3851 extern float dremf (float, float);
3852 extern float dreml (long double, long double);
3853 extern double gamma_r (double, int *);
3854 extern double lgamma_r (double, int *);
3855 extern float gammaf_r (float, int *);
3856 extern float lgammaf_r (float, 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);
3863 extern float y0f (float);
3864 extern float y1f (float);
3865 extern float ynf (int, float);
3866 extern float j0f (float);
3867 extern float j1f (float);
3868 extern float jnf (int, float);
3869 extern void sincos (double, double *, double *);
3870 extern void sincosf (float, float *, float *);
3871 extern void sincosl (long double, long double *, long double *);
3872 extern double exp10 (double);
3873 extern double pow10 (double);
3874 extern float exp10f (float);
3875 extern float pow10f (float);
3876 extern float exp10l (float);
3877 extern float pow10l (float);
3878 #define signgam (*__signgam())
3879 extern int *__signgam (void);
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
3904 
3905 #undef RUBY_EXTERN
3906 #define RUBY_EXTERN extern
3907 
3908 #pragma GCC visibility push(default)
3909 
3910 extern void setproctitle(const char *fmt, ...);
3911 
3912 #pragma GCC visibility pop
3913 
3914 #define RUBY
3915 #undef _
3916 #define _(args) args
3917 #undef __
3918 #define __(args) args
3919 #define ANYARGS
3920 
3921 #pragma GCC visibility push(default)
3922 
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__))
3932 void *ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1)));
3933 void *ruby_xmalloc2(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
3934 void *ruby_xcalloc(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
3935 void *ruby_xrealloc(void*,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2)));
3936 void *ruby_xrealloc2(void*,size_t,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2,3)));
3937 void ruby_xfree(void*);
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
3943 #undef _WIN32
3944 #undef RUBY_EXTERN
3945 #define FALSE 0
3946 #define TRUE 1
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
3962 
3963 #pragma GCC visibility pop
3964 
3965 #define RUBY_ASSERT_H
3966 __attribute__ ((__noreturn__)) void rb_assert_failure(const char *, int, const char *, const char *);
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)
3978 #define _STDARG_H
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)
3986 #define _VA_LIST_
3987 #define _VA_LIST
3988 #define _VA_LIST_T_H
3989 #define __va_list__
3990 
3991 #pragma GCC visibility push(default)
3992 
3993 typedef unsigned long VALUE;
3994 typedef unsigned long ID;
3995 #define SIGNED_VALUE long
3996 #define SIZEOF_VALUE SIZEOF_LONG
3997 #define PRI_VALUE_PREFIX "l"
3998 typedef char ruby_check_sizeof_int[4 == sizeof(int) ? 1 : -1];
3999 typedef char ruby_check_sizeof_long[4 == sizeof(long) ? 1 : -1];
4000 typedef char ruby_check_sizeof_long_long[8 == sizeof(long long) ? 1 : -1];
4001 typedef char ruby_check_sizeof_voidp[4 == sizeof(void*) ? 1 : -1];
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
4026 #define _FEATURES_H
4027 #define _LIMITS_H___
4028 #define _MACH_MACHLIMITS_H_
4029 #undef CHAR_BIT
4030 #define CHAR_BIT __CHAR_BIT__
4031 #undef LONG_BIT
4032 #define LONG_BIT (__SIZEOF_LONG__ * __CHAR_BIT__)
4033 #undef WORD_BIT
4034 #define WORD_BIT (__SIZEOF_INT__ * __CHAR_BIT__)
4035 #define MB_LEN_MAX 8
4036 #undef SCHAR_MIN
4037 #define SCHAR_MIN (-128)
4038 #undef SCHAR_MAX
4039 #define SCHAR_MAX 127
4040 #undef UCHAR_MAX
4041 #define UCHAR_MAX 255
4042 #undef CHAR_MIN
4043 #define CHAR_MIN (-128)
4044 #undef CHAR_MAX
4045 #define CHAR_MAX 127
4046 #undef SHRT_MIN
4047 #define SHRT_MIN (-32768)
4048 #undef SHRT_MAX
4049 #define SHRT_MAX 32767
4050 #undef USHRT_MAX
4051 #define USHRT_MAX 65535
4052 #undef INT_MIN
4053 #define INT_MIN (-INT_MAX-1)
4054 #undef INT_MAX
4055 #define INT_MAX __INT_MAX__
4056 #undef UINT_MAX
4057 #define UINT_MAX (INT_MAX * 2U + 1)
4058 #undef LONG_MIN
4059 #define LONG_MIN (-LONG_MAX-1L)
4060 #undef LONG_MAX
4061 #define LONG_MAX __LONG_MAX__
4062 #undef ULONG_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)
4070 #undef LLONG_MIN
4071 #define LLONG_MIN (-LLONG_MAX-1)
4072 #undef LLONG_MAX
4073 #define LLONG_MAX __LONG_LONG_MAX__
4074 #undef ULLONG_MAX
4075 #define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
4076 #undef SSIZE_MAX
4077 #define SSIZE_MAX (__INT_MAX__)
4078 #define AIO_LISTIO_MAX 32
4079 #define AIO_MAX 8
4080 #define AIO_PRIO_DELTA_MAX 0
4081 #undef ARG_MAX
4082 #define ARG_MAX 32000
4083 #undef ATEXIT_MAX
4084 #define ATEXIT_MAX 32
4085 #undef CHILD_MAX
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
4091 #undef IOV_MAX
4092 #define IOV_MAX 1024
4093 #undef LOGIN_NAME_MAX
4094 #define LOGIN_NAME_MAX 256
4095 #undef MQ_OPEN_MAX
4096 #define MQ_OPEN_MAX OPEN_MAX
4097 #undef MQ_PRIO_MAX
4098 #define MQ_PRIO_MAX INT_MAX
4099 #undef OPEN_MAX
4100 #define OPEN_MAX 256
4101 #undef PAGESIZE
4102 #define PAGESIZE 65536
4103 #undef PAGE_SIZE
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
4112 #undef RTSIG_MAX
4113 #define RTSIG_MAX 1
4114 #undef SEM_NSEMS_MAX
4115 #undef SEM_VALUE_MAX
4116 #define SEM_VALUE_MAX 1147483648
4117 #undef SIGQUEUE_MAX
4118 #define SIGQUEUE_MAX 32
4119 #undef SS_REPL_MAX
4120 #undef STREAM_MAX
4121 #define STREAM_MAX 20
4122 #undef SYMLOOP_MAX
4123 #define SYMLOOP_MAX 10
4124 #undef TIMER_MAX
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
4130 #undef TTY_NAME_MAX
4131 #define TTY_NAME_MAX 32
4132 #undef TZNAME_MAX
4133 #undef FILESIZEBITS
4134 #define FILESIZEBITS 64
4135 #undef LINK_MAX
4136 #define LINK_MAX 1024
4137 #undef MAX_CANON
4138 #define MAX_CANON 255
4139 #undef MAX_INPUT
4140 #define MAX_INPUT 255
4141 #undef NAME_MAX
4142 #define NAME_MAX 255
4143 #undef PATH_MAX
4144 #define PATH_MAX 4096
4145 #undef PIPE_BUF
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
4152 #undef SYMLINK_MAX
4153 #define SYMLINK_MAX (PATH_MAX - 1)
4154 #undef BC_BASE_MAX
4155 #define BC_BASE_MAX 99
4156 #undef BC_DIM_MAX
4157 #define BC_DIM_MAX 2048
4158 #undef BC_SCALE_MAX
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
4166 #undef LINE_MAX
4167 #define LINE_MAX 2048
4168 #undef NGROUPS_MAX
4169 #define NGROUPS_MAX 1024
4170 #undef RE_DUP_MAX
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
4221 #define NL_ARGMAX 9
4222 #define NL_LANGMAX 14
4223 #define NL_MSGMAX 32767
4224 #define NL_SETMAX 255
4225 #define NL_TEXTMAX _POSIX2_LINE_MAX
4226 #undef NZERO
4227 #define NZERO 20
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)
4242 VALUE rb_ll2inum(long long);
4243 #define LL2NUM(v) rb_ll2inum(v)
4244 VALUE rb_ull2inum(unsigned long long);
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))
4250 static inline long
4251 rb_fix2long(VALUE x)
4252 {
4253  return ((long)(((long)(x))>>(int)(1)));
4254 }
4255 #define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
4256 static inline unsigned long
4257 rb_fix2ulong(VALUE x)
4258 {
4259  return ((unsigned long)((long)(((long)(x))>>(int)(1))));
4260 }
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)
4273 ID rb_sym2id(VALUE);
4274 VALUE rb_id2sym(ID);
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
4299  RUBY_SPECIAL_SHIFT = 8
4300 };
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))
4318  RUBY_T_NONE = 0x00,
4326  RUBY_T_HASH = 0x08,
4329  RUBY_T_FILE = 0x0b,
4330  RUBY_T_DATA = 0x0c,
4334  RUBY_T_NIL = 0x11,
4335  RUBY_T_TRUE = 0x12,
4341  RUBY_T_NODE = 0x1b,
4345  RUBY_T_MASK = 0x1f
4346 };
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))
4383 void rb_check_type(VALUE,int);
4384 #define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
4386 VALUE rb_string_value(volatile VALUE*);
4387 char *rb_string_value_ptr(volatile VALUE*);
4388 char *rb_string_value_cstr(volatile VALUE*);
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))
4392 void rb_check_safe_obj(VALUE);
4393 #define SafeStringValue(v) StringValue(v)
4394 void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")));
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
4404 void rb_secure(int);
4405 int rb_safe_level(void);
4406 void rb_set_safe_level(int);
4407 int ruby_safe_level_2_error(void) __attribute__((error("$SAFE=2 to 4 are obsolete")));
4408 int ruby_safe_level_2_warning(void) __attribute__((const,warning("$SAFE=2 to 4 are obsolete")));
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))
4414 void rb_set_safe_level_force(int);
4415 void rb_secure_update(VALUE);
4416 __attribute__ ((__noreturn__)) void rb_insecure_operation(void);
4417 VALUE rb_errinfo(void);
4418 void rb_set_errinfo(VALUE);
4419 long rb_num2long(VALUE);
4420 unsigned long rb_num2ulong(VALUE);
4421 static inline long
4422 rb_num2long_inline(VALUE x)
4423 {
4424  if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4425  return ((long)(((long)(x))>>(int)(1)));
4426  else
4427  return rb_num2long(x);
4428 }
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)
4433 {
4434  if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4435  return ((unsigned long)((long)(((long)(x))>>(int)(1))));
4436  else
4437  return rb_num2ulong(x);
4438 }
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)
4449 short rb_num2short(VALUE);
4450 unsigned short rb_num2ushort(VALUE);
4451 short rb_fix2short(VALUE);
4452 unsigned short rb_fix2ushort(VALUE);
4453 #define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
4454 #define FIX2SHORT(x) RB_FIX2SHORT(x)
4455 static inline short
4456 rb_num2short_inline(VALUE x)
4457 {
4458  if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4459  return rb_fix2short(x);
4460  else
4461  return rb_num2short(x);
4462 }
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)
4471 {
4472  if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4473  return ((long)(((long)(x))>>(int)(1)));
4474  else
4475  return rb_num2ll(x);
4476 }
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)
4483 double rb_num2dbl(VALUE);
4484 #define NUM2DBL(x) rb_num2dbl((VALUE)(x))
4487 VALUE rb_newobj(void);
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
4511 __extension__
4512 enum ruby_fl_type {
4513  RUBY_FL_WB_PROTECTED = (1<<5),
4514  RUBY_FL_PROMOTED0 = (1<<5),
4515  RUBY_FL_PROMOTED1 = (1<<6),
4517  RUBY_FL_FINALIZE = (1<<7),
4518  RUBY_FL_TAINT = (1<<8),
4520  RUBY_FL_SEEN_OBJ_ID = (1<<9),
4521  RUBY_FL_EXIVAR = (1<<10),
4522  RUBY_FL_FREEZE = (1<<11),
4523  RUBY_FL_USHIFT = 12,
4524 #define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
4525  RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
4526  RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
4527  RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
4528  RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
4529  RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
4530  RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
4531  RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
4532  RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
4533  RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
4534  RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
4535  RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
4536  RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
4537  RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
4538  RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
4539  RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
4540  RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
4541  RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
4542  RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
4543  RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
4544  RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
4545  RUBY_ELTS_SHARED = RUBY_FL_USER2,
4547  RUBY_FL_SINGLETON = RUBY_FL_USER0
4548 };
4549 struct __attribute__((aligned(4))) RBasic {
4550  VALUE flags;
4551  const VALUE klass;
4552 };
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
4558 enum ruby_rvalue_flags {
4560 };
4561 #define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
4562 #define ROBJECT_EMBED ROBJECT_EMBED
4563 enum ruby_robject_flags {
4565  ROBJECT_EMBED = RUBY_FL_USER1,
4567 };
4568 struct RObject {
4569  struct RBasic basic;
4570  union {
4571  struct {
4572  uint32_t numiv;
4573  VALUE *ivptr;
4574  void *iv_index_tbl;
4575  } heap;
4577  } as;
4578 };
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
4590 enum ruby_rmodule_flags {
4591  RMODULE_IS_OVERLAID = RUBY_FL_USER2,
4592  RMODULE_IS_REFINEMENT = RUBY_FL_USER3,
4593  RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4,
4595 };
4596 __attribute__ ((__pure__)) double rb_float_value(VALUE);
4597 VALUE rb_float_new(double);
4598 VALUE rb_float_new_in_heap(double);
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
4608 enum ruby_rstring_flags {
4609  RSTRING_NOEMBED = RUBY_FL_USER1,
4610  RSTRING_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|
4611  RUBY_FL_USER5|RUBY_FL_USER6),
4613  RSTRING_EMBED_LEN_MAX = (int)((sizeof(VALUE)*RVALUE_EMBED_LEN_MAX)/sizeof(char)-1),
4614  RSTRING_FSTR = RUBY_FL_USER17,
4616 };
4617 struct RString {
4618  struct RBasic basic;
4619  union {
4620  struct {
4621  long len;
4622  char *ptr;
4623  union {
4624  long capa;
4625  VALUE shared;
4626  } aux;
4627  } heap;
4628  char ary[RSTRING_EMBED_LEN_MAX + 1];
4629  } as;
4630 };
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
4638 enum ruby_rarray_flags {
4640  RARRAY_EMBED_FLAG = RUBY_FL_USER1,
4641  RARRAY_EMBED_LEN_MASK = (RUBY_FL_USER4|RUBY_FL_USER3),
4643  RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13,
4644 #define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
4646 };
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
4651 struct RArray {
4652  struct RBasic basic;
4653  union {
4654  struct {
4655  long len;
4656  union {
4657  long capa;
4658  const
4660  } aux;
4661  const VALUE *ptr;
4662  } heap;
4664  } as;
4665 };
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)))
4681 struct RRegexp {
4682  struct RBasic basic;
4683  struct re_pattern_buffer *ptr;
4684  const VALUE src;
4685  unsigned long usecnt;
4686 };
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)
4692 size_t rb_hash_size_num(VALUE hash);
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)
4699 struct RFile {
4700  struct RBasic basic;
4701  struct rb_io_t *fptr;
4702 };
4703 struct RData {
4704  struct RBasic basic;
4705  void (*dmark)(void*);
4706  void (*dfree)(void*);
4707  void *data;
4708 };
4709 typedef struct rb_data_type_struct rb_data_type_t;
4710 struct rb_data_type_struct {
4711  const char *wrap_struct_name;
4712  struct {
4713  void (*dmark)(void*);
4714  void (*dfree)(void*);
4715  size_t (*dsize)(const void *);
4716  void (*dcompact)(void*);
4717  void *reserved[1];
4718  } function;
4719  const rb_data_type_t *parent;
4720  void *data;
4721  VALUE flags;
4722 };
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
4726 struct RTypedData {
4727  struct RBasic basic;
4728  const rb_data_type_t *type;
4729  VALUE typed_flag;
4730  void *data;
4731 };
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)
4736 typedef void (*RUBY_DATA_FUNC)(void*);
4737 #define RUBY_UNTYPED_DATA_WARNING 1
4742 int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
4744 void *rb_check_typeddata(VALUE, const rb_data_type_t *);
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))
4765 int rb_big_sign(VALUE);
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)
4867 static inline void
4868 rb_obj_freeze_inline(VALUE x)
4869 {
4870  if ((!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) != RUBY_T_NODE)) {
4871  (void)(((struct RBasic*)(x))->flags |= RUBY_FL_FREEZE);
4872  if ((((struct RBasic*)(x))->klass) && !(((struct RBasic*)(x))->flags & RUBY_FL_SINGLETON)) {
4874  }
4875  }
4876 }
4877 #define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
4878 static inline VALUE rb_data_object_wrap_warning(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_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")));
4880 static inline VALUE
4882 {
4883  return rb_data_object_wrap(klass, ptr, mark, free);
4884 }
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 *
4888 {
4890  return ((struct RData *)obj)->data;
4891 }
4892 static inline void *
4893 rb_data_object_get_warning(VALUE obj)
4894 {
4895  return rb_data_object_get(obj);
4896 }
4897 static inline VALUE
4898 rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
4899 {
4900  VALUE result = rb_data_object_zalloc((klass), (size), (RUBY_DATA_FUNC)(mark_func), (RUBY_DATA_FUNC)(free_func)); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
4901  return result;
4902 }
4903 static inline VALUE
4904 rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
4905 {
4906  VALUE result = rb_data_typed_object_zalloc(klass, size, type); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
4907  return result;
4908 }
4909 __attribute__ ((__deprecated__("by ""rb_data_object_wrap"))) static inline VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
4910 static inline VALUE
4912 {
4913  return rb_data_object_wrap(klass, data, dmark, dfree);
4914 }
4915 __attribute__ ((__deprecated__("by ""rb_data_typed_object_wrap"))) static inline VALUE rb_data_typed_object_alloc(VALUE,void*,const rb_data_type_t*);
4916 static inline VALUE
4918 {
4919  return rb_data_typed_object_wrap(klass, datap, type);
4920 }
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__)
4933 void rb_gc_writebarrier(VALUE a, VALUE b);
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
4941 static inline VALUE
4942 rb_obj_wb_unprotect(VALUE x, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4943 {
4945  return x;
4946 }
4947 static inline VALUE
4948 rb_obj_written(VALUE a, VALUE oldv __attribute__ ((unused)), VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4949 {
4950  if (!(((VALUE)(b) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(b) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
4951  rb_gc_writebarrier(a, b);
4952  }
4953  return a;
4954 }
4955 static inline VALUE
4956 rb_obj_write(VALUE a, VALUE *slot, VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4957 {
4958  *slot = b;
4959  rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
4960  return a;
4961 }
4962 #define RUBY_INTEGER_UNIFICATION 1
4963 #define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
4964 static inline int
4965 rb_integer_type_p(VALUE obj)
4966 {
4967  return ((((int)(long)(obj))&RUBY_FIXNUM_FLAG) ||
4968  (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) &&
4969  (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_BIGNUM));
4970 }
4971 static inline VALUE
4972 rb_int2num_inline(int v)
4973 {
4974  if ((((v) < (0x7fffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffL -1L))>>(int)(1)))))
4975  return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
4976  else
4977  return rb_int2big(v);
4978 }
4979 #define RB_INT2NUM(x) rb_int2num_inline(x)
4980 static inline VALUE
4981 rb_uint2num_inline(unsigned int v)
4982 {
4983  if (((v) < (0x7fffffffL>>1)+1))
4984  return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
4985  else
4986  return rb_uint2big(v);
4987 }
4988 #define RB_UINT2NUM(x) rb_uint2num_inline(x)
4989 #define INT2NUM(x) RB_INT2NUM(x)
4990 #define UINT2NUM(x) RB_UINT2NUM(x)
4991 static inline VALUE
4992 rb_long2num_inline(long v)
4993 {
4994  if ((((v) < (0x7fffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffL -1L))>>(int)(1)))))
4995  return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
4996  else
4997  return rb_int2big(v);
4998 }
4999 #define RB_LONG2NUM(x) rb_long2num_inline(x)
5000 static inline VALUE
5001 rb_ulong2num_inline(unsigned long v)
5002 {
5003  if (((v) < (0x7fffffffL>>1)+1))
5004  return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
5005  else
5006  return rb_uint2big(v);
5007 }
5008 #define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
5009 static inline char
5010 rb_num2char_inline(VALUE x)
5011 {
5012  if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(x))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((x) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((x) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((x) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((x) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && ((!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(x))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(x))->as.heap.len)>=1))
5013  return (!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? ((struct RString*)(x))->as.ary : ((struct RString*)(x))->as.heap.ptr)[0];
5014  else
5015  return (char)(((int)rb_num2long_inline(x)) & 0xff);
5016 }
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)
5037 void *rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__ ((alloc_size (2)));
5038 void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count) __attribute__ ((alloc_size (2,3)));
5039 void rb_free_tmp_buffer(volatile VALUE *store);
5040 __attribute__ ((__noreturn__)) void ruby_malloc_size_overflow(size_t, size_t);
5041 #define DSIZE_T unsigned LONG_LONG
5042 static inline int
5043 rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
5044 {
5045  __extension__
5046  unsigned long long c2 = (unsigned long long)a * (unsigned long long)b;
5047  if (c2 > max) return 1;
5048  *c = (size_t)c2;
5049  return 0;
5050 }
5051 static inline void *
5052 rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
5053 {
5054  size_t cnt = (size_t)count;
5055  if (elsize == sizeof(VALUE)) {
5056  if ((__builtin_expect(!!(cnt > 0x7fffffffL / sizeof(VALUE)), 0))) {
5057  ruby_malloc_size_overflow(cnt, elsize);
5058  }
5059  }
5060  else {
5061  size_t size, max = 0x7fffffffL - sizeof(VALUE) + 1;
5062  if ((__builtin_expect(!!(rb_mul_size_overflow(cnt, elsize, max, &size)), 0))) {
5063  ruby_malloc_size_overflow(cnt, elsize);
5064  }
5065  cnt = (size + sizeof(VALUE) - 1) / sizeof(VALUE);
5066  }
5067  return rb_alloc_tmp_buffer_with_count(store, cnt * sizeof(VALUE), cnt);
5068 }
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))
5080 void rb_obj_infect(VALUE victim, VALUE carrier);
5081 typedef int ruby_glob_func(const char*,VALUE, void*);
5082 void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
5083 int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
5084 int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
5085 VALUE rb_define_class(const char*,VALUE);
5086 VALUE rb_define_module(const char*);
5087 VALUE rb_define_class_under(VALUE, const char*, VALUE);
5088 VALUE rb_define_module_under(VALUE, const char*);
5092 typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
5093 typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
5094 typedef void rb_gvar_marker_t(VALUE *var);
5105 void rb_define_variable(const char*,VALUE*);
5108 void rb_define_readonly_variable(const char*,const VALUE*);
5109 void rb_define_const(VALUE,const char*,VALUE);
5110 void rb_define_global_const(const char*,VALUE);
5111 void rb_define_method(VALUE,const char*,VALUE(*)(),int);
5112 void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
5113 void rb_define_global_function(const char*,VALUE(*)(),int);
5114 void rb_undef_method(VALUE,const char*);
5115 void rb_define_alias(VALUE,const char*,const char*);
5116 void rb_define_attr(VALUE,const char*,int,int);
5117 void rb_global_variable(VALUE*);
5121 ID rb_intern(const char*);
5122 ID rb_intern2(const char*, long);
5124 const char *rb_id2name(ID);
5125 ID rb_check_id(volatile VALUE *);
5126 ID rb_to_id(VALUE);
5127 VALUE rb_id2str(ID);
5130 VALUE rb_check_symbol(volatile VALUE *namep);
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))
5141 const char *rb_class2name(VALUE);
5142 const char *rb_obj_classname(VALUE);
5143 void rb_p(VALUE);
5144 VALUE rb_eval_string(const char*);
5145 VALUE rb_eval_string_protect(const char*, int*);
5146 VALUE rb_eval_string_wrap(const char*, int*);
5147 VALUE rb_funcall(VALUE, ID, int, ...);
5148 VALUE rb_funcallv(VALUE, ID, int, const VALUE*);
5149 VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE*, int);
5150 VALUE rb_funcallv_public(VALUE, ID, int, const VALUE*);
5151 VALUE rb_funcallv_public_kw(VALUE, ID, int, const VALUE*, int);
5152 #define rb_funcall2 rb_funcallv
5153 #define rb_funcall3 rb_funcallv_public
5155 VALUE rb_funcall_passing_block_kw(VALUE, ID, int, const VALUE*, int);
5156 VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE*, VALUE);
5157 VALUE rb_funcall_with_block_kw(VALUE, ID, int, const VALUE*, VALUE, int);
5158 int rb_scan_args(int, const VALUE*, const char*, ...);
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
5163 int rb_scan_args_kw(int, int, const VALUE*, const char*, ...);
5164 VALUE rb_call_super(int, const VALUE*);
5165 VALUE rb_call_super_kw(int, const VALUE*, int);
5167 int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *);
5168 VALUE rb_extract_keywords(VALUE *orighash);
5169 #define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
5170 VALUE rb_gv_set(const char*, VALUE);
5171 VALUE rb_gv_get(const char*);
5172 VALUE rb_iv_get(VALUE, const char*);
5173 VALUE rb_iv_set(VALUE, const char*, VALUE);
5175 VALUE *rb_ruby_verbose_ptr(void);
5176 VALUE *rb_ruby_debug_ptr(void);
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
5182 __attribute__ ((__noreturn__)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5183 __attribute__ ((__noreturn__)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
5184 __attribute__((cold)) __attribute__ ((__noreturn__)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
5185 __attribute__ ((__noreturn__)) void rb_bug_errno(const char*, int);
5186 __attribute__ ((__noreturn__)) void rb_sys_fail(const char*);
5187 __attribute__ ((__noreturn__)) void rb_sys_fail_str(VALUE);
5188 __attribute__ ((__noreturn__)) void rb_mod_sys_fail(VALUE, const char*);
5189 __attribute__ ((__noreturn__)) void rb_mod_sys_fail_str(VALUE, VALUE);
5190 __attribute__ ((__noreturn__)) void rb_readwrite_sys_fail(enum rb_io_wait_readwrite, const char*);
5191 __attribute__ ((__noreturn__)) void rb_iter_break(void);
5192 __attribute__ ((__noreturn__)) void rb_iter_break_value(VALUE);
5193 __attribute__ ((__noreturn__)) void rb_exit(int);
5194 __attribute__ ((__noreturn__)) void rb_notimplement(void);
5195 VALUE rb_syserr_new(int, const char *);
5197 __attribute__ ((__noreturn__)) void rb_syserr_fail(int, const char*);
5198 __attribute__ ((__noreturn__)) void rb_syserr_fail_str(int, VALUE);
5199 __attribute__ ((__noreturn__)) void rb_mod_syserr_fail(VALUE, int, const char*);
5200 __attribute__ ((__noreturn__)) void rb_mod_syserr_fail_str(VALUE, int, VALUE);
5201 __attribute__ ((__noreturn__)) void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite, int, const char*);
5202 void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
5203 void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
5204 void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
5205 __attribute__((cold)) void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
5206 void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
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
5210 typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
5214 VALUE rb_yield_values(int n, ...);
5215 VALUE rb_yield_values2(int n, const VALUE *argv);
5216 VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat);
5219 VALUE rb_yield_block(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
5224 int rb_keyword_given_p(void);
5225 int rb_block_given_p(void);
5226 void rb_need_block(void);
5236 __attribute__ ((__noreturn__)) void rb_throw(const char*,VALUE);
5237 __attribute__ ((__noreturn__)) void rb_throw_obj(VALUE,VALUE);
5238 VALUE rb_require(const char*);
5239 extern VALUE rb_mKernel;
5240 extern VALUE rb_mComparable;
5241 extern VALUE rb_mEnumerable;
5242 extern VALUE rb_mErrno;
5243 extern VALUE rb_mFileTest;
5244 extern VALUE rb_mGC;
5245 extern VALUE rb_mMath;
5246 extern VALUE rb_mProcess;
5247 extern VALUE rb_mWaitReadable;
5248 extern VALUE rb_mWaitWritable;
5249 extern VALUE rb_cBasicObject;
5250 extern VALUE rb_cObject;
5251 extern VALUE rb_cArray;
5252 extern VALUE rb_cBinding;
5253 extern VALUE rb_cClass;
5254 extern VALUE rb_cCont;
5255 extern VALUE rb_cData;
5256 extern VALUE rb_cDir;
5257 extern VALUE rb_cEncoding;
5258 extern VALUE rb_cEnumerator;
5259 extern VALUE rb_cFalseClass;
5260 extern VALUE rb_cFile;
5261 extern VALUE rb_cComplex;
5262 extern VALUE rb_cFloat;
5263 extern VALUE rb_cHash;
5264 extern VALUE rb_cIO;
5265 extern VALUE rb_cInteger;
5266 extern VALUE rb_cMatch;
5267 extern VALUE rb_cMethod;
5268 extern VALUE rb_cModule;
5269 extern VALUE rb_cNameErrorMesg;
5270 extern VALUE rb_cNilClass;
5271 extern VALUE rb_cNumeric;
5272 extern VALUE rb_cProc;
5273 extern VALUE rb_cRandom;
5274 extern VALUE rb_cRange;
5275 extern VALUE rb_cRational;
5276 extern VALUE rb_cRegexp;
5277 extern VALUE rb_cStat;
5278 extern VALUE rb_cString;
5279 extern VALUE rb_cStruct;
5280 extern VALUE rb_cSymbol;
5281 extern VALUE rb_cThread;
5282 extern VALUE rb_cTime;
5283 extern VALUE rb_cTrueClass;
5284 extern VALUE rb_cUnboundMethod;
5285 extern VALUE rb_eException;
5286 extern VALUE rb_eStandardError;
5287 extern VALUE rb_eSystemExit;
5288 extern VALUE rb_eInterrupt;
5289 extern VALUE rb_eSignal;
5290 extern VALUE rb_eFatal;
5291 extern VALUE rb_eArgError;
5292 extern VALUE rb_eEOFError;
5293 extern VALUE rb_eIndexError;
5294 extern VALUE rb_eStopIteration;
5295 extern VALUE rb_eKeyError;
5296 extern VALUE rb_eRangeError;
5297 extern VALUE rb_eIOError;
5298 extern VALUE rb_eRuntimeError;
5299 extern VALUE rb_eFrozenError;
5300 extern VALUE rb_eSecurityError;
5301 extern VALUE rb_eSystemCallError;
5302 extern VALUE rb_eThreadError;
5303 extern VALUE rb_eTypeError;
5304 extern VALUE rb_eZeroDivError;
5305 extern VALUE rb_eNotImpError;
5306 extern VALUE rb_eNoMemError;
5307 extern VALUE rb_eNoMethodError;
5309 extern VALUE rb_eLocalJumpError;
5310 extern VALUE rb_eSysStackError;
5311 extern VALUE rb_eRegexpError;
5312 extern VALUE rb_eEncodingError;
5313 extern VALUE rb_eEncCompatError;
5315 extern VALUE rb_eScriptError;
5316 extern VALUE rb_eNameError;
5317 extern VALUE rb_eSyntaxError;
5318 extern VALUE rb_eLoadError;
5319 extern VALUE rb_eMathDomainError;
5321 static inline VALUE
5322 rb_class_of(VALUE obj)
5323 {
5324  if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
5325  if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cInteger;
5326  if (0) return rb_cFloat;
5327  if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
5328  if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return rb_cSymbol;
5329  }
5330  else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
5331  if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
5332  if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
5333  }
5334  return ((struct RBasic*)(obj))->klass;
5335 }
5336 static inline int
5337 rb_type(VALUE obj)
5338 {
5339  if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
5340  if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
5341  if (0) return RUBY_T_FLOAT;
5342  if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
5343  if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
5344  if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
5345  }
5346  else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
5347  if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
5348  if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
5349  }
5350  return (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK);
5351 }
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
5355 #define RUBY_ST_H 1
5356 
5357 #pragma GCC visibility push(default)
5358 
5359 typedef unsigned long st_data_t;
5360 #define ST_DATA_T_DEFINED
5361 typedef struct st_table st_table;
5363 #define MAX_ST_INDEX_VAL (~(st_index_t) 0)
5366 typedef char st_check_for_sizeof_st_index_t[4 == (int)sizeof(st_index_t) ? 1 : -1];
5367 #define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
5368 struct st_hash_type {
5371 };
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)
5374 typedef struct st_table_entry st_table_entry;
5375 struct st_table_entry;
5376 struct st_table {
5377  unsigned char entry_power, bin_power, size_ind;
5378  unsigned int rebuilds_num;
5379  const struct st_hash_type *type;
5381  st_index_t *bins;
5384 };
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
5417 typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
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
5446 __attribute__ ((__const__)) int rb_st_numcmp(st_data_t, st_data_t);
5447 #define st_numcmp rb_st_numcmp
5448 __attribute__ ((__const__)) st_index_t rb_st_numhash(st_data_t);
5449 #define st_numhash rb_st_numhash
5450 __attribute__ ((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
5451 #define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
5452 __attribute__ ((__pure__)) int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
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
5456 __attribute__ ((__pure__)) size_t rb_st_memsize(const st_table *);
5457 #define st_memsize rb_st_memsize
5458 __attribute__ ((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h);
5459 #define st_hash rb_st_hash
5460 __attribute__ ((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
5461 #define st_hash_uint32 rb_st_hash_uint32
5462 __attribute__ ((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
5463 #define st_hash_uint rb_st_hash_uint
5464 __attribute__ ((__const__)) st_index_t rb_st_hash_end(st_index_t h);
5465 #define st_hash_end rb_st_hash_end
5467 #define st_hash_start(h) ((st_index_t)(h))
5468 void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);
5469 
5470 #pragma GCC visibility pop
5471 
5472 #define MJIT_STATIC static
5473 
5474 #pragma GCC visibility push(default)
5475 
5476 #define UNLIMITED_ARGUMENTS (-1)
5477 void rb_mem_clear(VALUE*, long);
5480 VALUE rb_ary_new(void);
5481 VALUE rb_ary_new_capa(long capa);
5482 VALUE rb_ary_new_from_args(long n, ...);
5483 VALUE rb_ary_new_from_values(long n, const VALUE *elts);
5484 VALUE rb_ary_tmp_new(long);
5485 void rb_ary_free(VALUE);
5486 void rb_ary_modify(VALUE);
5489 VALUE rb_ary_aref(int, const VALUE*, VALUE);
5490 VALUE rb_ary_subseq(VALUE, long, long);
5491 void rb_ary_store(VALUE, long, VALUE);
5496 VALUE rb_ary_cat(VALUE, const VALUE *, long);
5501 VALUE rb_ary_entry(VALUE, long);
5505 VALUE rb_ary_rotate(VALUE, long);
5517 VALUE rb_ary_replace(VALUE copy, VALUE orig);
5518 VALUE rb_get_values_at(VALUE, long, int, const VALUE*, VALUE(*)(VALUE,long));
5519 VALUE rb_ary_resize(VALUE ary, long len);
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
5523 VALUE rb_big_new(size_t, int);
5524 int rb_bigzero_p(VALUE x);
5526 void rb_big_2comp(VALUE);
5528 void rb_big_resize(VALUE big, size_t len);
5529 VALUE rb_cstr_to_inum(const char*, int, int);
5530 VALUE rb_str_to_inum(VALUE, int, int);
5531 VALUE rb_cstr2inum(const char*, int);
5532 VALUE rb_str2inum(VALUE, int);
5533 VALUE rb_big2str(VALUE, int);
5534 long rb_big2long(VALUE);
5535 #define rb_big2int(x) rb_big2long(x)
5536 unsigned long rb_big2ulong(VALUE);
5537 #define rb_big2uint(x) rb_big2ulong(x)
5538 long long rb_big2ll(VALUE);
5539 unsigned long long rb_big2ull(VALUE);
5540 void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
5541 VALUE rb_big_unpack(unsigned long *buf, long num_longs);
5542 int rb_uv_to_utf8(char[6],unsigned long);
5543 VALUE rb_dbl2big(double);
5544 double rb_big2dbl(VALUE);
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);
5573 VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
5574 size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
5575 size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
5576 int rb_absint_singlebit_p(VALUE val);
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))
5597 __attribute__ ((__deprecated__("by ""rb_complex_new_polar"))) VALUE rb_complex_polar(VALUE abs, VALUE arg);
5609 VALUE rb_dbl_complex_new(double real, double imag);
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))
5623 VALUE rb_module_new(void);
5634 void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
5635 void rb_undef(VALUE, ID);
5636 void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
5637 void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
5638 void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
5640 int rb_cmpint(VALUE, VALUE, VALUE);
5641 __attribute__ ((__noreturn__)) void rb_cmperr(VALUE, VALUE);
5643 VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv);
5644 VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat);
5645 VALUE rb_fiber_yield(int argc, const VALUE *argv);
5646 VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
5647 VALUE rb_fiber_current(void);
5649 VALUE rb_enum_values_pack(int, const VALUE*);
5650 VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *);
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)
5660 typedef struct {
5661  VALUE begin;
5662  VALUE end;
5663  VALUE step;
5664  int exclude_end;
5667 VALUE rb_exc_new(VALUE, const char*, long);
5668 VALUE rb_exc_new_cstr(VALUE, const char*);
5670 #define rb_exc_new2 rb_exc_new_cstr
5671 #define rb_exc_new3 rb_exc_new_str
5672 __attribute__ ((__noreturn__)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
5673 __attribute__ ((__noreturn__)) void rb_loaderror_with_path(VALUE path, const char*, ...) __attribute__((format(printf, 2, 3)));
5674 __attribute__ ((__noreturn__)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
5675 __attribute__ ((__noreturn__)) void rb_name_error_str(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5676 __attribute__ ((__noreturn__)) void rb_frozen_error_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5677 __attribute__ ((__noreturn__)) void rb_invalid_str(const char*, const char*);
5678 __attribute__ ((__noreturn__)) void rb_error_frozen(const char*);
5679 __attribute__ ((__noreturn__)) void rb_error_frozen_object(VALUE);
5681 void rb_check_frozen(VALUE);
5682 void rb_check_trusted(VALUE);
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);})
5685 void rb_check_copyable(VALUE obj, VALUE orig);
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)
5688 int rb_sourceline(void);
5689 const char *rb_sourcefile(void);
5690 VALUE rb_check_funcall(VALUE, ID, int, const VALUE*);
5691 VALUE rb_check_funcall_kw(VALUE, ID, int, const VALUE*, int);
5692 __attribute__ ((__noreturn__)) static void rb_error_arity(int, int, int);
5693 static inline int
5694 rb_check_arity(int argc, int min, int max)
5695 {
5696  if ((argc < min) || (max != (-1) && argc > max))
5697  rb_error_arity(argc, min, max);
5698  return argc;
5699 }
5700 #define rb_check_arity rb_check_arity
5701 typedef struct {
5702  int maxfd;
5704 } rb_fdset_t;
5708 void rb_fd_set(int, rb_fdset_t *);
5709 void rb_fd_clr(int, rb_fdset_t *);
5710 int rb_fd_isset(int, const rb_fdset_t *);
5711 void rb_fd_copy(rb_fdset_t *, const fd_set *, int);
5712 void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
5713 struct timeval;
5715 #define rb_fd_ptr(f) ((f)->fdset)
5716 #define rb_fd_max(f) ((f)->maxfd)
5717 __attribute__ ((__noreturn__)) void rb_exc_raise(VALUE);
5718 __attribute__ ((__noreturn__)) void rb_exc_fatal(VALUE);
5719 __attribute__ ((__noreturn__)) VALUE rb_f_exit(int, const VALUE*);
5720 __attribute__ ((__noreturn__)) VALUE rb_f_abort(int, const VALUE*);
5721 void rb_remove_method(VALUE, const char*);
5723 #define HAVE_RB_DEFINE_ALLOC_FUNC 1
5728 void rb_clear_constant_cache(void);
5730 void rb_alias(VALUE, ID, ID);
5731 void rb_attr(VALUE,ID,int,int,int);
5732 int rb_method_boundp(VALUE, ID, int);
5734 VALUE rb_eval_cmd(VALUE, VALUE, int);
5736 int rb_obj_respond_to(VALUE, ID, int);
5737 int rb_respond_to(VALUE, ID);
5739 __attribute__ ((__noreturn__)) void rb_interrupt(void);
5741 void rb_backtrace(void);
5742 ID rb_frame_this_func(void);
5743 VALUE rb_obj_instance_eval(int, const VALUE*, VALUE);
5744 VALUE rb_obj_instance_exec(int, const VALUE*, VALUE);
5745 VALUE rb_mod_module_eval(int, const VALUE*, VALUE);
5746 VALUE rb_mod_module_exec(int, const VALUE*, VALUE);
5747 void rb_load(VALUE, int);
5748 void rb_load_protect(VALUE, int, int*);
5749 __attribute__ ((__noreturn__)) void rb_jump_tag(int);
5750 int rb_provided(const char*);
5751 int rb_feature_provided(const char *, const char **);
5752 void rb_provide(const char*);
5756 void rb_obj_call_init(VALUE, int, const VALUE*);
5757 void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
5758 VALUE rb_class_new_instance(int, const VALUE*, VALUE);
5759 VALUE rb_class_new_instance_kw(int, const VALUE*, VALUE, int);
5760 VALUE rb_block_proc(void);
5761 VALUE rb_block_lambda(void);
5768 int rb_proc_arity(VALUE);
5770 VALUE rb_binding_new(void);
5773 VALUE rb_method_call(int, const VALUE*, VALUE);
5774 VALUE rb_method_call_kw(int, const VALUE*, VALUE, int);
5776 VALUE rb_method_call_with_block_kw(int, const VALUE *, VALUE, VALUE, int);
5779 VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
5780 void rb_set_end_proc(void (*)(VALUE), VALUE);
5781 void rb_thread_schedule(void);
5782 void rb_thread_wait_fd(int);
5783 int rb_thread_fd_writable(int);
5784 void rb_thread_fd_close(int);
5785 int rb_thread_alone(void);
5786 void rb_thread_sleep(int);
5787 void rb_thread_sleep_forever(void);
5788 void rb_thread_sleep_deadly(void);
5789 VALUE rb_thread_stop(void);
5794 VALUE rb_thread_create(VALUE (*)(void *), void*);
5795 int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
5796 void rb_thread_wait_for(struct timeval);
5797 VALUE rb_thread_current(void);
5798 VALUE rb_thread_main(void);
5801 void rb_thread_atfork(void);
5802 void rb_thread_atfork_before_exec(void);
5807 VALUE rb_dir_getwd(void);
5808 VALUE rb_file_s_expand_path(int, const VALUE *);
5810 VALUE rb_file_s_absolute_path(int, const VALUE *);
5812 VALUE rb_file_dirname(VALUE fname);
5813 int rb_find_file_ext_safe(VALUE*, const char* const*, int);
5815 int rb_find_file_ext(VALUE*, const char* const*);
5819 int rb_is_absolute_path(const char *);
5820 __attribute__((cold)) __attribute__ ((__noreturn__)) void rb_memerror(void);
5821 __attribute__ ((__pure__)) int rb_during_gc(void);
5822 void rb_gc_mark_locations(const VALUE*, const VALUE*);
5823 void rb_mark_tbl(struct st_table*);
5824 void rb_mark_tbl_no_pin(struct st_table*);
5825 void rb_mark_set(struct st_table*);
5826 void rb_mark_hash(struct st_table*);
5828 void rb_gc_mark_maybe(VALUE);
5829 void rb_gc_mark(VALUE);
5833 void rb_gc(void);
5835 VALUE rb_gc_enable(void);
5836 VALUE rb_gc_disable(void);
5837 VALUE rb_gc_start(void);
5840 size_t rb_gc_count(void);
5841 size_t rb_gc_stat(VALUE);
5845 #define st_foreach_safe rb_st_foreach_safe
5849 VALUE rb_hash_new(void);
5860 VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
5861 void rb_hash_bulk_insert(long, const VALUE *, VALUE);
5862 typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
5864 struct st_table *rb_hash_tbl(VALUE, const char *file, int line);
5865 int rb_path_check(const char*);
5866 int rb_env_path_tainted(void);
5867 VALUE rb_env_clear(void);
5870 #define rb_defout rb_stdout
5871 extern VALUE rb_fs;
5872 extern VALUE rb_output_fs;
5873 extern VALUE rb_rs;
5874 extern VALUE rb_default_rs;
5875 extern VALUE rb_output_rs;
5887 VALUE rb_io_printf(int, const VALUE*, VALUE);
5888 VALUE rb_io_print(int, const VALUE*, VALUE);
5889 VALUE rb_io_puts(int, const VALUE*, VALUE);
5890 VALUE rb_io_fdopen(int, int, const char*);
5892 VALUE rb_file_open(const char*, const char*);
5893 VALUE rb_file_open_str(VALUE, const char*);
5894 VALUE rb_gets(void);
5895 void rb_write_error(const char*);
5896 void rb_write_error2(const char*, long);
5897 void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
5898 int rb_pipe(int *pipes);
5899 int rb_reserved_fd_p(int fd);
5900 int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
5901 int rb_cloexec_dup(int oldfd);
5902 int rb_cloexec_dup2(int oldfd, int newfd);
5903 int rb_cloexec_pipe(int fildes[2]);
5904 int rb_cloexec_fcntl_dupfd(int fd, int minfd);
5905 #define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
5906 void rb_update_max_fd(int fd);
5907 void rb_fd_fix_cloexec(int fd);
5910 void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
5911 __attribute__ ((__noreturn__)) void rb_num_zerodiv(void);
5912 #define RB_NUM_COERCE_FUNCS_NEED_OPID 1
5918 VALUE rb_fix2str(VALUE, int);
5919 __attribute__ ((__const__)) VALUE rb_dbl_cmp(double, double);
5920 int rb_eql(VALUE, VALUE);
5930 __attribute__ ((__pure__)) VALUE rb_obj_tainted(VALUE);
5940 __attribute__ ((__pure__)) VALUE rb_class_real(VALUE);
5944 VALUE rb_convert_type(VALUE,int,const char*,const char*);
5945 VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
5946 VALUE rb_check_to_integer(VALUE, const char *);
5956 double rb_cstr_to_dbl(const char*, int);
5957 double rb_str_to_dbl(VALUE, int);
5959 __attribute__ ((__const__)) int rb_is_const_id(ID);
5960 __attribute__ ((__const__)) int rb_is_global_id(ID);
5961 __attribute__ ((__const__)) int rb_is_instance_id(ID);
5962 __attribute__ ((__const__)) int rb_is_attrset_id(ID);
5963 __attribute__ ((__const__)) int rb_is_class_id(ID);
5964 __attribute__ ((__const__)) int rb_is_local_id(ID);
5965 __attribute__ ((__const__)) int rb_is_junk_id(ID);
5966 int rb_symname_p(const char*);
5968 VALUE rb_backref_get(void);
5969 void rb_backref_set(VALUE);
5970 VALUE rb_lastline_get(void);
5971 void rb_lastline_set(VALUE);
5972 void rb_last_status_set(int status, pid_t pid);
5974 int rb_proc_exec(const char*);
5975 __attribute__ ((__noreturn__)) VALUE rb_f_exec(int, const VALUE*);
5976 pid_t rb_waitpid(pid_t pid, int *status, int flags);
5977 void rb_syswait(pid_t pid);
5978 pid_t rb_spawn(int, const VALUE*);
5979 pid_t rb_spawn_err(int, const VALUE*, char*, size_t);
5982 VALUE rb_range_new(VALUE, VALUE, int);
5983 VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
5984 int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
5985 unsigned int rb_genrand_int32(void);
5986 double rb_genrand_real(void);
5987 void rb_reset_random_seed(void);
5988 VALUE rb_random_bytes(VALUE rnd, long n);
5990 unsigned int rb_random_int32(VALUE rnd);
5991 double rb_random_real(VALUE rnd);
5992 unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
5993 unsigned long rb_genrand_ulong_limited(unsigned long i);
5994 #define rb_memcmp memcmp
5995 int rb_memcicmp(const void*,const void*,long);
5996 void rb_match_busy(VALUE);
5999 int rb_reg_backref_number(VALUE match, VALUE backref);
6004 #define HAVE_RB_REG_NEW_STR 1
6005 VALUE rb_reg_new_str(VALUE, int);
6006 VALUE rb_reg_new(const char *, long, int);
6007 VALUE rb_reg_alloc(void);
6008 VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
6011 int rb_reg_options(VALUE);
6012 #define rb_argv rb_get_argv()
6013 extern VALUE rb_argv0;
6014 VALUE rb_get_argv(void);
6015 void *rb_load_file(const char*);
6016 void *rb_load_file_str(VALUE);
6017 VALUE rb_f_kill(int, const VALUE*);
6018 #define posix_signal ruby_posix_signal
6019 void (*ruby_posix_signal(int, void (*)(int)))(int);
6020 const char *ruby_signal_name(int);
6021 void ruby_default_signal(int);
6022 VALUE rb_f_sprintf(int, const VALUE*);
6023 VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
6024 VALUE rb_vsprintf(const char*, va_list);
6025 VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
6028 VALUE rb_str_new(const char*, long);
6029 VALUE rb_str_new_cstr(const char*);
6032 VALUE rb_str_new_with_class(VALUE, const char*, long);
6034 VALUE rb_tainted_str_new(const char*, long);
6035 VALUE rb_external_str_new(const char*, long);
6037 VALUE rb_locale_str_new(const char*, long);
6039 VALUE rb_filesystem_str_new(const char*, long);
6041 VALUE rb_str_buf_new(long);
6044 VALUE rb_str_tmp_new(long);
6045 VALUE rb_usascii_str_new(const char*, long);
6047 VALUE rb_utf8_str_new(const char*, long);
6049 VALUE rb_str_new_static(const char *, long);
6050 VALUE rb_usascii_str_new_static(const char *, long);
6051 VALUE rb_utf8_str_new_static(const char *, long);
6052 void rb_str_free(VALUE);
6066 #define rb_str_dup_frozen rb_str_new_frozen
6069 long rb_str_sublen(VALUE, long);
6070 VALUE rb_str_substr(VALUE, long, long);
6071 VALUE rb_str_subseq(VALUE, long, long);
6072 char *rb_str_subpos(VALUE, long, long*);
6073 void rb_str_modify(VALUE);
6074 void rb_str_modify_expand(VALUE, long);
6076 void rb_str_set_len(VALUE, long);
6077 VALUE rb_str_resize(VALUE, long);
6078 VALUE rb_str_cat(VALUE, const char*, long);
6079 VALUE rb_str_cat_cstr(VALUE, const char*);
6080 VALUE rb_str_cat2(VALUE, const char*);
6083 st_index_t rb_memhash(const void *ptr, long len);
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)
6094 int rb_str_cmp(VALUE, VALUE);
6095 VALUE rb_str_equal(VALUE str1, VALUE str2);
6097 void rb_str_update(VALUE, long, long, VALUE);
6101 VALUE rb_str_split(VALUE, const char*);
6105 long rb_str_strlen(VALUE);
6107 long rb_str_offset(VALUE, long);
6108 __attribute__ ((__pure__)) size_t rb_str_capacity(VALUE);
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)
6143 VALUE rb_struct_new(VALUE, ...);
6144 VALUE rb_struct_define(const char*, ...);
6145 VALUE rb_struct_define_under(VALUE, const char*, ...);
6156 VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
6157 typedef void rb_unblock_function_t(void *);
6159 void rb_thread_check_ints(void);
6160 int rb_thread_interrupted(VALUE thval);
6161 #define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
6162 #define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
6163 VALUE rb_mutex_new(void);
6166 VALUE rb_mutex_lock(VALUE mutex);
6167 VALUE rb_mutex_unlock(VALUE mutex);
6168 VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
6170 struct timespec;
6171 void rb_timespec_now(struct timespec *);
6172 VALUE rb_time_new(time_t, long);
6174 VALUE rb_time_timespec_new(const struct timespec *, int);
6176 struct timeval rb_time_interval(VALUE num);
6184 void rb_set_class_path(VALUE, VALUE, const char*);
6187 VALUE rb_path2class(const char*);
6191 VALUE rb_f_trace_var(int, const VALUE*);
6192 VALUE rb_f_untrace_var(int, const VALUE*);
6194 void rb_alias_variable(ID, ID);
6205 void *rb_mod_const_at(VALUE, void*);
6206 void *rb_mod_const_of(VALUE, void*);
6207 VALUE rb_const_list(void*);
6208 VALUE rb_mod_constants(int, const VALUE *, VALUE);
6210 int rb_const_defined(VALUE, ID);
6216 void rb_const_set(VALUE, ID, VALUE);
6219 void rb_cvar_set(VALUE, ID, VALUE);
6221 void rb_cv_set(VALUE, const char*, VALUE);
6222 VALUE rb_cv_get(VALUE, const char*);
6223 void rb_define_class_variable(VALUE, const char*, VALUE);
6224 VALUE rb_mod_class_variables(int, const VALUE*, VALUE);
6226 ID rb_frame_callee(void);
6227 int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
6230 VALUE rb_make_backtrace(void);
6231 VALUE rb_make_exception(int, const VALUE*);
6232 
6233 #pragma GCC visibility pop
6234 
6235 #define rb_f_notimplement_p(f) __builtin_types_compatible_p(__typeof__(f),__typeof__(rb_f_notimplement))
6236 static inline void
6237 rb_clone_setup(VALUE clone, VALUE obj)
6238 {
6240  ((struct RBasic*)(obj))->flags & ~(((VALUE)RUBY_FL_PROMOTED0)|((VALUE)RUBY_FL_PROMOTED1)|((VALUE)RUBY_FL_FINALIZE)));
6241  rb_singleton_class_attached((((struct RBasic*)(clone))->klass), clone);
6242  if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(clone, obj);
6243 }
6244 static inline void
6245 rb_dup_setup(VALUE dup, VALUE obj)
6246 {
6247  rb_obj_setup(dup, rb_obj_class(obj), (((struct RBasic*)(obj))->flags&(RUBY_FL_DUPPED)));
6248  if (((!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((obj)))->flags&((RUBY_FL_EXIVAR))):0)) rb_copy_generic_ivar(dup, obj);
6249 }
6250 static inline long
6251 rb_array_len(VALUE a)
6252 {
6253  return (((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ?
6254  (long)((((struct RBasic*)(a))->flags >> RARRAY_EMBED_LEN_SHIFT) & ((VALUE)RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : ((struct RArray*)(a))->as.heap.len;
6255 }
6256 #define FIX_CONST_VALUE_PTR(x) (x)
6257 static inline const VALUE *
6258 rb_array_const_ptr_transient(VALUE a)
6259 {
6260  return ((((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ? ((struct RArray*)(a))->as.ary : ((struct RArray*)(a))->as.heap.ptr);
6261 }
6262 static inline const VALUE *
6263 rb_array_const_ptr(VALUE a)
6264 {
6265  void rb_ary_detransient(VALUE a);
6266  if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
6267  rb_ary_detransient(a);
6268  }
6269  return rb_array_const_ptr_transient(a);
6270 }
6271 static inline VALUE *
6272 rb_array_ptr_use_start(VALUE a, int allow_transient)
6273 {
6275  if (!allow_transient) {
6276  if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
6277  void rb_ary_detransient(VALUE a);
6278  rb_ary_detransient(a);
6279  }
6280  }
6281  (void)allow_transient;
6282  return rb_ary_ptr_use_start(a);
6283 }
6284 static inline void
6285 rb_array_ptr_use_end(VALUE a, int allow_transient)
6286 {
6287  void rb_ary_ptr_use_end(VALUE a);
6288  rb_ary_ptr_use_end(a);
6289  (void)allow_transient;
6290 }
6291 #define RUBY_VM 1
6292 #define HAVE_NATIVETHREAD
6293 int ruby_native_thread_p(void);
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
6324 typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
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)
6358 int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
6359 int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
6360 #define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
6361 #define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
6362 unsigned long ruby_strtoul(const char *str, char **endptr, int base);
6363 #define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
6364 #define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
6365 int ruby_snprintf(char *str, size_t n, char const *fmt, ...) __attribute__((format(printf, 3, 4)));
6366 int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
6367 int rb_empty_keyword_given_p(void);
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__))
6369 __attribute__ ((__error__ ("bad scan arg format"))) void rb_scan_args_bad_format(const char*);
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)
6381 __attribute__ ((__always_inline__)) static int rb_scan_args_lead_p(const char *fmt);
6382 static inline int
6383 rb_scan_args_lead_p(const char *fmt)
6384 {
6385  return ((unsigned char)((fmt[0])-'0')<10);
6386 }
6387 __attribute__ ((__always_inline__)) static int rb_scan_args_n_lead(const char *fmt);
6388 static inline int
6389 rb_scan_args_n_lead(const char *fmt)
6390 {
6391  return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
6392 }
6393 __attribute__ ((__always_inline__)) static int rb_scan_args_opt_p(const char *fmt);
6394 static inline int
6395 rb_scan_args_opt_p(const char *fmt)
6396 {
6397  return (rb_scan_args_lead_p(fmt) && ((unsigned char)((fmt[1])-'0')<10));
6398 }
6399 __attribute__ ((__always_inline__)) static int rb_scan_args_n_opt(const char *fmt);
6400 static inline int
6401 rb_scan_args_n_opt(const char *fmt)
6402 {
6403  return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
6404 }
6405 __attribute__ ((__always_inline__)) static int rb_scan_args_var_idx(const char *fmt);
6406 static inline int
6407 rb_scan_args_var_idx(const char *fmt)
6408 {
6409  return (!rb_scan_args_lead_p(fmt) ? 0 : !((unsigned char)((fmt[1])-'0')<10) ? 1 : 2);
6410 }
6411 __attribute__ ((__always_inline__)) static int rb_scan_args_f_var(const char *fmt);
6412 static inline int
6413 rb_scan_args_f_var(const char *fmt)
6414 {
6415  return (fmt[rb_scan_args_var_idx(fmt)]=='*');
6416 }
6417 __attribute__ ((__always_inline__)) static int rb_scan_args_trail_idx(const char *fmt);
6418 static inline int
6419 rb_scan_args_trail_idx(const char *fmt)
6420 {
6421  const int idx = rb_scan_args_var_idx(fmt);
6422  return idx+(fmt[idx]=='*');
6423 }
6424 __attribute__ ((__always_inline__)) static int rb_scan_args_n_trail(const char *fmt);
6425 static inline int
6426 rb_scan_args_n_trail(const char *fmt)
6427 {
6428  const int idx = rb_scan_args_trail_idx(fmt);
6429  return (((unsigned char)((fmt[idx])-'0')<10) ? fmt[idx]-'0' : 0);
6430 }
6431 __attribute__ ((__always_inline__)) static int rb_scan_args_hash_idx(const char *fmt);
6432 static inline int
6433 rb_scan_args_hash_idx(const char *fmt)
6434 {
6435  const int idx = rb_scan_args_trail_idx(fmt);
6436  return idx+((unsigned char)((fmt[idx])-'0')<10);
6437 }
6438 __attribute__ ((__always_inline__)) static int rb_scan_args_f_hash(const char *fmt);
6439 static inline int
6440 rb_scan_args_f_hash(const char *fmt)
6441 {
6442  return (fmt[rb_scan_args_hash_idx(fmt)]==':');
6443 }
6444 __attribute__ ((__always_inline__)) static int rb_scan_args_block_idx(const char *fmt);
6445 static inline int
6446 rb_scan_args_block_idx(const char *fmt)
6447 {
6448  const int idx = rb_scan_args_hash_idx(fmt);
6449  return idx+(fmt[idx]==':');
6450 }
6451 __attribute__ ((__always_inline__)) static int rb_scan_args_f_block(const char *fmt);
6452 static inline int
6453 rb_scan_args_f_block(const char *fmt)
6454 {
6455  return (fmt[rb_scan_args_block_idx(fmt)]=='&');
6456 }
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);
6459 inline int
6461  int n_lead, int n_opt, int n_trail,
6462  int f_var, int f_hash, int f_block,
6463  VALUE *vars[], char *fmt __attribute__ ((unused)), int varc __attribute__ ((unused)))
6464 {
6465  int i, argi = 0, vari = 0, last_idx = -1;
6466  VALUE *var, hash = ((VALUE)RUBY_Qnil), last_hash = 0;
6467  const int n_mand = n_lead + n_trail;
6468  int keyword_given = rb_keyword_given_p();
6469  int empty_keyword_given = 0;
6470  VALUE tmp_buffer = 0;
6471  if (!keyword_given) {
6472  empty_keyword_given = rb_empty_keyword_given_p();
6473  }
6474  if (argc > 0 && !(f_hash && empty_keyword_given)) {
6475  VALUE last = argv[argc - 1];
6476  if (f_hash && n_mand < argc) {
6477  if (keyword_given) {
6478  if (!( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
6479  rb_warn("Keyword flag set when calling rb_scan_args, but last entry is not a hash");
6480  }
6481  else {
6482  hash = last;
6483  }
6484  }
6485  else if (!((VALUE)(last) != ((VALUE)RUBY_Qnil))) {
6486  if (!f_var && n_mand + n_opt < argc) {
6487  rb_warn("The last argument is nil, treating as empty keywords");
6488  argc--;
6489  }
6490  }
6491  else {
6492  hash = rb_check_hash_type(last);
6493  }
6494  if (!!((VALUE)(hash) != ((VALUE)RUBY_Qnil))) {
6495  VALUE opts = rb_extract_keywords(&hash);
6496  if (!(last_hash = hash)) {
6497  if (!keyword_given) {
6498  rb_warn("Using the last argument as keyword parameters is deprecated");
6499  }
6500  argc--;
6501  }
6502  else {
6503  rb_warn("The last argument is split into positional and keyword parameters");
6504  last_idx = argc - 1;
6505  }
6506  hash = opts ? opts : ((VALUE)RUBY_Qnil);
6507  }
6508  }
6509  else if (f_hash && keyword_given && n_mand == argc) {
6510  rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
6511  }
6512  }
6513  if (f_hash && n_mand > 0 && n_mand == argc+1 && empty_keyword_given) {
6514  VALUE *ptr = (VALUE *)rb_alloc_tmp_buffer2(&tmp_buffer, argc+1, sizeof(VALUE));
6515  ((__builtin_object_size(ptr, 0) != (size_t)-1) ? __builtin___memcpy_chk(ptr, argv, sizeof(VALUE)*argc, __builtin_object_size(ptr, 0)) : __memcpy_ichk(ptr, argv, sizeof(VALUE)*argc));
6516  ptr[argc] = rb_hash_new();
6517  argc++;
6518  *(&argv) = ptr;
6519  rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
6520  }
6521  if (argc < n_mand) {
6522  goto argc_error;
6523  }
6524  for (i = n_lead; i-- > 0; ) {
6525  var = vars[vari++];
6526  if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6527  argi++;
6528  }
6529  for (i = n_opt; i-- > 0; ) {
6530  var = vars[vari++];
6531  if (argi < argc - n_trail) {
6532  if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6533  argi++;
6534  }
6535  else {
6536  if (var) *var = ((VALUE)RUBY_Qnil);
6537  }
6538  }
6539  if (f_var) {
6540  int n_var = argc - argi - n_trail;
6541  var = vars[vari++];
6542  if (0 < n_var) {
6543  if (var) {
6544  int f_last = (last_idx + 1 == argc - n_trail);
6545  *var = rb_ary_new_from_values(n_var-f_last, &argv[argi]);
6546  if (f_last) rb_ary_push(*var, last_hash);
6547  }
6548  argi += n_var;
6549  }
6550  else {
6551  if (var) *var = rb_ary_new();
6552  }
6553  }
6554  for (i = n_trail; i-- > 0; ) {
6555  var = vars[vari++];
6556  if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6557  argi++;
6558  }
6559  if (f_hash) {
6560  var = vars[vari++];
6561  if (var) *var = hash;
6562  }
6563  if (f_block) {
6564  var = vars[vari++];
6565  if (rb_block_given_p()) {
6566  *var = rb_block_proc();
6567  }
6568  else {
6569  *var = ((VALUE)RUBY_Qnil);
6570  }
6571  }
6572  if (argi < argc) {
6573  argc_error:
6574  if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
6575  rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
6576  }
6577  if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
6578  return argc;
6579 }
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
6583 #undef snprintf
6584 #undef vsnprintf
6585 #define snprintf ruby_snprintf
6586 #define vsnprintf ruby_vsnprintf
6587 void ruby_sysinit(int *argc, char ***argv);
6588 void ruby_init(void);
6589 void* ruby_options(int argc, char** argv);
6590 int ruby_executable_node(void *n, int *status);
6591 int ruby_run_node(void *n);
6592 void ruby_show_version(void);
6593 void ruby_show_copyright(void);
6594 #define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
6595 void ruby_init_stack(volatile VALUE*);
6596 int ruby_setup(void);
6597 int ruby_cleanup(volatile int);
6598 void ruby_finalize(void);
6599 __attribute__ ((__noreturn__)) void ruby_stop(int);
6600 void ruby_set_stack_size(size_t);
6601 int ruby_stack_check(void);
6602 size_t ruby_stack_length(VALUE**);
6603 int ruby_exec_node(void *n);
6604 void ruby_script(const char* name);
6606 void ruby_prog_init(void);
6607 void ruby_set_argv(int, char**);
6608 void *ruby_process_options(int, char**);
6609 void ruby_init_loadpath(void);
6610 void ruby_incpush(const char*);
6611 void ruby_sig_finalize(void);
6612 
6613 #pragma GCC visibility pop
6614 
6615 #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
6616 #define _STDBOOL_H
6617 #define bool _Bool
6618 #define true 1
6619 #define false 0
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))
6625 #undef NO_SANITIZE
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)
6650 {
6651  if (x == 0) return 4 * 8;
6652  return (unsigned int)__builtin_clz(x);
6653 }
6654 static inline unsigned int
6655 nlz_long(unsigned long x)
6656 {
6657  if (x == 0) return 4 * 8;
6658  return (unsigned int)__builtin_clzl(x);
6659 }
6660 static inline unsigned int
6661 nlz_long_long(unsigned long long x)
6662 {
6663  if (x == 0) return 8 * 8;
6664  return (unsigned int)__builtin_clzll(x);
6665 }
6666 static inline unsigned int
6667 nlz_intptr(uintptr_t x)
6668 {
6669  return nlz_int(x);
6670 }
6671 static inline unsigned int
6672 rb_popcount32(uint32_t x)
6673 {
6674  return (unsigned int)__builtin_popcount(x);
6675 }
6676 static inline int
6677 rb_popcount64(uint64_t x)
6678 {
6679  return __builtin_popcountll(x);
6680 }
6681 static inline int
6682 rb_popcount_intptr(uintptr_t x)
6683 {
6684  return rb_popcount32(x);
6685 }
6686 static inline int
6687 ntz_int32(uint32_t x)
6688 {
6689  return __builtin_ctz(x);
6690 }
6691 static inline int
6692 ntz_int64(uint64_t x)
6693 {
6694  return __builtin_ctzll(x);
6695 }
6696 static inline int
6697 ntz_intptr(uintptr_t x)
6698 {
6699  return ntz_int32(x);
6700 }
6701 #define DLONG LONG_LONG
6702 #define DL2NUM(x) LL2NUM(x)
6703 static inline long
6704 rb_overflowed_fix_to_int(long x)
6705 {
6706  return (long)((unsigned long)(x >> 1) ^ (1LU << (4 * 8 - 1)));
6707 }
6708 static inline VALUE
6709 rb_fix_plus_fix(VALUE x, VALUE y)
6710 {
6711  long lz;
6712  if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
6713  return rb_int2big(rb_overflowed_fix_to_int(lz));
6714  }
6715  else {
6716  return (VALUE)lz;
6717  }
6718 }
6719 static inline VALUE
6720 rb_fix_minus_fix(VALUE x, VALUE y)
6721 {
6722  long lz;
6723  if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
6724  return rb_int2big(rb_overflowed_fix_to_int(lz));
6725  }
6726  else {
6727  return (VALUE)lz;
6728  }
6729 }
6730 static inline VALUE
6731 rb_fix_mul_fix(VALUE x, VALUE y)
6732 {
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);
6736 }
6737 static inline void
6738 rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
6739 {
6740  long x = ((long)(((long)(a))>>(int)(1)));
6741  long y = ((long)(((long)(b))>>(int)(1)));
6742  long div, mod;
6743  if (x == (((long)(-0x7fffffffL -1L))>>(int)(1)) && y == -1) {
6744  if (divp) *divp = rb_long2num_inline(-(((long)(-0x7fffffffL -1L))>>(int)(1)));
6745  if (modp) *modp = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
6746  return;
6747  }
6748  div = x / y;
6749  mod = x % y;
6750  if (y > 0 ? mod < 0 : mod > 0) {
6751  mod += y;
6752  div -= 1;
6753  }
6754  if (divp) *divp = (((VALUE)(div))<<1 | RUBY_FIXNUM_FLAG);
6755  if (modp) *modp = (((VALUE)(mod))<<1 | RUBY_FIXNUM_FLAG);
6756 }
6757 static inline VALUE
6758 rb_fix_div_fix(VALUE x, VALUE y)
6759 {
6760  VALUE div;
6761  rb_fix_divmod_fix(x, y, &div, ((void *)0));
6762  return div;
6763 }
6764 static inline VALUE
6765 rb_fix_mod_fix(VALUE x, VALUE y)
6766 {
6767  VALUE mod;
6768  rb_fix_divmod_fix(x, y, ((void *)0), &mod);
6769  return mod;
6770 }
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)
6793 struct RBignum {
6794  struct RBasic basic;
6795  union {
6796  struct {
6797  size_t len;
6798  unsigned int *digits;
6799  } heap;
6800  unsigned int ary[(4*RVALUE_EMBED_LEN_MAX/4)];
6801  } as;
6802 };
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))
6816 struct RRational {
6817  struct RBasic basic;
6818  VALUE num;
6819  VALUE den;
6820 };
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))
6824 struct RFloat {
6825  struct RBasic basic;
6826  double float_value;
6827 };
6828 #define RFLOAT(obj) (R_CAST(RFloat)(obj))
6829 struct RComplex {
6830  struct RBasic basic;
6831  VALUE real;
6832  VALUE imag;
6833 };
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))
6838  RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
6839  RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
6840  RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
6841 #define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
6842  RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
6844  RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
6846 #define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
6847  RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
6851 };
6852 #define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
6853 void rb_hash_st_table_set(VALUE hash, st_table *st);
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)
6868 typedef unsigned char ar_hint_t;
6869 struct RHash {
6870  struct RBasic basic;
6871  union {
6872  st_table *st;
6873  struct ar_table_struct *ar;
6874  } as;
6875  const VALUE ifnone;
6876  union {
6877  ar_hint_t ary[4];
6878  VALUE word;
6880 };
6881 #undef RHASH_IFNONE
6882 #undef RHASH_SIZE
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))
6885 struct RMoved {
6886  VALUE flags;
6888  VALUE next;
6889 };
6890 extern void ruby_init_setproctitle(int argc, char *argv[]);
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
6894 enum {
6896  RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
6898  RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
6900 };
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)
6904 struct RStruct {
6905  struct RBasic basic;
6906  union {
6907  struct {
6908  long len;
6909  const VALUE *ptr;
6910  } heap;
6912  } as;
6913 };
6914 #undef RSTRUCT_LEN
6915 #undef RSTRUCT_PTR
6916 #undef RSTRUCT_SET
6917 #undef RSTRUCT_GET
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))
6926 static inline long
6927 rb_struct_len(VALUE st)
6928 {
6929  return (((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ?
6930  (long)((((struct RBasic*)(st))->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : ((struct RStruct*)(st))->as.heap.len;
6931 }
6932 static inline const VALUE *
6933 rb_struct_const_ptr(VALUE st)
6934 {
6935  return ((((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ? ((struct RStruct*)(st))->as.ary : ((struct RStruct*)(st))->as.heap.ptr);
6936 }
6937 static inline const VALUE *
6938 rb_struct_const_heap_ptr(VALUE st)
6939 {
6940  return ((struct RStruct*)(st))->as.heap.ptr;
6941 }
6943  char conflict[sizeof(VALUE) * 3];
6944 };
6945 struct rb_subclass_entry;
6946 typedef struct rb_subclass_entry rb_subclass_entry_t;
6947 struct rb_subclass_entry {
6948  VALUE klass;
6950 };
6951 typedef unsigned long long rb_serial_t;
6952 #define SERIALT2NUM ULL2NUM
6953 #define PRI_SERIALT_PREFIX PRI_LL_PREFIX
6954 #define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
6955 struct rb_classext_struct {
6956  struct st_table *iv_index_tbl;
6957  struct st_table *iv_tbl;
6958  struct rb_id_table *const_tbl;
6959  struct rb_id_table *callable_m_tbl;
6964  const VALUE origin_;
6965  const VALUE refined_class;
6967  const VALUE includer;
6968 };
6969 typedef struct rb_classext_struct rb_classext_t;
6970 #undef RClass
6971 struct RClass {
6972  struct RBasic basic;
6973  VALUE super;
6974  rb_classext_t *ptr;
6976 };
6977 void rb_class_subclass_add(VALUE super, VALUE klass);
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
6993 static inline void
6994 RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
6995 {
6996  rb_obj_write((VALUE)(klass), (VALUE *)(&((((struct RClass*)(klass))->ptr)->origin_)), (VALUE)(origin), "../ruby-2.7.2/internal.h", 1091);
6997  if (klass != origin) ((!(((VALUE)(origin) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(origin) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(origin))->flags & RUBY_T_MASK) != RUBY_T_NODE) ? (void)(((struct RBasic*)(origin))->flags |= (((VALUE)RUBY_FL_USER5))) : (void)0);
6998 }
6999 static inline void
7000 RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
7001 {
7002  rb_obj_write((VALUE)(iclass), (VALUE *)(&((((struct RClass*)(iclass))->ptr)->includer)), (VALUE)(klass), "../ruby-2.7.2/internal.h", 1098);
7003 }
7004 #undef RCLASS_SUPER
7005 static inline VALUE
7007 {
7008  return ((struct RClass*)(klass))->super;
7009 }
7010 static inline VALUE
7011 RCLASS_SET_SUPER(VALUE klass, VALUE super)
7012 {
7013  if (super) {
7015  rb_class_subclass_add(super, klass);
7016  }
7017  rb_obj_write((VALUE)(klass), (VALUE *)(&((struct RClass*)(klass))->super), (VALUE)(super), "../ruby-2.7.2/internal.h", 1115);
7018  return super;
7019 }
7020 #define IMEMO_DEBUG 0
7021 struct RIMemo {
7022  VALUE flags;
7023  VALUE v0;
7024  VALUE v1;
7025  VALUE v2;
7026  VALUE v3;
7027 };
7040 };
7041 #define IMEMO_MASK 0x0f
7042 static inline enum imemo_type
7044 {
7045  return (((struct RBasic*)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
7046 }
7047 static inline int
7048 imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
7049 {
7050  if ((__builtin_expect(!!(!(((VALUE)(imemo) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(imemo) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))), 1))) {
7051  const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
7052  const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
7053  return expected_type == (((struct RBasic*)(imemo))->flags & mask);
7054  }
7055  else {
7056  return 0;
7057  }
7058 }
7059 VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
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
7066 struct vm_svar {
7067  VALUE flags;
7068  const VALUE cref_or_me;
7069  const VALUE lastline;
7070  const VALUE backref;
7071  const VALUE others;
7072 };
7073 #define THROW_DATA_CONSUMED IMEMO_FL_USER0
7074 struct vm_throw_data {
7075  VALUE flags;
7076  VALUE reserved;
7077  const VALUE throw_obj;
7078  const struct rb_control_frame_struct *catch_frame;
7079  int throw_state;
7080 };
7081 #define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
7082 struct vm_ifunc_argc {
7083  signed int min: (4 * 8) / 2;
7084  signed int max: (4 * 8) / 2;
7085 };
7086 struct vm_ifunc {
7087  VALUE flags;
7088  VALUE reserved;
7090  const void *data;
7091  struct vm_ifunc_argc argc;
7092 };
7093 #define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7094 struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
7095 static inline struct vm_ifunc *
7096 rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
7097 {
7098  return rb_vm_ifunc_new(func, data, 0, (-1));
7099 }
7100 typedef struct rb_imemo_tmpbuf_struct {
7101  VALUE flags;
7102  VALUE reserved;
7103  VALUE *ptr;
7104  struct rb_imemo_tmpbuf_struct *next;
7105  size_t cnt;
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)
7112 {
7113  return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
7114 }
7115 static inline VALUE
7116 rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
7117 {
7118  const void *src;
7119  VALUE imemo;
7120  rb_imemo_tmpbuf_t *tmpbuf;
7121  void *dst;
7122  size_t len;
7123  rb_string_value(&(str));
7124  imemo = rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
7125  tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
7126  len = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str))->as.heap.len);
7127  src = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
7128  dst = ruby_xmalloc(len);
7129  ((__builtin_object_size(dst, 0) != (size_t)-1) ? __builtin___memcpy_chk(dst, src, len, __builtin_object_size(dst, 0)) : __memcpy_ichk(dst, src, len));
7130  tmpbuf->ptr = dst;
7131  return imemo;
7132 }
7133 void rb_strterm_mark(VALUE obj);
7134 struct MEMO {
7135  VALUE flags;
7136  VALUE reserved;
7137  const VALUE v1;
7138  const VALUE v2;
7139  union {
7140  long cnt;
7141  long state;
7142  const VALUE value;
7143  void (*func)(void);
7144  } u3;
7145 };
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
7158 enum {
7163 };
7164 struct cmp_opt_data {
7165  unsigned int opt_methods;
7166  unsigned int opt_inited;
7167 };
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))
7172 struct rb_global_entry {
7173  struct rb_global_variable *var;
7174  ID id;
7175 };
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);
7185 VALUE rb_ary_last(int, const VALUE *, VALUE);
7186 void rb_ary_set_len(VALUE, long);
7188 VALUE rb_ary_tmp_new_fill(long capa);
7191 size_t rb_ary_memsize(VALUE);
7195 VALUE rb_ary_behead(VALUE, long);
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); })
7197 static inline VALUE
7198 rb_ary_entry_internal(VALUE ary, long offset)
7199 {
7200  long len = rb_array_len(ary);
7201  const VALUE *ptr = rb_array_const_ptr_transient(ary);
7202  if (len == 0) return ((VALUE)RUBY_Qnil);
7203  if (offset < 0) {
7204  offset += len;
7205  if (offset < 0) return ((VALUE)RUBY_Qnil);
7206  }
7207  else if (len <= offset) {
7208  return ((VALUE)RUBY_Qnil);
7209  }
7210  return ptr[offset];
7211 }
7212 void rb_obj_info_dump(VALUE obj);
7213 void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
7214 void ruby_debug_breakpoint(void);
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()
7218 extern const char ruby_digitmap[];
7219 double rb_big_fdiv_double(VALUE x, VALUE y);
7224 size_t rb_big_size(VALUE);
7227 VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
7234 VALUE rb_big_gt(VALUE x, VALUE y);
7235 VALUE rb_big_ge(VALUE x, VALUE y);
7236 VALUE rb_big_lt(VALUE x, VALUE y);
7237 VALUE rb_big_le(VALUE x, VALUE y);
7238 VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
7247 VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
7254 void Init_class_hierarchy(void);
7256 void rb_undef_methods_from(VALUE klass, VALUE super);
7258 struct rb_block;
7259 struct rb_iseq_struct;
7260 int rb_dvar_defined(ID, const struct rb_iseq_struct *);
7261 int rb_local_defined(ID, const struct rb_iseq_struct *);
7262 const char * rb_insns_name(int i);
7264 int rb_vm_insn_addr2insn(const void *);
7265 VALUE rb_dbl_complex_new_polar_pi(double abs, double ang);
7266 struct rb_thread_struct;
7267 struct rb_fiber_struct;
7270 void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
7271 void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber);
7272 void ruby_debug_printf(const char*, ...) __attribute__((format(printf, 1, 2)));
7274 void Init_enc(void);
7275 void Init_ext(void);
7276 ID rb_id_encoding(void);
7277 int rb_encdb_replicate(const char *alias, const char *orig);
7278 int rb_encdb_alias(const char *alias, const char *orig);
7279 int rb_encdb_dummy(const char *name);
7280 void rb_encdb_declare(const char *name);
7281 void rb_enc_set_base(const char *name, const char *orig);
7282 int rb_enc_set_dummy(int index);
7283 void rb_encdb_set_unicode(int index);
7284 __attribute__ ((__pure__)) int rb_data_is_encoding(VALUE obj);
7285 extern VALUE rb_cArithSeq;
7286 VALUE rb_f_send(int argc, VALUE *argv, VALUE recv);
7287 VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary);
7288 extern VALUE rb_eEAGAIN;
7289 extern VALUE rb_eEWOULDBLOCK;
7290 extern VALUE rb_eEINPROGRESS;
7291 void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
7292 __attribute__ ((__noreturn__)) void rb_async_bug_errno(const char *,int);
7293 const char *rb_builtin_type_name(int t);
7295 void rb_warn_deprecated(const char *fmt, const char *suggest, ...) __attribute__((format(printf, 1, 3)));
7296 typedef enum {
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))))
7306 VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
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))
7309 VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
7310 VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
7311 #define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
7312 VALUE rb_warning_string(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
7313 __attribute__ ((__noreturn__)) void rb_vraise(VALUE, const char *, va_list);
7317 #define id_signo ruby_static_id_signo
7318 #define id_status ruby_static_id_status
7319 __attribute__ ((__noreturn__)) VALUE rb_f_raise(int argc, VALUE *argv);
7321 void rb_call_end_proc(VALUE data);
7322 void rb_mark_end_proc(void);
7323 extern const char ruby_null_device[];
7324 VALUE rb_home_dir_of(VALUE user, VALUE result);
7326 VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
7327 void rb_file_const(const char*, VALUE);
7328 int rb_file_load_ok(const char *);
7333 void Init_File(void);
7334 int ruby_is_fd_loadable(int fd);
7335 #pragma GCC visibility push(default)
7336 __attribute__ ((__noreturn__)) void rb_sys_fail_path_in(const char *func_name, VALUE path);
7337 __attribute__ ((__noreturn__)) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
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))
7342 extern int ruby_disable_gc;
7343 struct rb_objspace;
7344 void Init_heap(void);
7345 void *ruby_mimmalloc(size_t size) __attribute__((__malloc__));
7346 void ruby_mimfree(void *ptr);
7351 void ruby_gc_set_params(void);
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)
7357 #undef NEWOBJF_OF
7358 #undef RB_NEWOBJ_OF
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)
7361 __attribute__((__alloc_align__(1)))
7362 void *rb_aligned_malloc(size_t, size_t) __attribute__((__malloc__)) __attribute__ ((alloc_size (2)));
7363 size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
7364 size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
7365 void *rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__));
7366 void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
7367 void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
7368 void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
7369 struct st_table *rb_hash_tbl_raw(VALUE hash);
7370 #define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
7375 long rb_dbl_long_hash(double d);
7380 VALUE rb_hash_keys(VALUE hash);
7381 VALUE rb_hash_values(VALUE hash);
7382 VALUE rb_hash_rehash(VALUE hash);
7384 int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
7385 VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
7387 int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
7388 
7389 #pragma GCC visibility push(default)
7390 
7392 
7393 #pragma GCC visibility pop
7394 
7397 void rb_call_inits(void);
7398 void ruby_set_inplace_mode(const char *);
7401 int rb_stderr_tty_p(void);
7402 void rb_io_fptr_finalize_internal(void *ptr);
7403 #define rb_io_fptr_finalize rb_io_fptr_finalize_internal
7405 int rb_require_internal(VALUE fname);
7406 __attribute__ ((__noreturn__)) void rb_load_fail(VALUE, const char*);
7407 extern const char ruby_exec_prefix[];
7408 extern const char ruby_initial_load_paths[];
7415 VALUE rb_math_log(int argc, const VALUE *argv);
7418 extern _Bool mjit_enabled;
7419 VALUE mjit_pause(_Bool wait_p);
7421 void mjit_finish(_Bool close_handle_p);
7422 void Init_newline(void);
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
7434 };
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)
7438 int rb_num_to_uint(VALUE val, unsigned int *ret);
7439 VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
7440 double ruby_float_step_size(double beg, double end, double unit, int excl);
7441 int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
7442 double ruby_float_mod(double x, double y);
7444 VALUE rb_int_succ(VALUE num);
7450 VALUE rb_int_mul(VALUE x, VALUE y);
7455 VALUE rb_int2str(VALUE num, int base);
7457 VALUE rb_fix_aref(VALUE fix, VALUE idx);
7458 VALUE rb_int_gt(VALUE x, VALUE y);
7459 int rb_float_cmp(VALUE x, VALUE y);
7461 VALUE rb_int_ge(VALUE x, VALUE y);
7463 double rb_int_fdiv_double(VALUE x, VALUE y);
7464 VALUE rb_int_pow(VALUE x, VALUE y);
7466 VALUE rb_int_cmp(VALUE x, VALUE y);
7469 VALUE rb_int_and(VALUE x, VALUE y);
7471 VALUE rb_int_div(VALUE x, VALUE y);
7472 VALUE rb_int_abs(VALUE num);
7473 VALUE rb_int_odd_p(VALUE num);
7474 int rb_int_positive_p(VALUE num);
7475 int rb_int_negative_p(VALUE num);
7476 VALUE rb_num_pow(VALUE x, VALUE y);
7477 VALUE rb_float_ceil(VALUE num, int ndigits);
7478 static inline VALUE
7479 rb_num_compare_with_zero(VALUE num, ID mid)
7480 {
7481  VALUE zero = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
7482  VALUE r = rb_check_funcall(num, mid, 1, &zero);
7483  if (r == ((VALUE)RUBY_Qundef)) {
7484  rb_cmperr(num, zero);
7485  }
7486  return r;
7487 }
7488 static inline int
7489 rb_num_positive_int_p(VALUE num)
7490 {
7491  const ID mid = '>';
7492  if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
7494  return ((long)(num) > (long)(((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG));
7495  }
7496  else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
7498  return ((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0);
7499  }
7500  return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
7501 }
7502 static inline int
7503 rb_num_negative_int_p(VALUE num)
7504 {
7505  const ID mid = '<';
7506  if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
7508  return ((long)(num) < 0);
7509  }
7510  else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
7512  return (!((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0));
7513  }
7514  return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
7515 }
7516 VALUE rb_float_abs(VALUE flt);
7520 static inline double
7521 rb_float_flonum_value(VALUE v)
7522 {
7523  return 0.0;
7524 }
7525 static inline double
7526 rb_float_noflonum_value(VALUE v)
7527 {
7528  return ((struct RFloat *)v)->float_value;
7529 }
7530 static inline double
7531 rb_float_value_inline(VALUE v)
7532 {
7533  if (0) {
7534  return rb_float_flonum_value(v);
7535  }
7536  return rb_float_noflonum_value(v);
7537 }
7538 static inline VALUE
7539 rb_float_new_inline(double d)
7540 {
7541  return rb_float_new_in_heap(d);
7542 }
7543 #define rb_float_value(v) rb_float_value_inline(v)
7544 #define rb_float_new(d) rb_float_new_inline(d)
7545 void rb_obj_copy_ivar(VALUE dest, VALUE obj);
7546 __attribute__ ((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
7547 __attribute__ ((__const__)) VALUE rb_obj_not(VALUE obj);
7549 __attribute__ ((__noreturn__)) void rb_undefined_alloc(VALUE klass);
7550 double rb_num_to_dbl(VALUE val);
7551 VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
7554 VALUE rb_convert_type_with_id(VALUE,int,const char*,ID);
7555 VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
7556 int rb_bool_expected(VALUE, const char *);
7557 struct RBasicRaw {
7558  VALUE flags;
7559  VALUE klass;
7560 };
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
7566 
7567 #pragma GCC visibility push(default)
7568 
7569 VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
7570 
7571 #pragma GCC visibility pop
7572 
7573 void *rb_parser_load_file(VALUE parser, VALUE name);
7578 __attribute__ ((__pure__)) int rb_is_const_sym(VALUE sym);
7579 __attribute__ ((__pure__)) int rb_is_attrset_sym(VALUE sym);
7580 ID rb_make_internal_id(void);
7584 int rb_block_arity(void);
7585 int rb_block_min_max_arity(int *max);
7588 VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
7589 #define RB_MAX_GROUPS (65536)
7590 struct waitpid_state;
7591 struct rb_execarg {
7592  union {
7593  struct {
7595  } sh;
7596  struct {
7599  VALUE argv_str;
7600  VALUE argv_buf;
7601  } cmd;
7604  VALUE envp_str;
7605  VALUE envp_buf;
7607  unsigned use_shell : 1;
7608  unsigned pgroup_given : 1;
7609  unsigned umask_given : 1;
7610  unsigned unsetenv_others_given : 1;
7611  unsigned unsetenv_others_do : 1;
7612  unsigned close_others_given : 1;
7613  unsigned close_others_do : 1;
7614  unsigned chdir_given : 1;
7615  unsigned new_pgroup_given : 1;
7616  unsigned new_pgroup_flag : 1;
7617  unsigned uid_given : 1;
7618  unsigned gid_given : 1;
7619  unsigned exception : 1;
7620  unsigned exception_given : 1;
7621  struct waitpid_state *waitpid_state;
7628  VALUE fd_dup2;
7629  VALUE fd_close;
7630  VALUE fd_open;
7633  VALUE path_env;
7634  VALUE chdir_dir;
7635 };
7636 #define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
7637 static inline size_t
7638 ARGVSTR2ARGC(VALUE argv_str)
7639 {
7640  size_t i = 0;
7641  char *const *p = ((char **)((void *)(((const struct rb_imemo_tmpbuf_struct *)(argv_str))->ptr)) + 1);
7642  while (p[i++])
7643  ;
7644  return i - 1;
7645 }
7646 pid_t rb_fork_ruby(int *status);
7647 void rb_last_status_clear(void);
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])
7653 VALUE rb_rational_plus(VALUE self, VALUE other);
7654 VALUE rb_rational_mul(VALUE self, VALUE other);
7655 VALUE rb_lcm(VALUE x, VALUE y);
7657 VALUE rb_cstr_to_rat(const char *, int);
7659 VALUE rb_rational_cmp(VALUE self, VALUE other);
7660 VALUE rb_rational_pow(VALUE self, VALUE other);
7664 VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
7666 long rb_reg_search0(VALUE, VALUE, long, int, int);
7667 VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
7668 _Bool rb_reg_start_with_p(VALUE re, VALUE str);
7669 void rb_backref_set_string(VALUE string, long pos, long len);
7670 void rb_match_unbusy(VALUE);
7671 int rb_match_count(VALUE match);
7672 int rb_match_nth_defined(int nth, VALUE match);
7673 VALUE rb_reg_new_ary(VALUE ary, int options);
7674 extern int ruby_enable_coredump;
7675 int rb_get_next_signal(void);
7677 VALUE rb_fstring_new(const char *ptr, long len);
7678 #define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
7679 #define rb_fstring_literal(str) rb_fstring_lit(str)
7680 VALUE rb_fstring_cstr(const char *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) )
7682 int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
7683 int rb_str_symname_p(VALUE);
7686 #define QUOTE(str) rb_str_quote_unprintable(str)
7687 #define QUOTE_ID(id) rb_id_quote_unprintable(id)
7688 char *rb_str_fill_terminator(VALUE str, const int termlen);
7689 void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
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)
7698 size_t rb_str_memsize(VALUE);
7699 VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
7701 char *rb_str_to_cstr(VALUE str);
7702 VALUE rb_str_eql(VALUE str1, VALUE str2);
7704 const char *ruby_escaped_char(int c);
7706 static inline VALUE
7707 rb_str_eql_internal(const VALUE str1, const VALUE str2)
7708 {
7709  const long len = (!(((struct RBasic*)(str1))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str1))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str1))->as.heap.len);
7710  const char *ptr1, *ptr2;
7711  if (len != (!(((struct RBasic*)(str2))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(str2))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(str2))->as.heap.len)) return ((VALUE)RUBY_Qfalse);
7712  if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
7713  if ((ptr1 = (!(((struct RBasic*)(str1))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str1))->as.ary : ((struct RString*)(str1))->as.heap.ptr)) == (ptr2 = (!(((struct RBasic*)(str2))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str2))->as.ary : ((struct RString*)(str2))->as.heap.ptr)))
7714  return ((VALUE)RUBY_Qtrue);
7715  if (memcmp(ptr1, ptr2, len) == 0)
7716  return ((VALUE)RUBY_Qtrue);
7717  return ((VALUE)RUBY_Qfalse);
7718 }
7719 VALUE rb_sym_intern_ascii(const char *ptr, long len);
7720 VALUE rb_sym_intern_ascii_cstr(const char *ptr);
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); })
7726 struct timeval rb_time_timeval(VALUE);
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
7736 VALUE rb_get_coverages(void);
7737 int rb_get_coverage_mode(void);
7743 int rb_thread_to_be_killed(VALUE thread);
7744 void rb_mutex_allow_trap(VALUE self, int val);
7745 VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
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)
7754 void rb_gc_mark_global_tbl(void);
7758 VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
7759 void rb_autoload_str(VALUE mod, ID id, VALUE file);
7761 void rb_deprecate_constant(VALUE mod, const char *name);
7765 _Bool rb_gvar_is_traced(const struct rb_global_entry *);
7766 void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
7769 void rb_vm_mark(void *ptr);
7770 void Init_BareVM(void);
7771 void Init_vm_objects(void);
7772 __attribute__ ((__pure__)) VALUE rb_vm_top_self(void);
7774 const void **rb_vm_get_insns_address_table(void);
7775 VALUE rb_source_location(int *pline);
7776 const char *rb_source_location_cstr(int *pline);
7777 static void rb_vm_pop_cfunc_frame(void);
7778 int rb_vm_add_root_module(ID id, VALUE module);
7781 VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
7783 __attribute__ ((__pure__)) st_table *rb_vm_fstring_table(void);
7784 void rb_print_backtrace(void);
7785 void Init_vm_eval(void);
7786 VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *);
7789 typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
7790 VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
7792 VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv,
7793  rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
7794 const char *rb_type_str(enum ruby_value_type type);
7796 VALUE rb_yield_1(VALUE val);
7798 VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
7799  rb_block_call_func_t bl_proc, int min_argc, int max_argc,
7800  VALUE data2);
7803 void Init_vm_stack_canary(void);
7804 void Init_eval_method(void);
7813  MISSING_NONE = 0x40
7814 };
7819 struct rb_calling_info;
7820 struct rb_call_data;
7821 #define CACHELINE 64
7822 struct rb_call_cache {
7825  (64
7826  - sizeof(rb_serial_t)
7827  - sizeof(struct rb_callable_method_entry_struct *)
7828  - sizeof(uintptr_t)
7829  - sizeof(enum method_missing_reason)
7830  - sizeof(VALUE (*)(
7831  struct rb_execution_context_struct *e,
7832  struct rb_control_frame_struct *,
7833  struct rb_calling_info *,
7834  const struct rb_call_data *)))
7835  / sizeof(rb_serial_t)
7836  ];
7837  const struct rb_callable_method_entry_struct *me;
7839  VALUE (*call)(struct rb_execution_context_struct *ec,
7840  struct rb_control_frame_struct *cfp,
7841  struct rb_calling_info *calling,
7842  struct rb_call_data *cd);
7843  union {
7844  unsigned int index;
7846  } aux;
7847 };
7848 _Static_assert(sizeof(struct rb_call_cache) <= 64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE");
7849 struct rb_call_info {
7850  ID mid;
7851  unsigned int flag;
7852  int orig_argc;
7853 };
7854 struct rb_call_data {
7855  struct rb_call_cache cc;
7856  struct rb_call_info ci;
7857 };
7858 __attribute__ ((__visibility__("default"))) extern
7859 __attribute__ ((__nonnull__(1))) VALUE rb_funcallv_with_cc(struct rb_call_data*, VALUE, ID, int, const VALUE*);
7860 __attribute__ ((__visibility__("default"))) extern
7861 __attribute__ ((__nonnull__(1))) _Bool rb_method_basic_definition_p_with_cc(struct rb_call_data *, VALUE, ID);
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); })
7864 void Init_vm_backtrace(void);
7865 VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
7867 VALUE rb_make_backtrace(void);
7869 int rb_backtrace_p(VALUE obj);
7872 void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
7873 
7874 #pragma GCC visibility push(default)
7875 
7876 const char *rb_objspace_data_type_name(VALUE obj);
7877 VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
7878 void rb_ary_detransient(VALUE a);
7880 void rb_ary_ptr_use_end(VALUE ary);
7887 VALUE rb_big2str_poweroftwo(VALUE x, int base);
7888 VALUE rb_big2str_generic(VALUE x, int base);
7889 VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
7890 VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
7891 VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
7895 VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck);
7901  RB_INT_PARSE_DEFAULT = 0x07
7902 };
7903 VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
7904 VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv,
7905  rb_enumerator_size_func *size_fn,
7906  VALUE beg, VALUE end, VALUE step, int excl);
7907 int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
7908 __attribute__ ((__noreturn__)) void rb_unexpected_type(VALUE,int);
7909 #undef Check_Type
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)
7911 static inline int
7912 rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
7913 {
7914  return ( ((RUBY_T_DATA) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_DATA) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_DATA) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_DATA) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_DATA) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_DATA) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_DATA) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_DATA))) && (((struct RTypedData*)(obj))->typed_flag == 1) && ((((struct RTypedData*)(obj))->type) == data_type);
7915 }
7916 #define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
7918 VALUE rb_ident_hash_new(void);
7919 void rb_maygvl_fd_fix_cloexec(int fd);
7920 int rb_gc_for_fd(int err);
7921 void rb_write_error_str(VALUE mesg);
7922 VALUE rb_int_positive_pow(long x, unsigned long y);
7923 int rb_opts_exception_p(VALUE opts, int default_value);
7924 int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
7925 pid_t rb_fork_async_signal_safe(int *status, int (*chfunc)(void*, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen);
7926 VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt);
7927 struct rb_execarg *rb_execarg_get(VALUE execarg_obj);
7928 int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
7929 void rb_execarg_parent_start(VALUE execarg_obj);
7930 void rb_execarg_parent_end(VALUE execarg_obj);
7931 int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
7932 VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
7933 void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
7934 VALUE rb_gcd(VALUE x, VALUE y);
7935 VALUE rb_gcd_normal(VALUE self, VALUE other);
7937 int rb_grantpt(int fd);
7940 VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
7942 int ruby_thread_has_gvl_p(void);
7943 void ruby_reset_leap_second_info(void);
7944 extern const signed char ruby_digit36_to_number_table[];
7945 extern const char ruby_hexdigits[];
7946 extern unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow);
7948 void rb_mv_generic_ivar(VALUE src, VALUE dst);
7950 int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
7951 void rb_iv_tbl_copy(VALUE dst, VALUE src);
7954 size_t rb_obj_memsize_of(VALUE);
7956 #define RB_OBJ_GC_FLAGS_MAX 6
7957 size_t rb_obj_gc_flags(VALUE, ID[], size_t);
7958 void rb_gc_mark_values(long n, const VALUE *values);
7959 void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
7960 VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
7961 int ruby_fill_random_bytes(void *, size_t, int);
7962 
7963 #pragma GCC visibility pop
7964 
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)
7981 #undef RB_OBJ_WRITE
7982 #define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
7983 #define RUBY_VM_H 1
7984 
7985 #pragma GCC visibility push(default)
7986 
7987 typedef struct rb_vm_struct ruby_vm_t;
7989 void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
7990 
7991 #pragma GCC visibility pop
7992 
7993 #define vm_exec rb_vm_exec
7994 #define RUBY_GC_H 1
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)
8009 const char *rb_obj_info(VALUE obj);
8010 const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
8012 struct rb_thread_struct;
8013 
8014 #pragma GCC visibility push(default)
8015 
8017 void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
8018 void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
8024  int (*callback)(void *start, void *end, size_t stride, void *data),
8025  void *data);
8027  int (*callback)(void *, void *, size_t, void *),
8028  void *data);
8029 
8030 #pragma GCC visibility pop
8031 
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)
8035 #define VMDEBUG 0
8036 #undef assert
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
8148  NODE_LAST
8149 };
8150 typedef struct rb_code_position_struct {
8151  int lineno;
8152  int column;
8154 typedef struct rb_code_location_struct {
8158 static inline rb_code_location_t
8159 code_loc_gen(rb_code_location_t *loc1, rb_code_location_t *loc2)
8160 {
8161  rb_code_location_t loc;
8162  loc.beg_pos = loc1->beg_pos;
8163  loc.end_pos = loc2->end_pos;
8164  return loc;
8165 }
8166 typedef struct RNode {
8167  VALUE flags;
8168  union {
8169  struct RNode *node;
8170  ID id;
8171  VALUE value;
8172  ID *tbl;
8173  } u1;
8174  union {
8175  struct RNode *node;
8176  ID id;
8177  long argc;
8178  VALUE value;
8179  } u2;
8180  union {
8181  struct RNode *node;
8182  ID id;
8183  long state;
8184  struct rb_global_entry *entry;
8185  struct rb_args_info *args;
8186  struct rb_ary_pattern_info *apinfo;
8187  VALUE value;
8188  } u3;
8190  int node_id;
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)
8367 
8368 #pragma GCC visibility push(default)
8369 
8370 typedef struct node_buffer_struct node_buffer_t;
8371 typedef struct rb_ast_body_struct {
8372  const NODE *root;
8374  int line_count;
8376 typedef struct rb_ast_struct {
8377  VALUE flags;
8381 rb_ast_t *rb_ast_new(void);
8382 void rb_ast_mark(rb_ast_t*);
8385 void rb_ast_dispose(rb_ast_t*);
8386 void rb_ast_free(rb_ast_t*);
8387 size_t rb_ast_memsize(const rb_ast_t*);
8391 VALUE rb_parser_new(void);
8395 VALUE rb_parser_dump_tree(const NODE *node, int comment);
8396 void rb_parser_set_options(VALUE, int, int, int, int);
8397 rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
8398 rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
8399 rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
8400 rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
8401 void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
8402 const char *ruby_node_name(int node);
8403 const struct kwtable *rb_reserved_word(const char *, unsigned int);
8404 struct rb_args_info {
8405  NODE *pre_init;
8406  NODE *post_init;
8407  int pre_args_num;
8408  int post_args_num;
8410  ID rest_arg;
8411  ID block_arg;
8412  NODE *kw_args;
8413  NODE *kw_rest_arg;
8414  NODE *opt_args;
8415  unsigned int no_kwarg: 1;
8416  unsigned int ruby2_keywords: 1;
8417  VALUE imemo;
8418 };
8419 struct rb_ary_pattern_info {
8420  NODE *pre_args;
8421  NODE *rest_arg;
8422  NODE *post_args;
8423  VALUE imemo;
8424 };
8425 struct parser_params;
8426 void *rb_parser_malloc(struct parser_params *, size_t);
8427 void *rb_parser_realloc(struct parser_params *, void *, size_t);
8428 void *rb_parser_calloc(struct parser_params *, size_t, size_t);
8429 void rb_parser_free(struct parser_params *, void *);
8430 void rb_parser_printf(struct parser_params *parser, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
8431 
8432 #pragma GCC visibility pop
8433 
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
8456 #define RUBY_ID_H
8460  RUBY_ID_INSTANCE = (0x01<<1),
8461  RUBY_ID_GLOBAL = (0x03<<1),
8462  RUBY_ID_ATTRSET = (0x04<<1),
8463  RUBY_ID_CONST = (0x05<<1),
8464  RUBY_ID_CLASS = (0x06<<1),
8465  RUBY_ID_JUNK = (0x07<<1),
8468  RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
8469 };
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)
8515  idDot2 = 128,
8516  idDot3 = 129,
8517  idUPlus = 132,
8518  idUMinus = 133,
8519  idPow = 134,
8520  idCmp = 135,
8521  idPLUS = '+',
8522  idMINUS = '-',
8523  idMULT = '*',
8524  idDIV = '/',
8525  idMOD = '%',
8526  idLTLT = 136,
8527  idGTGT = 137,
8528  idLT = '<',
8529  idLE = 138,
8530  idGT = '>',
8531  idGE = 139,
8532  idEq = 140,
8533  idEqq = 141,
8534  idNeq = 142,
8535  idNot = '!',
8536  idAnd = '&',
8537  idOr = '|',
8539  idEqTilde = 143,
8540  idNeqTilde = 144,
8541  idAREF = 145,
8542  idASET = 146,
8543  idCOLON2 = 147,
8544  idANDOP = 148,
8545  idOROP = 149,
8546  idANDDOT = 150,
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)
8724 };
8725 #define RUBY_METHOD_H 1
8726 #define END_OF_ENUMERATION(key)
8727 typedef enum {
8732  METHOD_VISI_MASK = 0x03
8734 typedef struct rb_scope_visi_struct {
8736  unsigned int module_func : 1;
8738 typedef struct rb_cref_struct {
8739  VALUE flags;
8741  VALUE klass;
8742  struct rb_cref_struct * next;
8745 typedef struct rb_method_entry_struct {
8746  VALUE flags;
8748  struct rb_method_definition_struct * const def;
8749  ID called_id;
8750  VALUE owner;
8752 typedef struct rb_callable_method_entry_struct {
8753  VALUE flags;
8754  const VALUE defined_class;
8755  struct rb_method_definition_struct * const def;
8756  ID called_id;
8757  const VALUE owner;
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)
8763 static inline void
8764 METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
8765 {
8766  ((void)0);
8767  me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
8768 }
8769 static inline void
8770 METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
8771 {
8772  ((void)0);
8773  me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
8774 }
8775 static inline void
8776 METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
8777 {
8778  ((void)0);
8779  ((void)0);
8780  me->flags =
8781  (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8782  ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
8783 }
8784 static inline void
8785 METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
8786 {
8787  dst->flags =
8788  (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8789  (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
8790 }
8791 typedef enum {
8804 
8806 #define VM_METHOD_TYPE_MINIMUM_BITS 4
8807 _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<<VM_METHOD_TYPE_MINIMUM_BITS)");
8808 typedef struct rb_iseq_struct rb_iseq_t;
8809 #define rb_iseq_t rb_iseq_t
8810 typedef struct rb_method_iseq_struct {
8811  rb_iseq_t * iseqptr;
8812  rb_cref_t * cref;
8814 typedef struct rb_method_cfunc_struct {
8815  VALUE (*func)();
8816  VALUE (*invoker)(VALUE recv, int argc, const VALUE *argv, VALUE (*func)());
8817  int argc;
8819 typedef struct rb_method_attr_struct {
8820  ID id;
8821  VALUE location;
8823 typedef struct rb_method_alias_struct {
8826 typedef struct rb_method_refined_struct {
8828  VALUE owner;
8830 typedef struct rb_method_bmethod_struct {
8831  VALUE proc;
8832  struct rb_hook_list_struct *hooks;
8839 };
8842  int alias_count : 28;
8843  int complemented_count : 28;
8844  union {
8852  } body;
8853  ID original_id;
8855 };
8857 _Static_assert(__builtin_offsetof (rb_method_definition_t, body)==8, "sizeof_method_def" ": " "offsetof(rb_method_definition_t, body)==8");
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))
8862 void rb_add_refined_method_entry(VALUE refined_class, ID mid);
8863 void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi);
8871 
8872 #pragma GCC visibility push(default)
8873 
8875 
8876 #pragma GCC visibility pop
8877 
8882 int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2);
8887 const rb_callable_method_entry_t *rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class);
8890 VALUE rb_unnamed_parameters(int arity);
8891 #define RUBY_ATOMIC_H
8892 typedef unsigned int rb_atomic_t;
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)
8910 #define CCAN_LIST_H
8911 #undef assert
8912 #define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, __ASSERT_FUNC, #__e))
8913 #define __ASSERT_FUNC __func__
8914 void __assert (const char *, int, const char *)
8915  __attribute__ ((__noreturn__));
8916 void __assert_func (const char *, int, const char *, const char *)
8917  __attribute__ ((__noreturn__));
8918 #define static_assert _Static_assert
8919 #define CCAN_STR_H
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)
8928 {
8929  return member_ptr ? (char *)member_ptr - offset : ((void *)0);
8930 }
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)
8936 {
8937  struct list_node *next, *prev;
8938 };
8940 {
8941  struct list_node n;
8942 };
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)
8949 {
8950  h->n.next = h->n.prev = &h->n;
8951 }
8952 static inline void list_node_init(struct list_node *n)
8953 {
8954  n->next = n->prev = n;
8955 }
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,
8958  struct list_node *p,
8959  struct list_node *n,
8960  const char *abortstr)
8961 {
8962  n->next = p->next;
8963  n->prev = p;
8964  p->next->prev = n;
8965  p->next = n;
8966  (void)((void)abortstr, h);
8967 }
8968 #define list_add(h,n) list_add_(h, n, LIST_LOC)
8969 static inline void list_add_(struct list_head *h,
8970  struct list_node *n,
8971  const char *abortstr)
8972 {
8973  list_add_after_(h, &h->n, n, abortstr);
8974 }
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,
8977  struct list_node *p,
8978  struct list_node *n,
8979  const char *abortstr)
8980 {
8981  n->next = p;
8982  n->prev = p->prev;
8983  p->prev->next = n;
8984  p->prev = n;
8985  (void)((void)abortstr, h);
8986 }
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,
8989  struct list_node *n,
8990  const char *abortstr)
8991 {
8992  list_add_before_(h, &h->n, n, abortstr);
8993 }
8994 #define list_empty(h) list_empty_(h, LIST_LOC)
8995 static inline int list_empty_(const struct list_head *h, const char* abortstr)
8996 {
8997  (void)((void)abortstr, h);
8998  return h->n.next == &h->n;
8999 }
9000 #define list_empty_nodebug(h) list_empty(h)
9001 static inline _Bool list_empty_nocheck(const struct list_head *h)
9002 {
9003  return h->n.next == &h->n;
9004 }
9005 #define list_del(n) list_del_(n, LIST_LOC)
9006 static inline void list_del_(struct list_node *n, const char* abortstr)
9007 {
9008  (void)((void)abortstr, n);
9009  n->next->prev = n->prev;
9010  n->prev->next = n->next;
9011 }
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)
9014 {
9015  list_del_(n, abortstr);
9016  list_node_init(n);
9017 }
9018 static inline void list_del_from(struct list_head *h, struct list_node *n)
9019 {
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");
9022 }
9023 #define list_swap(o,n) list_swap_(o, n, LIST_LOC)
9024 static inline void list_swap_(struct list_node *o,
9025  struct list_node *n,
9026  const char* abortstr)
9027 {
9028  (void)((void)abortstr, o);
9029  *n = *o;
9030  n->next->prev = n;
9031  n->prev->next = n;
9032 }
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)
9036 {
9037  if (list_empty_(h, "../ruby-2.7.2/ccan/list/list.h" ":" "399"))
9038  return ((void *)0);
9039  return (const char *)h->n.next - off;
9040 }
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)
9043 {
9044  struct list_node *n;
9045  if (list_empty_(h, "../ruby-2.7.2/ccan/list/list.h" ":" "425"))
9046  return ((void *)0);
9047  n = h->n.next;
9048  list_del_(n, "../ruby-2.7.2/ccan/list/list.h" ":" "428");
9049  return (const char *)n - off;
9050 }
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)
9053 {
9054  if (list_empty_(h, "../ruby-2.7.2/ccan/list/list.h" ":" "451"))
9055  return ((void *)0);
9056  return (const char *)h->n.prev - off;
9057 }
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,
9066  struct list_head *from,
9067  const char *abortstr)
9068 {
9069  struct list_node *from_tail = ((void)abortstr, from)->n.prev;
9070  struct list_node *to_tail = ((void)abortstr, to)->n.prev;
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);
9077 }
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,
9080  struct list_head *from,
9081  const char *abortstr)
9082 {
9083  struct list_node *from_tail = ((void)abortstr, from)->n.prev;
9084  struct list_node *to_head = ((void)abortstr, to)->n.next;
9085  to->n.next = &from->n;
9086  from->n.prev = &to->n;
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);
9091 }
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)
9105 {
9106  return (void *)((char *)node - off);
9107 }
9108 static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
9109 {
9110  return (struct list_node *)((char *)ptr + off);
9111 }
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,
9116  const struct list_node *n,
9117  size_t off)
9118 {
9119  if (n == &h->n)
9120  return ((void *)0);
9121  return (char *)n - off;
9122 }
9123 #define RUBY_THREAD_NATIVE_H 1
9124 #define _SCHED_H_
9125 #define _SYS_SCHED_H_
9126 #define SCHED_OTHER 3
9127 #define SCHED_FIFO 1
9128 #define SCHED_RR 2
9129 struct sched_param {
9131 };
9133  pid_t __pid,
9134  const struct sched_param *__param
9135 );
9137  pid_t __pid,
9138  struct sched_param *__param
9139 );
9141  pid_t __pid,
9142  int __policy,
9143  const struct sched_param *__param
9144 );
9146  pid_t __pid
9147 );
9149  int __policy
9150 );
9152  int __policy
9153 );
9155  pid_t __pid,
9156  struct timespec *__interval
9157 );
9158 int sched_yield( void );
9159 int sched_getcpu(void);
9161 int sched_get_thread_affinity (void *, size_t, cpu_set_t *);
9162 int sched_setaffinity (pid_t, size_t, const cpu_set_t *);
9163 int sched_set_thread_affinity (void *, size_t, const cpu_set_t *);
9164 #define _PTHREAD_H
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));
9205 int pthread_attr_getstack (const pthread_attr_t *, void **, size_t *);
9206 int pthread_attr_setstack (pthread_attr_t *, void *, size_t);
9210 typedef void (*__cleanup_routine_type) (void *);
9212 {
9214  void *arg;
9218 void _pthread_cleanup_pop (int execute);
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 ); }
9226  pthread_mutex_t *, const struct timespec *);
9239  const pthread_barrierattr_t *, unsigned);
9243  void *(*)(void *), void *);
9246 void pthread_exit (void *) __attribute__ ((__noreturn__));
9250 int pthread_join (pthread_t, void **);
9251 int pthread_key_create (pthread_key_t *, void (*)(void *));
9280  const struct timespec *abstime);
9284  const struct timespec *abstime);
9289  int *pshared);
9292 int pthread_once (pthread_once_t *, void (*)(void));
9296 int pthread_setcancelstate (int, int *);
9297 int pthread_setcanceltype (int, int *);
9298 int pthread_setschedparam (pthread_t, int, const struct sched_param *);
9304 int pthread_getname_np (pthread_t, char *, size_t) __attribute__((__nonnull__(2)));
9306 int pthread_setname_np (pthread_t, const char *) __attribute__((__nonnull__(2)));
9307 int pthread_sigqueue (pthread_t *, int, const union sigval);
9308 int pthread_timedjoin_np (pthread_t, void **, const struct timespec *);
9310 int pthread_yield (void);
9315 
9316 #pragma GCC visibility push(default)
9317 
9323 
9324 #pragma GCC visibility pop
9325 
9326 #define RUBY_THREAD_PTHREAD_H
9327 #define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
9328 #define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
9330 typedef struct native_thread_data_struct {
9331  union {
9332  struct list_node ubf;
9333  struct list_node gvl;
9334  } node;
9335  struct
9336  {
9339  } cond;
9341 #undef except
9342 #undef try
9343 #undef leave
9344 #undef finally
9345 typedef struct rb_global_vm_lock_struct {
9346  const struct rb_thread_struct *owner;
9348  struct list_head waitq;
9349  const struct rb_thread_struct *timer;
9350  int timer_err;
9353  int need_yield;
9354  int wait_yield;
9356 #define _SETJMP_H_
9357 
9358 #define _JBLEN (13 * 4)
9359 typedef int jmp_buf[(13 * 4)];
9360 
9361 typedef int sigjmp_buf[(13 * 4)+1+(sizeof (sigset_t)/sizeof (int))];
9362 #define _SAVEMASK _JBLEN
9363 #define _SIGMASK (_JBLEN+1)
9364 #define _CYGWIN_WORKING_SIGSETJMP
9365 #define __SIGMASK_FUNC pthread_sigmask
9366 extern void siglongjmp (sigjmp_buf, int) __attribute__ ((__noreturn__));
9367 extern int sigsetjmp (sigjmp_buf, int);
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)); })
9370 extern void _longjmp (jmp_buf, int) __attribute__ ((__noreturn__));
9371 extern int _setjmp (jmp_buf);
9372 
9373 void longjmp (jmp_buf __jmpb, int __retval)
9374  __attribute__ ((__noreturn__));
9375 int setjmp (jmp_buf __jmpb);
9376 
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
9388 typedef unsigned long rb_num_t;
9389 typedef signed long rb_snum_t;
9400  RUBY_TAG_MASK = 0xf
9401 };
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
9414  VM_THROW_STATE_MASK = 0xff
9415 };
9416 struct rb_thread_struct;
9419 struct iseq_inline_cache_entry {
9421  const rb_cref_t *ic_cref;
9422  VALUE value;
9423 };
9426  size_t index;
9427 };
9429  struct {
9431  VALUE value;
9432  } once;
9435 };
9436 struct rb_call_info_kw_arg {
9437  int keyword_len;
9438  VALUE keywords[1];
9439 };
9440 struct rb_call_info_with_kwarg {
9441  struct rb_call_info ci;
9442  struct rb_call_info_kw_arg *kw_arg;
9443 };
9444 struct rb_calling_info {
9446  VALUE recv;
9447  int argc;
9448  int kw_splat;
9449 };
9450 struct rb_kwarg_call_data {
9451  struct rb_call_cache cc;
9453 };
9456 #define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
9457 #define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
9458 typedef struct rb_iseq_location_struct {
9459  VALUE pathobj;
9460  VALUE base_label;
9461  VALUE label;
9463  int node_id;
9466 #define PATHOBJ_PATH 0
9467 #define PATHOBJ_REALPATH 1
9468 static inline VALUE
9469 pathobj_path(VALUE pathobj)
9470 {
9471  if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
9472  return pathobj;
9473  }
9474  else {
9475  ((void)0);
9476  return (rb_array_const_ptr_transient(pathobj)[0]);
9477  }
9478 }
9479 static inline VALUE
9480 pathobj_realpath(VALUE pathobj)
9481 {
9482  if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
9483  return pathobj;
9484  }
9485  else {
9486  ((void)0);
9487  return (rb_array_const_ptr_transient(pathobj)[1]);
9488  }
9489 }
9490 struct rb_mjit_unit;
9491 struct rb_iseq_constant_body {
9492  enum iseq_type {
9493  ISEQ_TYPE_TOP,
9502  } type;
9503  unsigned int iseq_size;
9505  struct {
9506  struct {
9507  unsigned int has_lead : 1;
9508  unsigned int has_opt : 1;
9509  unsigned int has_rest : 1;
9510  unsigned int has_post : 1;
9511  unsigned int has_kw : 1;
9512  unsigned int has_kwrest : 1;
9513  unsigned int has_block : 1;
9514  unsigned int ambiguous_param0 : 1;
9515  unsigned int accepts_no_kwarg : 1;
9516  unsigned int ruby2_keywords: 1;
9518  unsigned int size;
9519  int lead_num;
9520  int opt_num;
9521  int rest_start;
9522  int post_start;
9523  int post_num;
9524  int block_start;
9525  const VALUE *opt_table;
9526  const struct rb_iseq_param_keyword {
9527  int num;
9528  int required_num;
9529  int bits_start;
9530  int rest_start;
9531  const ID *table;
9536  struct iseq_insn_info {
9537  const struct iseq_insn_info_entry *body;
9538  unsigned int *positions;
9539  unsigned int size;
9541  } insns_info;
9542  const ID *local_table;
9543  struct iseq_catch_table *catch_table;
9544  const struct rb_iseq_struct *parent_iseq;
9545  struct rb_iseq_struct *local_iseq;
9547  struct rb_call_data *call_data;
9548  struct {
9550  VALUE coverage;
9554  unsigned int local_table_size;
9555  unsigned int is_size;
9556  unsigned int ci_size;
9557  unsigned int ci_kw_size;
9558  unsigned int stack_max;
9559  char catch_except_p;
9561  struct rb_control_frame_struct *);
9562  long unsigned total_calls;
9565 };
9566 struct rb_iseq_struct {
9567  VALUE flags;
9568  VALUE wrapper;
9569  struct rb_iseq_constant_body *body;
9570  union {
9572  struct {
9573  VALUE obj;
9574  int index;
9576  struct {
9579  } exec;
9580  } aux;
9581 };
9582 #define USE_LAZY_LOAD 0
9583 static inline const rb_iseq_t *
9584 rb_iseq_check(const rb_iseq_t *iseq)
9585 {
9586  return iseq;
9587 }
9588 static inline const rb_iseq_t *
9589 def_iseq_ptr(rb_method_definition_t *def)
9590 {
9591  return rb_iseq_check(def->body.iseq.iseqptr);
9592 }
9600 };
9631  BOP_LAST_
9632 };
9633 #define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
9634 struct rb_vm_struct;
9635 typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
9636 typedef struct rb_at_exit_list {
9638  struct rb_at_exit_list *next;
9640 struct rb_objspace;
9641 struct rb_objspace *rb_objspace_alloc(void);
9642 void rb_objspace_free(struct rb_objspace *);
9644 typedef struct rb_hook_list_struct {
9645  struct rb_event_hook_struct *hooks;
9647  unsigned int need_clean;
9648  unsigned int running;
9650 typedef const struct rb_builtin_function *RB_BUILTIN;
9651 typedef struct rb_vm_struct {
9652  VALUE self;
9654  struct rb_thread_struct *main_thread;
9655  const struct rb_thread_struct *running_thread;
9659  struct list_head waiting_pids;
9660  struct list_head waiting_grps;
9661  struct list_head waiting_fds;
9662  struct list_head living_threads;
9664  int living_thread_num;
9665  volatile int ubf_async_safe;
9666  unsigned int running: 1;
9667  unsigned int thread_abort_on_exception: 1;
9668  unsigned int thread_report_on_exception: 1;
9669  unsigned int safe_level_: 1;
9670  int sleeper;
9673  VALUE top_self;
9674  VALUE load_path;
9681  struct st_table *loading_table;
9682  struct {
9683  VALUE cmd[33];
9688  int postponed_job_index;
9689  int src_encoding_index;
9690  struct list_head workqueue;
9693  VALUE coverages;
9694  int coverage_mode;
9696  struct rb_objspace *objspace;
9702  struct {
9703  size_t thread_vm_stack_size;
9705  size_t fiber_vm_stack_size;
9706  size_t fiber_machine_stack_size;
9708  short redefined_flag[BOP_LAST_];
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)
9734 struct rb_captured_block {
9735  VALUE self;
9736  const VALUE *ep;
9737  union {
9738  const rb_iseq_t *iseq;
9739  const struct vm_ifunc *ifunc;
9740  VALUE val;
9741  } code;
9742 };
9748 };
9754 };
9755 struct rb_block {
9756  union {
9757  struct rb_captured_block captured;
9758  VALUE symbol;
9759  VALUE proc;
9760  } as;
9761  enum rb_block_type type;
9762 };
9763 typedef struct rb_control_frame_struct {
9764  const VALUE *pc;
9765  VALUE *sp;
9766  const rb_iseq_t *iseq;
9767  VALUE self;
9768  const VALUE *ep;
9769  const void *block_code;
9770  VALUE *__bp__;
9773 static inline struct rb_thread_struct *
9774 rb_thread_ptr(VALUE thval)
9775 {
9777 }
9783 };
9784 typedef void *rb_jmpbuf_t[5];
9785 struct rb_vm_tag {
9786  VALUE tag;
9787  VALUE retval;
9788  rb_jmpbuf_t buf;
9789  struct rb_vm_tag *prev;
9790  enum ruby_tag_type state;
9791 };
9792 _Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
9793 _Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag), "rb_vm_tag_buf_end" ": " "offsetof(struct rb_vm_tag, buf) + sizeof(rb_jmpbuf_t) < sizeof(struct rb_vm_tag)");
9794 struct rb_vm_protect_tag {
9795  struct rb_vm_protect_tag *prev;
9796 };
9797 struct rb_unblock_callback {
9799  void *arg;
9800 };
9801 struct rb_mutex_struct;
9802 typedef struct rb_thread_list_struct{
9803  struct rb_thread_list_struct *next;
9804  struct rb_thread_struct *th;
9806 typedef struct rb_ensure_entry {
9807  VALUE marker;
9808  VALUE (*e_proc)(VALUE);
9809  VALUE data2;
9811 typedef struct rb_ensure_list {
9812  struct rb_ensure_list *next;
9813  struct rb_ensure_entry entry;
9815 typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3];
9816 typedef struct rb_fiber_struct rb_fiber_t;
9817 typedef struct rb_execution_context_struct {
9818  VALUE *vm_stack;
9819  size_t vm_stack_size;
9821  struct rb_vm_tag *tag;
9826  struct rb_thread_struct *thread_ptr;
9830  const VALUE *root_lep;
9831  VALUE root_svar;
9834  VALUE errinfo;
9839  struct {
9840  VALUE *stack_start;
9841  VALUE *stack_end;
9842  size_t stack_maxsize;
9843  __attribute__((aligned(4))) jmp_buf regs;
9846 #define VM_CORE_H_EC_DEFINED 1
9847 void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
9850 typedef struct rb_thread_struct {
9851  struct list_node vmlt_node;
9852  VALUE self;
9853  rb_vm_t *vm;
9856  struct rb_calling_info *calling;
9857  VALUE top_self;
9860  enum rb_thread_status status : 2;
9861  unsigned int to_kill : 1;
9862  unsigned int abort_on_exception: 1;
9863  unsigned int report_on_exception: 1;
9864  unsigned int pending_interrupt_queue_checked: 1;
9865  int8_t priority;
9868  void *blocking_region_buffer;
9869  VALUE thgroup;
9870  VALUE value;
9878  union {
9879  struct {
9880  VALUE proc;
9881  VALUE args;
9882  int kw_splat;
9883  } proc;
9884  struct {
9885  VALUE (*func)(void *);
9886  void *arg;
9887  } func;
9889  enum {
9897  VALUE name;
9899 typedef enum {
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)
9910 
9911 #pragma GCC visibility push(default)
9912 
9913 rb_iseq_t *rb_iseq_new (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type);
9915 rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent);
9917  const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
9918 struct iseq_link_anchor;
9920  VALUE flags;
9921  VALUE reserved;
9922  void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
9923  const void *data;
9924 };
9925 static inline struct rb_iseq_new_with_callback_callback_func *
9926 rb_iseq_new_with_callback_new_callback(
9927  void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
9928 {
9930  return (struct rb_iseq_new_with_callback_callback_func *)memo;
9931 }
9933  VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
9934  const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
9936 int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
9938 extern VALUE rb_cISeq;
9939 extern VALUE rb_cRubyVM;
9942 
9943 #pragma GCC visibility pop
9944 
9945 #define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
9946 typedef struct {
9947  const struct rb_block block;
9948  unsigned int is_from_method: 1;
9949  unsigned int is_lambda: 1;
9950 } rb_proc_t;
9951 typedef struct {
9952  VALUE flags;
9953  rb_iseq_t *iseq;
9954  const VALUE *ep;
9955  const VALUE *env;
9956  unsigned int env_size;
9957 } rb_env_t;
9959 #define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
9960 typedef struct {
9961  const struct rb_block block;
9962  const VALUE pathobj;
9963  unsigned short first_lineno;
9964 } rb_binding_t;
9969 };
9970 #define VM_CHECKMATCH_TYPE_MASK 0x03
9971 #define VM_CHECKMATCH_ARRAY 0x04
9985  VM_CALL__END
9986 };
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)
10003 };
10009 };
10010 typedef struct iseq_inline_cache_entry *IC;
10013 typedef struct rb_call_info *CALL_INFO;
10014 typedef struct rb_call_cache *CALL_CACHE;
10015 typedef struct rb_call_data *CALL_DATA;
10016 typedef VALUE CDHASH;
10017 typedef rb_control_frame_t *
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)
10024 enum {
10026  VM_FRAME_MAGIC_BLOCK = 0x22220001,
10027  VM_FRAME_MAGIC_CLASS = 0x33330001,
10028  VM_FRAME_MAGIC_TOP = 0x44440001,
10029  VM_FRAME_MAGIC_CFUNC = 0x55550001,
10030  VM_FRAME_MAGIC_IFUNC = 0x66660001,
10031  VM_FRAME_MAGIC_EVAL = 0x77770001,
10033  VM_FRAME_MAGIC_DUMMY = 0x79990001,
10034  VM_FRAME_MAGIC_MASK = 0x7fff0001,
10045  VM_ENV_FLAG_WB_REQUIRED = 0x0008
10046 };
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);
10054 static inline void
10055 VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
10056 {
10057  VALUE flags = ep[( 0)];
10058  ((void)0);
10059  VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
10060 }
10061 static inline void
10062 VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
10063 {
10064  VALUE flags = ep[( 0)];
10065  ((void)0);
10066  VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
10067 }
10068 static inline unsigned long
10069 VM_ENV_FLAGS(const VALUE *ep, long flag)
10070 {
10071  VALUE flags = ep[( 0)];
10072  ((void)0);
10073  return flags & flag;
10074 }
10075 static inline unsigned long
10076 VM_FRAME_TYPE(const rb_control_frame_t *cfp)
10077 {
10078  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
10079 }
10080 static inline int
10081 VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
10082 {
10083  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
10084 }
10085 static inline int
10086 VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
10087 {
10088  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
10089 }
10090 static inline int
10091 VM_FRAME_CFRAME_EMPTY_KW_P(const rb_control_frame_t *cfp)
10092 {
10093  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_EMPTY_KW) != 0;
10094 }
10095 static inline int
10096 VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
10097 {
10098  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
10099 }
10100 static inline int
10101 VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
10102 {
10103  return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
10104 }
10105 static inline int
10106 rb_obj_is_iseq(VALUE iseq)
10107 {
10108  return imemo_type_p(iseq, imemo_iseq);
10109 }
10110 static inline int
10111 VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
10112 {
10113  int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
10114  ((void)0);
10115  return cframe_p;
10116 }
10117 static inline int
10118 VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
10119 {
10120  return !VM_FRAME_CFRAME_P(cfp);
10121 }
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
10125 static inline int
10126 VM_ENV_LOCAL_P(const VALUE *ep)
10127 {
10128  return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
10129 }
10130 static inline const VALUE *
10131 VM_ENV_PREV_EP(const VALUE *ep)
10132 {
10133  ((void)0);
10134  return ((void *)(((ep[(-1)])) & ~0x03));
10135 }
10136 static inline VALUE
10137 VM_ENV_BLOCK_HANDLER(const VALUE *ep)
10138 {
10139  ((void)0);
10140  return ep[(-1)];
10141 }
10142 static inline int
10143 VM_ENV_ESCAPED_P(const VALUE *ep)
10144 {
10145  ((void)0);
10146  return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
10147 }
10148 static inline VALUE
10149 VM_ENV_ENVVAL(const VALUE *ep)
10150 {
10151  VALUE envval = ep[( 1)];
10152  ((void)0);
10153  ((void)0);
10154  return envval;
10155 }
10156 static inline const rb_env_t *
10157 VM_ENV_ENVVAL_PTR(const VALUE *ep)
10158 {
10159  return (const rb_env_t *)VM_ENV_ENVVAL(ep);
10160 }
10161 static inline const rb_env_t *
10162 vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
10163 {
10164  rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
10165  env->env_size = env_size;
10166  env_ep[( 1)] = (VALUE)env;
10167  return env;
10168 }
10169 static inline void
10170 VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
10171 {
10172  *((VALUE *)ptr) = v;
10173 }
10174 static inline void
10175 VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
10176 {
10177  ((void)0);
10178  VM_FORCE_WRITE(ptr, special_const_value);
10179 }
10180 static inline void
10181 VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
10182 {
10183  ((void)0);
10184  VM_FORCE_WRITE(&ep[index], v);
10185 }
10186 const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
10187 const VALUE *rb_vm_proc_local_ep(VALUE proc);
10188 void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
10189 void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);
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))
10194 static inline const rb_control_frame_t *
10195 RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
10196 {
10197  return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
10198 }
10199 static inline int
10200 RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
10201 {
10202  return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
10203 }
10204 static inline int
10205 VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
10206 {
10207  if ((block_handler & 0x03) == 0x01) {
10208  return 1;
10209  }
10210  else {
10211  return 0;
10212  }
10213 }
10214 static inline VALUE
10215 VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
10216 {
10217  VALUE block_handler = ((VALUE)(captured) | (0x01));
10218  ((void)0);
10219  return block_handler;
10220 }
10221 static inline const struct rb_captured_block *
10222 VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
10223 {
10224  struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10225  ((void)0);
10226  return captured;
10227 }
10228 static inline int
10229 VM_BH_IFUNC_P(VALUE block_handler)
10230 {
10231  if ((block_handler & 0x03) == 0x03) {
10232  return 1;
10233  }
10234  else {
10235  return 0;
10236  }
10237 }
10238 static inline VALUE
10239 VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
10240 {
10241  VALUE block_handler = ((VALUE)(captured) | (0x03));
10242  ((void)0);
10243  return block_handler;
10244 }
10245 static inline const struct rb_captured_block *
10246 VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
10247 {
10248  struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10249  ((void)0);
10250  return captured;
10251 }
10252 static inline const struct rb_captured_block *
10253 VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
10254 {
10255  struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10256  ((void)0);
10257  return captured;
10258 }
10259 static inline enum rb_block_handler_type
10260 vm_block_handler_type(VALUE block_handler)
10261 {
10262  if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
10263  return block_handler_type_iseq;
10264  }
10265  else if (VM_BH_IFUNC_P(block_handler)) {
10266  return block_handler_type_ifunc;
10267  }
10268  else if (((((VALUE)(block_handler)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_handler) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_handler) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_handler))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
10270  }
10271  else {
10272  ((void)0);
10273  return block_handler_type_proc;
10274  }
10275 }
10276 static inline void
10277 vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
10278 {
10279  ((void)0);
10280 }
10281 static inline int
10282 vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
10283 {
10284  return ((VALUE) cfp->block_code) == block_handler;
10285 }
10286 static inline enum rb_block_type
10287 vm_block_type(const struct rb_block *block)
10288 {
10289  return block->type;
10290 }
10291 static inline void
10292 vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
10293 {
10294  struct rb_block *mb = (struct rb_block *)block;
10295  mb->type = type;
10296 }
10297 static inline const struct rb_block *
10298 vm_proc_block(VALUE procval)
10299 {
10300  ((void)0);
10301  return &((rb_proc_t *)(((struct RTypedData*)(procval))->data))->block;
10302 }
10303 static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
10304 static inline const VALUE *vm_block_ep(const struct rb_block *block);
10305 static inline const rb_iseq_t *
10306 vm_proc_iseq(VALUE procval)
10307 {
10308  return vm_block_iseq(vm_proc_block(procval));
10309 }
10310 static inline const VALUE *
10311 vm_proc_ep(VALUE procval)
10312 {
10313  return vm_block_ep(vm_proc_block(procval));
10314 }
10315 static inline const rb_iseq_t *
10316 vm_block_iseq(const struct rb_block *block)
10317 {
10318  switch (vm_block_type(block)) {
10319  case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
10320  case block_type_proc: return vm_proc_iseq(block->as.proc);
10321  case block_type_ifunc:
10322  case block_type_symbol: return ((void *)0);
10323  }
10324  __builtin_unreachable();
10325  return ((void *)0);
10326 }
10327 static inline const VALUE *
10328 vm_block_ep(const struct rb_block *block)
10329 {
10330  switch (vm_block_type(block)) {
10331  case block_type_iseq:
10332  case block_type_ifunc: return block->as.captured.ep;
10333  case block_type_proc: return vm_proc_ep(block->as.proc);
10334  case block_type_symbol: return ((void *)0);
10335  }
10336  __builtin_unreachable();
10337  return ((void *)0);
10338 }
10339 static inline VALUE
10340 vm_block_self(const struct rb_block *block)
10341 {
10342  switch (vm_block_type(block)) {
10343  case block_type_iseq:
10344  case block_type_ifunc:
10345  return block->as.captured.self;
10346  case block_type_proc:
10347  return vm_block_self(vm_proc_block(block->as.proc));
10348  case block_type_symbol:
10349  return ((VALUE)RUBY_Qundef);
10350  }
10351  __builtin_unreachable();
10352  return ((VALUE)RUBY_Qundef);
10353 }
10354 static inline VALUE
10355 VM_BH_TO_SYMBOL(VALUE block_handler)
10356 {
10357  ((void)0);
10358  return block_handler;
10359 }
10360 static inline VALUE
10361 VM_BH_FROM_SYMBOL(VALUE symbol)
10362 {
10363  ((void)0);
10364  return symbol;
10365 }
10366 static inline VALUE
10367 VM_BH_TO_PROC(VALUE block_handler)
10368 {
10369  ((void)0);
10370  return block_handler;
10371 }
10372 static inline VALUE
10373 VM_BH_FROM_PROC(VALUE procval)
10374 {
10375  ((void)0);
10376  return procval;
10377 }
10381 VALUE rb_proc_dup(VALUE self);
10383 extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
10385 );
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))
10388 void rb_vm_bugreport(const void *);
10390 __attribute__ ((__noreturn__)) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
10391 
10392 #pragma GCC visibility push(default)
10393 
10398 
10399 #pragma GCC visibility pop
10400 
10403 int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
10404 void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
10407 static inline VALUE
10408 rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10409 {
10410  return rb_vm_make_proc_lambda(ec, captured, klass, 0);
10411 }
10412 static inline VALUE
10413 rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10414 {
10415  return rb_vm_make_proc_lambda(ec, captured, klass, 1);
10416 }
10419 const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
10420 const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
10422 void rb_vm_gvl_destroy(rb_vm_t *vm);
10424  const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
10425 static void rb_vm_pop_frame(rb_execution_context_t *ec);
10426 void rb_thread_start_timer_thread(void);
10427 void rb_thread_stop_timer_thread(void);
10428 void rb_thread_reset_timer_thread(void);
10430 static inline void
10431 rb_vm_living_threads_init(rb_vm_t *vm)
10432 {
10433  list_head_init(&vm->waiting_fds);
10434  list_head_init(&vm->waiting_pids);
10435  list_head_init(&vm->workqueue);
10436  list_head_init(&vm->waiting_grps);
10437  list_head_init(&vm->living_threads);
10438  vm->living_thread_num = 0;
10439 }
10440 static inline void
10441 rb_vm_living_threads_insert(rb_vm_t *vm, rb_thread_t *th)
10442 {
10443  list_add_tail_(&vm->living_threads, &th->vmlt_node, "../ruby-2.7.2/vm_core.h" ":" "1703");
10444  vm->living_thread_num++;
10445 }
10446 static inline void
10447 rb_vm_living_threads_remove(rb_vm_t *vm, rb_thread_t *th)
10448 {
10449  list_del_(&th->vmlt_node, "../ruby-2.7.2/vm_core.h" ":" "1710");
10450  vm->living_thread_num--;
10451 }
10452 typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
10458 int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
10461 void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
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)))
10464 void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
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()
10472 VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
10473 
10474 #pragma GCC visibility push(default)
10475 
10480 extern unsigned int ruby_vm_event_local_num;
10481 
10482 #pragma GCC visibility pop
10483 
10484 #define GET_VM() rb_current_vm()
10485 #define GET_THREAD() rb_current_thread()
10486 #define GET_EC() rb_current_execution_context()
10487 static inline rb_thread_t *
10488 rb_ec_thread_ptr(const rb_execution_context_t *ec)
10489 {
10490  return ec->thread_ptr;
10491 }
10492 static inline rb_vm_t *
10493 rb_ec_vm_ptr(const rb_execution_context_t *ec)
10494 {
10495  const rb_thread_t *th = rb_ec_thread_ptr(ec);
10496  if (th) {
10497  return th->vm;
10498  }
10499  else {
10500  return ((void *)0);
10501  }
10502 }
10503 static inline rb_execution_context_t *
10504 rb_current_execution_context(void)
10505 {
10507 }
10508 static inline rb_thread_t *
10509 rb_current_thread(void)
10510 {
10511  const rb_execution_context_t *ec = rb_current_execution_context();
10512  return rb_ec_thread_ptr(ec);
10513 }
10514 static inline rb_vm_t *
10515 rb_current_vm(void)
10516 {
10517  ((void)0);
10518  return ruby_current_vm_ptr;
10519 }
10520 static inline void
10521 rb_thread_set_current_raw(const rb_thread_t *th)
10522 {
10524 }
10525 static inline void
10526 rb_thread_set_current(rb_thread_t *th)
10527 {
10528  if (th->vm->running_thread != th) {
10529  th->running_time_us = 0;
10530  }
10531  rb_thread_set_current_raw(th);
10532  th->vm->running_thread = th;
10533 }
10534 enum {
10538  TRAP_INTERRUPT_MASK = 0x08
10539 };
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)
10547 int rb_signal_buff_size(void);
10548 int rb_signal_exec(rb_thread_t *th, int sig);
10558 void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
10561 void rb_fiber_close(rb_fiber_t *fib);
10563 #define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
10564 static inline void
10565 rb_vm_check_ints(rb_execution_context_t *ec)
10566 {
10567  ((void)0);
10568  if ((__builtin_expect(!!(((ec)->interrupt_flag & ~(ec)->interrupt_mask)), 0))) {
10569  rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
10570  }
10571 }
10572 struct rb_trace_arg_struct {
10575  const rb_control_frame_t *cfp;
10576  VALUE self;
10577  ID id;
10578  ID called_id;
10579  VALUE klass;
10580  VALUE data;
10581  int klass_solved;
10582  int lineno;
10583  VALUE path;
10584 };
10585 void rb_hook_list_mark(rb_hook_list_t *hooks);
10586 void rb_hook_list_free(rb_hook_list_t *hooks);
10587 void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
10589 void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
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)
10591 static inline void
10592 rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
10593  VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
10594 {
10595  struct rb_trace_arg_struct trace_arg;
10596  ((void)0);
10597  trace_arg.event = flag;
10598  trace_arg.ec = ec;
10599  trace_arg.cfp = ec->cfp;
10600  trace_arg.self = self;
10601  trace_arg.id = id;
10602  trace_arg.called_id = called_id;
10603  trace_arg.klass = klass;
10604  trace_arg.data = data;
10605  trace_arg.path = ((VALUE)RUBY_Qundef);
10606  trace_arg.klass_solved = 0;
10607  rb_exec_event_hooks(&trace_arg, hooks, pop_p);
10608 }
10609 static inline rb_hook_list_t *
10610 rb_vm_global_hooks(const rb_execution_context_t *ec)
10611 {
10612  return &rb_ec_vm_ptr(ec)->global_hooks;
10613 }
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)
10616 static inline void
10617 rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
10618 {
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);
10620 }
10621 void rb_vm_trap_exit(rb_vm_t *vm);
10622 
10623 #pragma GCC visibility push(default)
10624 
10626 #define RUBY_EVENT_COVERAGE_LINE 0x010000
10627 #define RUBY_EVENT_COVERAGE_BRANCH 0x020000
10628 extern VALUE rb_get_coverages(void);
10629 extern void rb_set_coverages(VALUE, int, VALUE);
10630 extern void rb_clear_coverages(void);
10631 extern void rb_reset_coverages(void);
10633 
10634 #pragma GCC visibility pop
10635 
10636 #define RUBY_DEBUG_H
10637 
10638 #pragma GCC visibility push(default)
10639 
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))
10644 VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
10645 ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
10646 NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
10647 int ruby_debug_print_indent(int level, int debug_level, int indent_level);
10649 void ruby_set_debug_option(const char *str);
10650 
10651 #pragma GCC visibility pop
10652 
10653 #define RUBY_ISEQ_H 1
10654 extern const int ruby_api_version[];
10655 #define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
10656 #define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
10657 extern const ID rb_iseq_shared_exc_local_tbl[];
10658 static inline size_t
10659 rb_call_info_kw_arg_bytes(int keyword_len)
10660 {
10661  return rb_size_mul_add_or_raise(
10662  keyword_len - 1, sizeof(VALUE), sizeof(struct rb_call_info_kw_arg),
10664 }
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
10672 static inline rb_snum_t
10673 ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
10674 {
10676  iseq->body->variable.flip_count += 1;
10677  return cnt;
10678 }
10679 static inline VALUE *
10680 ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
10681 {
10682  return iseq->body->variable.original_iseq;
10683 }
10684 static inline void
10685 ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
10686 {
10687  void *ptr = iseq->body->variable.original_iseq;
10688  iseq->body->variable.original_iseq = ((void *)0);
10689  if (ptr) {
10690  ruby_xfree(ptr);
10691  }
10692 }
10693 static inline VALUE *
10694 ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
10695 {
10696  return iseq->body->variable.original_iseq =
10697  ((VALUE*)ruby_xmalloc2((size_t)(size),sizeof(VALUE)));
10698 }
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)
10705 struct iseq_compile_data {
10706  const VALUE err_info;
10707  const VALUE catch_table_ary;
10708  struct iseq_label_data *start_label;
10709  struct iseq_label_data *end_label;
10710  struct iseq_label_data *redo_label;
10711  const rb_iseq_t *current_block;
10713  struct {
10716  } node;
10717  struct {
10720  } insn;
10721  int loopval_popped;
10722  int last_line;
10723  int label_no;
10724  int node_level;
10725  unsigned int ci_index;
10726  unsigned int ci_kw_index;
10727  const rb_compile_option_t *option;
10728  struct rb_id_table *ivar_cache_table;
10730 };
10731 static inline struct iseq_compile_data *
10732 ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
10733 {
10734  if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
10735  return iseq->aux.compile_data;
10736  }
10737  else {
10738  return ((void *)0);
10739  }
10740 }
10741 static inline void
10742 ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
10743 {
10744  iseq->aux.compile_data = (((struct iseq_compile_data*)ruby_xcalloc((size_t)(1),sizeof(struct iseq_compile_data))));
10745  iseq->flags |= ((VALUE)RUBY_FL_USER6);
10746 }
10747 static inline void
10748 ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
10749 {
10750  iseq->flags &= ~((VALUE)RUBY_FL_USER6);
10751  iseq->aux.compile_data = ((void *)0);
10752 }
10753 static inline rb_iseq_t *
10754 iseq_imemo_alloc(void)
10755 {
10756  return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
10757 }
10761 const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
10764 int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line);
10766 const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
10767 unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
10768 
10769 #pragma GCC visibility push(default)
10770 
10775  VALUE locals, VALUE args,
10776  VALUE exception, VALUE body);
10778 VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
10779 VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
10780 unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
10781 void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
10782 void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
10786 const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
10792 void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
10793 void rb_iseq_remove_coverage_all(void);
10794 const rb_iseq_t *rb_method_iseq(VALUE body);
10795 const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
10796 struct rb_compile_option_struct {
10797  unsigned int inline_const_cache: 1;
10798  unsigned int peephole_optimization: 1;
10799  unsigned int tailcall_optimization: 1;
10800  unsigned int specialized_instruction: 1;
10801  unsigned int operands_unification: 1;
10802  unsigned int instructions_unification: 1;
10803  unsigned int stack_caching: 1;
10804  unsigned int frozen_string_literal: 1;
10805  unsigned int debug_frozen_string_literal: 1;
10806  unsigned int coverage_enabled: 1;
10807  int debug_level;
10808 };
10809 struct iseq_insn_info_entry {
10810  int line_no;
10812 };
10813 struct iseq_catch_table_entry {
10814  enum catch_type {
10815  CATCH_TYPE_RESCUE = (((VALUE)(1))<<1 | RUBY_FIXNUM_FLAG),
10816  CATCH_TYPE_ENSURE = (((VALUE)(2))<<1 | RUBY_FIXNUM_FLAG),
10817  CATCH_TYPE_RETRY = (((VALUE)(3))<<1 | RUBY_FIXNUM_FLAG),
10818  CATCH_TYPE_BREAK = (((VALUE)(4))<<1 | RUBY_FIXNUM_FLAG),
10819  CATCH_TYPE_REDO = (((VALUE)(5))<<1 | RUBY_FIXNUM_FLAG),
10820  CATCH_TYPE_NEXT = (((VALUE)(6))<<1 | RUBY_FIXNUM_FLAG)
10821  } type;
10822  rb_iseq_t *iseq;
10823  unsigned int start;
10824  unsigned int end;
10825  unsigned int cont;
10826  unsigned int sp;
10827 };
10828 struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[]; } __attribute__((packed));
10829 static inline int
10830 iseq_catch_table_bytes(int n)
10831 {
10832  enum {
10833  catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
10834  catch_table_entries_max = (0x7fffffff - __builtin_offsetof (struct iseq_catch_table, entries)) / catch_table_entry_size
10835  };
10836  if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
10837  return (int)(__builtin_offsetof (struct iseq_catch_table, entries) +
10838  n * catch_table_entry_size);
10839 }
10840 #define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
10843  unsigned int pos;
10844  unsigned int size;
10845  char buff[];
10846 };
10867 };
10870 
10871 #pragma GCC visibility pop
10872 
10873 #define RUBY_EVAL_INTERN_H
10874 static inline void
10875 vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
10876 {
10877  vm_block_handler_verify(block_handler);
10879 }
10880 static inline void
10881 pass_passed_block_handler(rb_execution_context_t *ec)
10882 {
10884  vm_passed_block_handler_set(ec, block_handler);
10885  VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
10886 }
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))
10891 int _setjmp(jmp_buf);
10892 __attribute__ ((__noreturn__)) void _longjmp(jmp_buf, int);
10893 #define __ERRNO_H__
10894 typedef int error_t;
10895 #define __error_t_defined 1
10896 #define _SYS_ERRNO_H_
10897 #define errno (*__errno())
10898 extern int *__errno (void);
10899 extern __attribute__((dllimport)) const char * const _sys_errlist[];
10900 extern __attribute__((dllimport)) int _sys_nerr;
10901 extern __attribute__((dllimport)) const char * const sys_errlist[];
10902 extern __attribute__((dllimport)) int sys_nerr;
10903 extern __attribute__((dllimport)) char *program_invocation_name;
10904 extern __attribute__((dllimport)) char *program_invocation_short_name;
10905 #define __errno_r(ptr) ((ptr)->_errno)
10906 #define EPERM 1
10907 #define ENOENT 2
10908 #define ESRCH 3
10909 #define EINTR 4
10910 #define EIO 5
10911 #define ENXIO 6
10912 #define E2BIG 7
10913 #define ENOEXEC 8
10914 #define EBADF 9
10915 #define ECHILD 10
10916 #define EAGAIN 11
10917 #define ENOMEM 12
10918 #define EACCES 13
10919 #define EFAULT 14
10920 #define ENOTBLK 15
10921 #define EBUSY 16
10922 #define EEXIST 17
10923 #define EXDEV 18
10924 #define ENODEV 19
10925 #define ENOTDIR 20
10926 #define EISDIR 21
10927 #define EINVAL 22
10928 #define ENFILE 23
10929 #define EMFILE 24
10930 #define ENOTTY 25
10931 #define ETXTBSY 26
10932 #define EFBIG 27
10933 #define ENOSPC 28
10934 #define ESPIPE 29
10935 #define EROFS 30
10936 #define EMLINK 31
10937 #define EPIPE 32
10938 #define EDOM 33
10939 #define ERANGE 34
10940 #define ENOMSG 35
10941 #define EIDRM 36
10942 #define ECHRNG 37
10943 #define EL2NSYNC 38
10944 #define EL3HLT 39
10945 #define EL3RST 40
10946 #define ELNRNG 41
10947 #define EUNATCH 42
10948 #define ENOCSI 43
10949 #define EL2HLT 44
10950 #define EDEADLK 45
10951 #define ENOLCK 46
10952 #define EBADE 50
10953 #define EBADR 51
10954 #define EXFULL 52
10955 #define ENOANO 53
10956 #define EBADRQC 54
10957 #define EBADSLT 55
10958 #define EDEADLOCK 56
10959 #define EBFONT 57
10960 #define ENOSTR 60
10961 #define ENODATA 61
10962 #define ETIME 62
10963 #define ENOSR 63
10964 #define ENONET 64
10965 #define ENOPKG 65
10966 #define EREMOTE 66
10967 #define ENOLINK 67
10968 #define EADV 68
10969 #define ESRMNT 69
10970 #define ECOMM 70
10971 #define EPROTO 71
10972 #define EMULTIHOP 74
10973 #define ELBIN 75
10974 #define EDOTDOT 76
10975 #define EBADMSG 77
10976 #define EFTYPE 79
10977 #define ENOTUNIQ 80
10978 #define EBADFD 81
10979 #define EREMCHG 82
10980 #define ELIBACC 83
10981 #define ELIBBAD 84
10982 #define ELIBSCN 85
10983 #define ELIBMAX 86
10984 #define ELIBEXEC 87
10985 #define ENOSYS 88
10986 #define ENMFILE 89
10987 #define ENOTEMPTY 90
10988 #define ENAMETOOLONG 91
10989 #define ELOOP 92
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
11019 #define EUSERS 131
11020 #define EDQUOT 132
11021 #define ESTALE 133
11022 #define ENOTSUP 134
11023 #define ENOMEDIUM 135
11024 #define ENOSHARE 136
11025 #define ECASECLASH 137
11026 #define EILSEQ 138
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
11039 #undef NULL
11040 #define NULL ((void *)0)
11041 #undef __need_NULL
11042 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
11043 #define NOFILE 8192
11044 #define NGROUPS NGROUPS_MAX
11045 #define HZ 1000
11046 #define MAXHOSTNAMELEN 128
11047 #define MAXPATHLEN PATH_MAX
11048 #define MAXSYMLINKS SYMLOOP_MAX
11049 #define DEV_BSIZE 1024
11050 #define NBBY 8
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
11072 static inline int
11073 rb_ec_tag_state(const rb_execution_context_t *ec)
11074 {
11075  enum ruby_tag_type state = ec->tag->state;
11076  ec->tag->state = RUBY_TAG_NONE;
11077  return state;
11078 }
11079 __attribute__ ((__noreturn__)) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
11080 static inline void
11081 rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
11082 {
11083  ec->tag->state = st;
11084  __builtin_longjmp(((ec->tag->buf)),(1));
11085 }
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
11092 CREF_CLASS(const rb_cref_t *cref)
11093 {
11094  return cref->klass;
11095 }
11096 static inline rb_cref_t *
11097 CREF_NEXT(const rb_cref_t *cref)
11098 {
11099  return cref->next;
11100 }
11101 static inline const rb_scope_visibility_t *
11102 CREF_SCOPE_VISI(const rb_cref_t *cref)
11103 {
11104  return &cref->scope_visi;
11105 }
11106 static inline VALUE
11107 CREF_REFINEMENTS(const rb_cref_t *cref)
11108 {
11109  return cref->refinements;
11110 }
11111 static inline void
11112 CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
11113 {
11114  __extension__({
11115 #pragma GCC diagnostic push
11116  ;
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; });
11121 }
11122 static inline int
11123 CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
11124 {
11125  return cref->flags & ((VALUE)RUBY_FL_USER5);
11126 }
11127 static inline void
11128 CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
11129 {
11130  cref->flags |= ((VALUE)RUBY_FL_USER5);
11131 }
11132 static inline int
11133 CREF_OMOD_SHARED(const rb_cref_t *cref)
11134 {
11135  return cref->flags & ((VALUE)RUBY_FL_USER6);
11136 }
11137 static inline void
11138 CREF_OMOD_SHARED_SET(rb_cref_t *cref)
11139 {
11140  cref->flags |= ((VALUE)RUBY_FL_USER6);
11141 }
11142 static inline void
11143 CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
11144 {
11145  cref->flags &= ~((VALUE)RUBY_FL_USER6);
11146 }
11147 enum {
11150  RAISED_NOMEMORY = 4
11151 };
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)
11159 VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
11160 VALUE rb_make_exception(int argc, const VALUE *argv);
11161 __attribute__ ((__noreturn__)) void rb_method_name_error(VALUE, VALUE);
11162 __attribute__ ((__noreturn__)) void rb_fiber_start(void);
11164 __attribute__ ((__noreturn__)) void rb_print_undef_str(VALUE, VALUE);
11166 __attribute__ ((__noreturn__)) void rb_vm_localjump_error(const char *,VALUE, int);
11167 __attribute__ ((__noreturn__)) void rb_vm_jump_tag_but_local_jump(int);
11169 rb_cref_t *rb_vm_cref(void);
11171 VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
11172 void rb_vm_set_progname(VALUE filename);
11173 void rb_thread_terminate_all(void);
11174 VALUE rb_vm_cbase(void);
11176 VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
11177 VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n);
11178 #define CharNext(p) ((p) + mblen((p), RUBY_MBCHAR_MAXSIZE))
11179 static inline void
11180 translit_char(char *p, int from, int to)
11181 {
11182  while (*p) {
11183  if ((unsigned char)*p == from)
11184  *p = to;
11185  p = ((p) + mblen((p), 0x7fffffff));
11186  }
11187 }
11188 #define BUILTIN_H_INCLUDED
11189 struct rb_builtin_function {
11190  const void * const func_ptr;
11191  const int argc;
11192  const int index;
11193  const char * const name;
11194 };
11195 #define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i }
11196 void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
11197 static inline void rb_builtin_function_check_arity0(VALUE (*f)(rb_execution_context_t *ec, VALUE self)){}
11198 static inline void rb_builtin_function_check_arity1(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE)){}
11199 static inline void rb_builtin_function_check_arity2(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE)){}
11200 static inline void rb_builtin_function_check_arity3(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE)){}
11201 static inline void rb_builtin_function_check_arity4(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE)){}
11202 static inline void rb_builtin_function_check_arity5(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11203 static inline void rb_builtin_function_check_arity6(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11204 static inline void rb_builtin_function_check_arity7(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11205 static inline void rb_builtin_function_check_arity8(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
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)){}
11214 __attribute__ ((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
11215 static inline VALUE
11216 rb_vm_lvar(rb_execution_context_t *ec, int index)
11217 {
11218  return ec->cfp->ep[index];
11219 }
11220 struct builtin_binary {
11221  const char *feature;
11222  const unsigned char *bin;
11223  size_t bin_size;
11224 };
11225 #define _PROBES_H
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
11279  const char *classname;
11280  const char *methodname;
11281  const char *filename;
11282  int line_no;
11283  volatile VALUE klass;
11284  volatile VALUE name;
11285 };
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)
11292 VALUE rb_str_concat_literals(size_t, const VALUE*);
11293 __attribute__ ((__visibility__("default"))) extern
11295 __attribute__ ((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
11296 static inline const VALUE *
11297 VM_EP_LEP(const VALUE *ep)
11298 {
11299  while (!VM_ENV_LOCAL_P(ep)) {
11300  ep = VM_ENV_PREV_EP(ep);
11301  }
11302  return ep;
11303 }
11304 static inline const rb_control_frame_t *
11305 rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
11306 {
11307  if (!ep) {
11308  return ((void *)0);
11309  }
11310  else {
11311  const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
11312  while (cfp < eocfp) {
11313  if (cfp->ep == ep) {
11314  return cfp;
11315  }
11316  cfp = ((cfp)+1);
11317  }
11318  return ((void *)0);
11319  }
11320 }
11321 const VALUE *
11323 {
11324  return VM_EP_LEP(ep);
11325 }
11326 __attribute__ ((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
11327 static inline const VALUE *
11328 VM_CF_LEP(const rb_control_frame_t * const cfp)
11329 {
11330  return VM_EP_LEP(cfp->ep);
11331 }
11332 static inline const VALUE *
11333 VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
11334 {
11335  return VM_ENV_PREV_EP(cfp->ep);
11336 }
11337 __attribute__ ((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
11338 static inline VALUE
11339 VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
11340 {
11341  const VALUE *ep = VM_CF_LEP(cfp);
11342  return VM_ENV_BLOCK_HANDLER(ep);
11343 }
11344 int
11346 {
11347  return VM_FRAME_CFRAME_KW_P(cfp);
11348 }
11349 int
11351 {
11352  return VM_FRAME_CFRAME_EMPTY_KW_P(cfp);
11353 }
11354 VALUE
11356 {
11357  return VM_CF_BLOCK_HANDLER(cfp);
11358 }
11359 static struct rb_captured_block *
11360 VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
11361 {
11362  ((void)0);
11363  return (struct rb_captured_block *)&cfp->self;
11364 }
11365 static rb_control_frame_t *
11366 VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
11367 {
11368  rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
11369  ((void)0);
11370  ((void)0);
11371  return cfp;
11372 }
11373 static int
11374 VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
11375 {
11376  const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
11377  return ((void *)((block_handler) & ~0x03)) == captured;
11378 }
11379 static VALUE
11380 vm_passed_block_handler(rb_execution_context_t *ec)
11381 {
11383  ec->passed_block_handler = 0;
11384  vm_block_handler_verify(block_handler);
11385  return block_handler;
11386 }
11387 static rb_cref_t *
11388 vm_cref_new0(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval, int use_prev_prev)
11389 {
11390  VALUE refinements = ((VALUE)RUBY_Qnil);
11391  int omod_shared = 0;
11392  rb_cref_t *cref;
11393  union {
11394  rb_scope_visibility_t visi;
11395  VALUE value;
11396  } scope_visi;
11397  scope_visi.visi.method_visi = visi;
11398  scope_visi.visi.module_func = module_func;
11399  if (prev_cref != ((void *)0) && prev_cref != (void *)1 ) {
11400  refinements = CREF_REFINEMENTS(prev_cref);
11401  if (!!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
11402  omod_shared = 1;
11403  CREF_OMOD_SHARED_SET(prev_cref);
11404  }
11405  }
11406  cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
11407  if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
11408  if (omod_shared) CREF_OMOD_SHARED_SET(cref);
11409  return cref;
11410 }
11411 static rb_cref_t *
11412 vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
11413 {
11414  return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0);
11415 }
11416 static rb_cref_t *
11417 vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
11418 {
11419  return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1);
11420 }
11421 static int
11422 ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
11423 {
11424  return ((((VALUE)(key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) ? ST_DELETE : ST_CONTINUE;
11425 }
11426 static rb_cref_t *
11427 vm_cref_dup(const rb_cref_t *cref)
11428 {
11429  VALUE klass = CREF_CLASS(cref);
11430  const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
11431  rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
11432  int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
11433  new_cref = vm_cref_new(klass, visi->method_visi, visi->module_func, next_cref, pushed_by_eval);
11434  if (!!((VALUE)(CREF_REFINEMENTS(cref)) != ((VALUE)RUBY_Qnil))) {
11435  VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
11436  rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
11437  CREF_REFINEMENTS_SET(new_cref, ref);
11438  CREF_OMOD_SHARED_UNSET(new_cref);
11439  }
11440  return new_cref;
11441 }
11442 static rb_cref_t *
11443 vm_cref_new_toplevel(rb_execution_context_t *ec)
11444 {
11445  rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void *)0), 0);
11446  VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
11447  if (top_wrapper) {
11448  cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0);
11449  }
11450  return cref;
11451 }
11452 rb_cref_t *
11454 {
11455  return vm_cref_new_toplevel(rb_current_execution_context());
11456 }
11457 static void
11458 vm_cref_dump(const char *mesg, const rb_cref_t *cref)
11459 {
11460  fprintf(((__getreent())->_stderr), "vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
11461  while (cref) {
11462  fprintf(((__getreent())->_stderr), "= cref| klass: %s\n", (!(((struct RBasic*)(rb_class_path(CREF_CLASS(cref))))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.ary : ((struct RString*)(rb_class_path(CREF_CLASS(cref))))->as.heap.ptr));
11463  cref = CREF_NEXT(cref);
11464  }
11465 }
11466 void
11467 rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
11468 {
11469  *((const VALUE **)&dst->as.captured.ep) = ep;
11470  rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "../ruby-2.7.2/vm.c", 318);
11471 }
11472 static void
11473 vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
11474 {
11475  const rb_env_t *env = (rb_env_t *)envval;
11476  __extension__({
11477 #pragma GCC diagnostic push
11478  ;
11479 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11480  ; typeof(rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.7.2/vm.c", 325)) unaligned_member_access_result = (rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.7.2/vm.c", 325));
11481 #pragma GCC diagnostic pop
11482  ; unaligned_member_access_result; });
11483  rb_vm_block_ep_update(bindval, &bind->block, env->ep);
11484 }
11485 static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
11487  int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
11489 static VALUE vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler);
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
11672 };
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)
11676 void rb_debug_counter_show_results(const char *msg);
11677 
11678 #pragma GCC visibility push(default)
11679 
11680 size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
11681 void ruby_debug_counter_reset(void);
11682 void ruby_debug_counter_show_at_exit(int enable);
11683 
11684 #pragma GCC visibility pop
11685 
11690  LAST_JIT_ISEQ_FUNC = 3
11691 };
11693  char on;
11695  char warnings;
11696  char debug;
11698  unsigned int wait;
11699  unsigned int min_calls;
11700  int verbose;
11702 };
11707 };
11709 
11710 #pragma GCC visibility push(default)
11711 
11712 extern struct mjit_options mjit_opts;
11713 extern _Bool mjit_call_p;
11718 
11719 #pragma GCC visibility pop
11720 
11721 extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname);
11722 extern void mjit_init(const struct mjit_options *opts);
11723 extern void mjit_gc_start_hook(void);
11724 extern void mjit_gc_exit_hook(void);
11725 extern void mjit_free_iseq(const rb_iseq_t *iseq);
11727 extern void mjit_mark(void);
11728 extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec);
11729 extern void mjit_cont_free(struct mjit_cont *cont);
11730 extern void mjit_add_class_serial(rb_serial_t class_serial);
11731 extern void mjit_remove_class_serial(rb_serial_t class_serial);
11732 #define JIT_ISEQ_SIZE_THRESHOLD 1000
11733 static inline int
11734 mjit_target_iseq_p(struct rb_iseq_constant_body *body)
11735 {
11736  return (body->type == ISEQ_TYPE_METHOD || body->type == ISEQ_TYPE_BLOCK)
11737  && body->iseq_size < 1000;
11738 }
11739 static inline VALUE
11740 mjit_exec(rb_execution_context_t *ec)
11741 {
11742  const rb_iseq_t *iseq;
11743  struct rb_iseq_constant_body *body;
11744  long unsigned total_calls;
11745  mjit_func_t func;
11746  if (!mjit_call_p)
11747  return ((VALUE)RUBY_Qundef);
11748  ((void)0);
11749  iseq = ec->cfp->iseq;
11750  body = iseq->body;
11751  total_calls = ++body->total_calls;
11752  func = body->jit_func;
11753  if ((__builtin_expect(!!((uintptr_t)func <= (uintptr_t)LAST_JIT_ISEQ_FUNC), 0))) {
11754  ((void)0);
11755  switch ((enum rb_mjit_iseq_func)func) {
11757  ((void)0);
11758  if (total_calls == mjit_opts.min_calls && mjit_target_iseq_p(body)) {
11759  ((void)0);
11761  if ((__builtin_expect(!!(mjit_opts.wait), 0))) {
11762  return rb_mjit_wait_call(ec, body);
11763  }
11764  }
11765  return ((VALUE)RUBY_Qundef);
11767  ((void)0);
11768  return ((VALUE)RUBY_Qundef);
11770  ((void)0);
11771  return ((VALUE)RUBY_Qundef);
11772  default:
11773  break;
11774  }
11775  }
11776  ((void)0);
11777  ((void)0);
11778  return func(ec, ec->cfp);
11779 }
11781 #define RUBY_INSNHELPER_H
11782 
11783 #pragma GCC visibility push(default)
11784 
11789 
11790 #pragma GCC visibility pop
11791 
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))
11824 static inline void
11825 CC_SET_FASTPATH(CALL_CACHE cc, vm_call_handler func, _Bool enabled)
11826 {
11827  if ((__builtin_expect(!!(enabled), 1))) {
11828  cc->call = func;
11829  }
11830 }
11831 static inline void
11832 CC_SET_ME(CALL_CACHE cc, const rb_callable_method_entry_t *me)
11833 {
11834  cc->me = me;
11835  cc->method_serial = me ? me->def->method_serial : 0;
11836 }
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)
11846 static inline struct vm_throw_data *
11847 THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
11848 {
11849  struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
11850  obj->throw_state = st;
11851  return obj;
11852 }
11853 static inline VALUE
11854 THROW_DATA_VAL(const struct vm_throw_data *obj)
11855 {
11856  ((void)0);
11857  return obj->throw_obj;
11858 }
11859 static inline const rb_control_frame_t *
11860 THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
11861 {
11862  ((void)0);
11863  return obj->catch_frame;
11864 }
11865 static inline int
11866 THROW_DATA_STATE(const struct vm_throw_data *obj)
11867 {
11868  ((void)0);
11869  return obj->throw_state;
11870 }
11871 static inline int
11872 THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
11873 {
11874  ((void)0);
11875  return obj->flags & ((VALUE)RUBY_FL_USER4);
11876 }
11877 static inline void
11878 THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
11879 {
11880  ((void)0);
11881  obj->catch_frame = cfp;
11882 }
11883 static inline void
11884 THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
11885 {
11886  ((void)0);
11887  obj->throw_state = st;
11888 }
11889 static inline void
11890 THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
11891 {
11892  if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(obj)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(obj))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO))) &&
11893  THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
11894  obj->flags |= ((VALUE)RUBY_FL_USER4);
11895  }
11896 }
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))
11901 static _Bool
11902 vm_call_iseq_optimizable_p(const struct rb_call_info *ci, const struct rb_call_cache *cc)
11903 {
11904  return !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
11905  !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED);
11906 }
11907 #define RUBY_VM_EXEC_H
11908 typedef long OFFSET;
11909 typedef unsigned long lindex_t;
11910 typedef VALUE GENTRY;
11911 typedef rb_iseq_t *ISEQ;
11912 #define debugs
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
12145 };
12146 #define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
12147 #define CONSTANT_H
12148 typedef enum {
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)
12158 typedef struct rb_const_entry_struct {
12160  int line;
12161  VALUE value;
12162  VALUE file;
12167 void rb_free_const_table(struct rb_id_table *tbl);
12172 int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
12175 struct gen_ivtbl {
12176  uint32_t numiv;
12177  VALUE ivptr[];
12178 };
12179 struct st_table *rb_ivar_generic_ivtbl(void);
12181 extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
12184  int argc, const VALUE *argv, int priv);
12185 static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
12186 static VALUE
12188 {
12189  VALUE e = rb_obj_alloc(rb_class_real((((struct RBasic*)(exc))->klass)));
12190  rb_obj_copy_ivar(e, exc);
12191  return e;
12192 }
12193 __attribute__ ((__noreturn__)) static void ec_stack_overflow(rb_execution_context_t *ec, int);
12194 static void
12195 ec_stack_overflow(rb_execution_context_t *ec, int setup)
12196 {
12197  VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
12199  if (setup) {
12200  VALUE at = rb_ec_backtrace_object(ec);
12201  mesg = ruby_vm_special_exception_copy(mesg);
12202  rb_ivar_set(mesg, idBt, at);
12203  rb_ivar_set(mesg, idBt_locations, at);
12204  }
12205  ec->errinfo = mesg;
12206  rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
12207 }
12208 __attribute__ ((__noreturn__)) static void vm_stackoverflow(void);
12209 static void
12210 vm_stackoverflow(void)
12211 {
12212  ec_stack_overflow(rb_current_execution_context(), 1);
12213 }
12214 __attribute__ ((__noreturn__)) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
12215 static void
12217 {
12218  if (crit || rb_during_gc()) {
12220  ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
12221  rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
12222  }
12223  ec_stack_overflow(ec, 1);
12224 }
12225 #define vm_check_canary(ec,sp)
12226 #define vm_check_frame(a,b,c,d)
12227 static inline rb_control_frame_t *
12228 vm_push_frame(rb_execution_context_t *ec,
12229  const rb_iseq_t *iseq,
12230  VALUE type,
12231  VALUE self,
12232  VALUE specval,
12233  VALUE cref_or_me,
12234  const VALUE *pc,
12235  VALUE *sp,
12236  int local_size,
12237  int stack_max)
12238 {
12239  rb_control_frame_t *const cfp = ((ec->cfp)-1);
12240  ;
12241  ((void)0);
12242  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*(sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)((sp) + (local_size + stack_max)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
12243  ;
12244  ec->cfp = cfp;
12245  cfp->pc = (VALUE *)pc;
12246  cfp->iseq = (rb_iseq_t *)iseq;
12247  cfp->self = self;
12248  cfp->block_code = ((void *)0);
12249  for (int i=0; i < local_size; i++) {
12250  *sp++ = ((VALUE)RUBY_Qnil);
12251  }
12252  ((void)0);
12253  ((void)0);
12254  ((void)0);
12255  *sp++ = cref_or_me;
12256  *sp++ = specval ;
12257  *sp = type;
12258  cfp->ep = sp;
12259  cfp->__bp__ = cfp->sp = sp + 1;
12260  if (0 == 2) {
12261  rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
12262  }
12263  return cfp;
12264 }
12265 static inline int
12266 vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
12267 {
12268  VALUE flags = ep[( 0)];
12269  if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
12270  if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
12271  rb_vm_check_ints(ec);
12272  ec->cfp = ((cfp)+1);
12273  return flags & VM_FRAME_FLAG_FINISH;
12274 }
12275 static void
12277 {
12278  vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
12279 }
12280 static inline VALUE
12281 rb_arity_error_new(int argc, int min, int max)
12282 {
12283  VALUE err_mess = 0;
12284  if (min == max) {
12285  err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min);
12286  }
12287  else if (max == (-1)) {
12288  err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min);
12289  }
12290  else {
12291  err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max);
12292  }
12293  return rb_exc_new_str(rb_eArgError, err_mess);
12294 }
12295 static void
12296 rb_error_arity(int argc, int min, int max)
12297 {
12298  rb_exc_raise(rb_arity_error_new(argc, min, max));
12299 }
12300 __attribute__ ((__noinline__)) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
12301 static void
12302 vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
12303 {
12304  rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
12305  VM_FORCE_WRITE(&ep[index], v);
12306  VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
12307  ((void)0);
12308 }
12309 static inline void
12310 vm_env_write(const VALUE *ep, int index, VALUE v)
12311 {
12312  VALUE flags = ep[( 0)];
12313  if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
12314  VM_STACK_ENV_WRITE(ep, index, v);
12315  }
12316  else {
12317  vm_env_write_slowpath(ep, index, v);
12318  }
12319 }
12320 static VALUE
12322 {
12323  if (block_handler == 0) {
12324  return ((VALUE)RUBY_Qnil);
12325  }
12326  else {
12327  switch (vm_block_handler_type(block_handler)) {
12330  return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
12332  return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
12334  return VM_BH_TO_PROC(block_handler);
12335  default:
12336  __builtin_unreachable();
12337  }
12338  }
12339 }
12340 static inline struct vm_svar *
12341 lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
12342 {
12343  VALUE svar;
12344  if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
12345  svar = lep[(-2)];
12346  }
12347  else {
12348  svar = ec->root_svar;
12349  }
12350  ((void)0);
12351  return (struct vm_svar *)svar;
12352 }
12353 static inline void
12354 lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
12355 {
12356  ((void)0);
12357  if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
12358  vm_env_write(lep, (-2), (VALUE)svar);
12359  }
12360  else {
12361  __extension__({
12362 #pragma GCC diagnostic push
12363 ;
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; });
12368  }
12369 }
12370 static VALUE
12371 lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
12372 {
12373  const struct vm_svar *svar = lep_svar(ec, lep);
12374  if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
12375  switch (key) {
12376  case VM_SVAR_LASTLINE:
12377  return svar->lastline;
12378  case VM_SVAR_BACKREF:
12379  return svar->backref;
12380  default: {
12381  const VALUE ary = svar->others;
12382  if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
12383  return ((VALUE)RUBY_Qnil);
12384  }
12385  else {
12386  return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
12387  }
12388  }
12389  }
12390 }
12391 static struct vm_svar *
12392 svar_new(VALUE obj)
12393 {
12395 }
12396 static void
12397 lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
12398 {
12399  struct vm_svar *svar = lep_svar(ec, lep);
12400  if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
12401  lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
12402  }
12403  switch (key) {
12404  case VM_SVAR_LASTLINE:
12405  __extension__({
12406 #pragma GCC diagnostic push
12407 ;
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; });
12412  return;
12413  case VM_SVAR_BACKREF:
12414  __extension__({
12415 #pragma GCC diagnostic push
12416 ;
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; });
12421  return;
12422  default: {
12423  VALUE ary = svar->others;
12424  if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
12425  __extension__({
12426 #pragma GCC diagnostic push
12427  ;
12428 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12429  ; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.2/vm_insnhelper.c", 541)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.2/vm_insnhelper.c", 541));
12430 #pragma GCC diagnostic pop
12431  ; unaligned_member_access_result; });
12432  }
12433  rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
12434  }
12435  }
12436 }
12437 static inline VALUE
12438 vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
12439 {
12440  VALUE val;
12441  if (type == 0) {
12442  val = lep_svar_get(ec, lep, key);
12443  }
12444  else {
12445  VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
12446  if (type & 0x01) {
12447  switch (type >> 1) {
12448  case '&':
12449  val = rb_reg_last_match(backref);
12450  break;
12451  case '`':
12452  val = rb_reg_match_pre(backref);
12453  break;
12454  case '\'':
12455  val = rb_reg_match_post(backref);
12456  break;
12457  case '+':
12458  val = rb_reg_match_last(backref);
12459  break;
12460  default:
12461  rb_bug("unexpected back-ref");
12462  }
12463  }
12464  else {
12465  val = rb_reg_nth_match((int)(type >> 1), backref);
12466  }
12467  }
12468  return val;
12469 }
12470 __attribute__ ((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
12472 check_method_entry(VALUE obj, int can_be_svar)
12473 {
12474  if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
12475  switch (imemo_type(obj)) {
12476  case imemo_ment:
12477  return (rb_callable_method_entry_t *)obj;
12478  case imemo_cref:
12479  return ((void *)0);
12480  case imemo_svar:
12481  if (can_be_svar) {
12482  return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
12483  }
12484  default:
12485  return ((void *)0);
12486  }
12487 }
12488 static const rb_callable_method_entry_t *
12490 {
12491  const VALUE *ep = cfp->ep;
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);
12496  }
12497  return check_method_entry(ep[(-2)], 1);
12498 }
12499 static rb_cref_t *
12500 method_entry_cref(rb_callable_method_entry_t *me)
12501 {
12502  switch (me->def->type) {
12503  case VM_METHOD_TYPE_ISEQ:
12504  return me->def->body.iseq.cref;
12505  default:
12506  return ((void *)0);
12507  }
12508 }
12509 __attribute__ ((__pure__)) static rb_cref_t *check_cref(VALUE, int);
12510 static rb_cref_t *
12511 check_cref(VALUE obj, int can_be_svar)
12512 {
12513  if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
12514  switch (imemo_type(obj)) {
12515  case imemo_ment:
12516  return method_entry_cref((rb_callable_method_entry_t *)obj);
12517  case imemo_cref:
12518  return (rb_cref_t *)obj;
12519  case imemo_svar:
12520  if (can_be_svar) {
12521  return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
12522  }
12523  default:
12524  return ((void *)0);
12525  }
12526 }
12527 static inline rb_cref_t *
12528 vm_env_cref(const VALUE *ep)
12529 {
12530  rb_cref_t *cref;
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);
12534  }
12535  return check_cref(ep[(-2)], 1);
12536 }
12537 static int
12538 is_cref(const VALUE v, int can_be_svar)
12539 {
12540  if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 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_IMEMO)))) {
12541  switch (imemo_type(v)) {
12542  case imemo_cref:
12543  return 1;
12544  case imemo_svar:
12545  if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
12546  default:
12547  break;
12548  }
12549  }
12550  return 0;
12551 }
12552 static int
12553 vm_env_cref_by_cref(const VALUE *ep)
12554 {
12555  while (!VM_ENV_LOCAL_P(ep)) {
12556  if (is_cref(ep[(-2)], 0)) return 1;
12557  ep = VM_ENV_PREV_EP(ep);
12558  }
12559  return is_cref(ep[(-2)], 1);
12560 }
12561 static rb_cref_t *
12562 cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
12563 {
12564  const VALUE v = *vptr;
12565  rb_cref_t *cref, *new_cref;
12566  if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 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_IMEMO)))) {
12567  switch (imemo_type(v)) {
12568  case imemo_cref:
12569  cref = (rb_cref_t *)v;
12570  new_cref = vm_cref_dup(cref);
12571  if (parent) {
12572  __extension__({
12573 #pragma GCC diagnostic push
12574  ;
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; });
12579  }
12580  else {
12581  VM_FORCE_WRITE(vptr, (VALUE)new_cref);
12582  }
12583  return (rb_cref_t *)new_cref;
12584  case imemo_svar:
12585  if (can_be_svar) {
12586  return cref_replace_with_duplicated_cref_each_frame((const VALUE *)&((struct vm_svar *)v)->cref_or_me, 0, v);
12587  }
12588  case imemo_ment:
12589  rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
12590  default:
12591  break;
12592  }
12593  }
12594  return 0;
12595 }
12596 static rb_cref_t *
12597 vm_cref_replace_with_duplicated_cref(const VALUE *ep)
12598 {
12599  if (vm_env_cref_by_cref(ep)) {
12600  rb_cref_t *cref;
12601  VALUE envval;
12602  while (!VM_ENV_LOCAL_P(ep)) {
12603  envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
12604  if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void *)0)) {
12605  return cref;
12606  }
12607  ep = VM_ENV_PREV_EP(ep);
12608  }
12609  envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
12610  return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
12611  }
12612  else {
12613  rb_bug("vm_cref_dup: unreachable");
12614  }
12615 }
12616 static rb_cref_t *
12617 vm_get_cref(const VALUE *ep)
12618 {
12619  rb_cref_t *cref = vm_env_cref(ep);
12620  if (cref != ((void *)0)) {
12621  return cref;
12622  }
12623  else {
12624  rb_bug("vm_get_cref: unreachable");
12625  }
12626 }
12627 static rb_cref_t *
12628 vm_ec_cref(const rb_execution_context_t *ec)
12629 {
12631  if (cfp == ((void *)0)) {
12632  return ((void *)0);
12633  }
12634  return vm_get_cref(cfp->ep);
12635 }
12636 static const rb_cref_t *
12637 vm_get_const_key_cref(const VALUE *ep)
12638 {
12639  const rb_cref_t *cref = vm_get_cref(ep);
12640  const rb_cref_t *key_cref = cref;
12641  while (cref) {
12642  if (((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0) ||
12643  ((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_USER6)))):0)) {
12644  return key_cref;
12645  }
12646  cref = CREF_NEXT(cref);
12647  }
12648  return ((void *)0);
12649 }
12650 void
12651 rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
12652 {
12653  rb_cref_t *new_cref;
12654  while (cref) {
12655  if (CREF_CLASS(cref) == old_klass) {
12656  new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
12657  *new_cref_ptr = new_cref;
12658  return;
12659  }
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;
12663  new_cref_ptr = (rb_cref_t **)&new_cref->next;
12664  }
12665  *new_cref_ptr = ((void *)0);
12666 }
12667 static rb_cref_t *
12668 vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval)
12669 {
12670  rb_cref_t *prev_cref = ((void *)0);
12671  if (ep) {
12672  prev_cref = vm_env_cref(ep);
12673  }
12674  else {
12675  rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
12676  if (cfp) {
12677  prev_cref = vm_env_cref(cfp->ep);
12678  }
12679  }
12680  return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval);
12681 }
12682 static inline VALUE
12683 vm_get_cbase(const VALUE *ep)
12684 {
12685  const rb_cref_t *cref = vm_get_cref(ep);
12687  while (cref) {
12688  if ((klass = CREF_CLASS(cref)) != 0) {
12689  break;
12690  }
12691  cref = CREF_NEXT(cref);
12692  }
12693  return klass;
12694 }
12695 static inline VALUE
12696 vm_get_const_base(const VALUE *ep)
12697 {
12698  const rb_cref_t *cref = vm_get_cref(ep);
12700  while (cref) {
12701  if (!CREF_PUSHED_BY_EVAL(cref) &&
12702  (klass = CREF_CLASS(cref)) != 0) {
12703  break;
12704  }
12705  cref = CREF_NEXT(cref);
12706  }
12707  return klass;
12708 }
12709 static inline void
12710 vm_check_if_namespace(VALUE klass)
12711 {
12712  if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS))) && !( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
12713  rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
12714  }
12715 }
12716 static inline void
12717 vm_ensure_not_refinement_module(VALUE self)
12718 {
12719  if (( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(self))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((self) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((self) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((self) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((self) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(self)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_MODULE))) && ((!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((self)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
12720  rb_warn("not defined at the refinement, but at the outer class/module");
12721  }
12722 }
12723 static inline VALUE
12724 vm_get_iclass(rb_control_frame_t *cfp, VALUE klass)
12725 {
12726  return klass;
12727 }
12728 static inline VALUE
12729 vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
12730 {
12732  VALUE val;
12733  if (orig_klass == ((VALUE)RUBY_Qnil) && allow_nil) {
12734  const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
12735  const rb_cref_t *cref;
12736  VALUE klass = ((VALUE)RUBY_Qnil);
12737  while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
12738  root_cref = CREF_NEXT(root_cref);
12739  }
12740  cref = root_cref;
12741  while (cref && CREF_NEXT(cref)) {
12742  if (CREF_PUSHED_BY_EVAL(cref)) {
12743  klass = ((VALUE)RUBY_Qnil);
12744  }
12745  else {
12746  klass = CREF_CLASS(cref);
12747  }
12748  cref = CREF_NEXT(cref);
12749  if (!!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
12750  VALUE av, am = 0;
12751  rb_const_entry_t *ce;
12752  search_continue:
12753  if ((ce = rb_const_lookup(klass, id))) {
12755  val = ce->value;
12756  if (val == ((VALUE)RUBY_Qundef)) {
12757  if (am == klass) break;
12758  am = klass;
12759  if (is_defined) return 1;
12760  if (rb_autoloading_value(klass, id, &av, ((void *)0))) return av;
12761  rb_autoload_load(klass, id);
12762  goto search_continue;
12763  }
12764  else {
12765  if (is_defined) {
12766  return 1;
12767  }
12768  else {
12769  return val;
12770  }
12771  }
12772  }
12773  }
12774  }
12775  if (root_cref && !!((VALUE)(CREF_CLASS(root_cref)) != ((VALUE)RUBY_Qnil))) {
12776  klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
12777  }
12778  else {
12779  klass = rb_class_of((VALUE)(ec->cfp->self));
12780  }
12781  if (is_defined) {
12782  return rb_const_defined(klass, id);
12783  }
12784  else {
12785  return rb_const_get(klass, id);
12786  }
12787  }
12788  else {
12789  vm_check_if_namespace(orig_klass);
12790  if (is_defined) {
12791  return rb_public_const_defined_from(orig_klass, id);
12792  }
12793  else {
12794  return rb_public_const_get_from(orig_klass, id);
12795  }
12796  }
12797 }
12798 static inline VALUE
12799 vm_get_cvar_base(const rb_cref_t *cref, rb_control_frame_t *cfp)
12800 {
12801  VALUE klass;
12802  if (!cref) {
12803  rb_bug("vm_get_cvar_base: no cref");
12804  }
12805  while (CREF_NEXT(cref) &&
12806  (!((VALUE)(CREF_CLASS(cref)) != ((VALUE)RUBY_Qnil)) || ((!(((VALUE)(CREF_CLASS(cref)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(CREF_CLASS(cref)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(CREF_CLASS(cref)))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((CREF_CLASS(cref))))->flags&((((VALUE)RUBY_FL_SINGLETON)))):0) ||
12807  CREF_PUSHED_BY_EVAL(cref))) {
12808  cref = CREF_NEXT(cref);
12809  }
12810  if (!CREF_NEXT(cref)) {
12811  rb_warn("class variable access from toplevel");
12812  }
12813  klass = vm_get_iclass(cfp, CREF_CLASS(cref));
12814  if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
12815  rb_raise(rb_eTypeError, "no class variables available");
12816  }
12817  return klass;
12818 }
12819 static VALUE
12820 vm_search_const_defined_class(const VALUE cbase, ID id)
12821 {
12822  if (rb_const_defined_at(cbase, id)) return cbase;
12823  if (cbase == rb_cObject) {
12824  VALUE tmp = RCLASS_SUPER(cbase);
12825  while (tmp) {
12826  if (rb_const_defined_at(tmp, id)) return tmp;
12827  tmp = RCLASS_SUPER(tmp);
12828  }
12829  }
12830  return 0;
12831 }
12832 __attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, IVC, struct rb_call_cache *, int);
12833 static inline VALUE
12834 vm_getivar(VALUE obj, ID id, IVC ic, struct rb_call_cache *cc, int is_attr)
12835 {
12836  VALUE val = ((VALUE)RUBY_Qundef);
12837  if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12838  }
12839  else if ((__builtin_expect(!!(is_attr ? (cc->aux.index > 0) : (ic->ic_serial == ((((struct RClass*)(((struct RBasic*)(obj))->klass))->ptr)->class_serial))), 1))) {
12840  st_index_t index = !is_attr ? ic->index : (cc->aux.index - 1);
12841  ((void)0);
12842  if ((__builtin_expect(!!((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT), 1)) &&
12843  (__builtin_expect(!!(index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv)), 1))) {
12844  val = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr)[index];
12845  }
12846  else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
12847  struct gen_ivtbl *ivtbl;
12849  (__builtin_expect(!!(index < ivtbl->numiv), 1))) {
12850  val = ivtbl->ivptr[index];
12851  }
12852  }
12853  goto ret;
12854  }
12855  else {
12856  struct st_table *iv_index_tbl;
12857  st_index_t numiv;
12858  VALUE *ivptr;
12859  st_data_t index;
12860  if ((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT) {
12861  iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
12862  numiv = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv);
12863  ivptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
12864  fill:
12865  if (iv_index_tbl) {
12866  if (rb_st_lookup(iv_index_tbl, id, &index)) {
12867  if (!is_attr) {
12868  ic->index = index;
12869  ic->ic_serial = ((((struct RClass*)(((struct RBasic*)(obj))->klass))->ptr)->class_serial);
12870  }
12871  else {
12872  cc->aux.index = (int)index + 1;
12873  }
12874  if (index < numiv) {
12875  val = ivptr[index];
12876  }
12877  }
12878  }
12879  }
12880  else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
12881  struct gen_ivtbl *ivtbl;
12883  numiv = ivtbl->numiv;
12884  ivptr = ivtbl->ivptr;
12885  iv_index_tbl = ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl);
12886  goto fill;
12887  }
12888  }
12889  else {
12890  goto general_path;
12891  }
12892  ret:
12893  if ((__builtin_expect(!!(val != ((VALUE)RUBY_Qundef)), 1))) {
12894  return val;
12895  }
12896  else {
12897  if (!is_attr && !(((VALUE)((*rb_ruby_verbose_ptr())) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
12898  rb_warning("instance variable %""l""i" "\v"" not initialized", rb_id_quote_unprintable(id));
12899  }
12900  return ((VALUE)RUBY_Qnil);
12901  }
12902  }
12903  general_path:
12904  ((void)0);
12905  if (is_attr) {
12906  return rb_attr_get(obj, id);
12907  }
12908  else {
12909  return rb_ivar_get(obj, id);
12910  }
12911 }
12912 static inline VALUE
12913 vm_setivar(VALUE obj, ID id, VALUE val, IVC ic, struct rb_call_cache *cc, int is_attr)
12914 {
12915  do { VALUE frozen_obj = (obj); if ((__builtin_expect(!!((!(!(((VALUE)(frozen_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(frozen_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(frozen_obj))->flags & RUBY_T_MASK) != RUBY_T_NODE) || (((struct RBasic*)(frozen_obj))->flags&RUBY_FL_FREEZE))), 0))) { rb_error_frozen_object(frozen_obj); } } while (0);
12916  if ((__builtin_expect(!!(( ((RUBY_T_OBJECT) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_OBJECT) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_OBJECT) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_OBJECT) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_OBJECT) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_OBJECT) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_OBJECT) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_OBJECT)))), 1))) {
12917  VALUE klass = ((struct RBasic*)(obj))->klass;
12918  st_data_t index;
12919  if ((__builtin_expect(!!((!is_attr && (ic->ic_serial == ((((struct RClass*)(klass))->ptr)->class_serial))) || ( is_attr && (cc->aux.index > 0))), 1))) {
12920  VALUE *ptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
12921  index = !is_attr ? ic->index : cc->aux.index-1;
12922  if ((index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv))) {
12923  __extension__({
12924 #pragma GCC diagnostic push
12925  ;
12926 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12927  ; typeof(rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.2/vm_insnhelper.c", 1127)) unaligned_member_access_result = (rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.2/vm_insnhelper.c", 1127));
12928 #pragma GCC diagnostic pop
12929  ; unaligned_member_access_result; });
12930  ((void)0);
12931  return val;
12932  }
12933  }
12934  else {
12935  struct st_table *iv_index_tbl = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl) : ((struct RObject*)(obj))->as.heap.iv_index_tbl);
12937  if (!is_attr) {
12938  ic->index = index;
12939  ic->ic_serial = ((((struct RClass*)(klass))->ptr)->class_serial);
12940  }
12941  else if (index >= 0x7fffffff) {
12942  rb_raise(rb_eArgError, "too many instance variables");
12943  }
12944  else {
12945  cc->aux.index = (int)(index + 1);
12946  }
12947  }
12948  }
12949  }
12950  else {
12951  ((void)0);
12952  }
12953  ((void)0);
12954  return rb_ivar_set(obj, id, val);
12955 }
12956 static inline VALUE
12957 vm_getinstancevariable(VALUE obj, ID id, IVC ic)
12958 {
12959  return vm_getivar(obj, id, ic, ((void *)0), 0);
12960 }
12961 static inline void
12962 vm_setinstancevariable(VALUE obj, ID id, VALUE val, IVC ic)
12963 {
12964  vm_setivar(obj, id, val, ic, 0, 0);
12965 }
12966 static VALUE
12967 vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
12968 {
12969  if ((((int)(long)(err))&RUBY_FIXNUM_FLAG)) {
12970  ec->tag->state = ((int)((long)(((long)(err))>>(int)(1))));
12971  }
12972  else if (((((VALUE)(err)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(err) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(err) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(err))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
12973  ec->tag->state = RUBY_TAG_THROW;
12974  }
12975  else if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(err)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(err)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(err)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(err))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
12976  ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
12977  }
12978  else {
12979  ec->tag->state = RUBY_TAG_RAISE;
12980  }
12981  return err;
12982 }
12983 static VALUE
12984 vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
12985  const int flag, const VALUE throwobj)
12986 {
12987  const rb_control_frame_t *escape_cfp = ((void *)0);
12988  const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
12989  if (flag != 0) {
12990  }
12991  else if (state == RUBY_TAG_BREAK) {
12992  int is_orphan = 1;
12993  const VALUE *ep = ((((reg_cfp)->ep)));
12994  const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
12995  escape_cfp = reg_cfp;
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;
13001  }
13002  else {
13003  ep = VM_ENV_PREV_EP(ep);
13004  base_iseq = base_iseq->body->parent_iseq;
13005  escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
13006  ((void)0);
13007  }
13008  }
13009  if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13010  is_orphan = 0;
13011  state = RUBY_TAG_RETURN;
13012  }
13013  else {
13014  ep = VM_ENV_PREV_EP(ep);
13015  while (escape_cfp < eocfp) {
13016  if (escape_cfp->ep == ep) {
13017  const rb_iseq_t *const iseq = escape_cfp->iseq;
13018  const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded;
13019  const struct iseq_catch_table *const ct = iseq->body->catch_table;
13020  unsigned int i;
13021  if (!ct) break;
13022  for (i=0; i < ct->size; i++) {
13023  const struct iseq_catch_table_entry *const entry =
13024  __extension__({
13025 #pragma GCC diagnostic push
13026  ;
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; });
13031  if (entry->type == CATCH_TYPE_BREAK &&
13032  entry->iseq == base_iseq &&
13033  entry->start < epc && entry->end >= epc) {
13034  if (entry->cont == epc) {
13035  is_orphan = 0;
13036  }
13037  break;
13038  }
13039  }
13040  break;
13041  }
13042  escape_cfp = ((escape_cfp)+1);
13043  }
13044  }
13045  if (is_orphan) {
13046  rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
13047  }
13048  }
13049  else if (state == RUBY_TAG_RETRY) {
13050  const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
13051  escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
13052  }
13053  else if (state == RUBY_TAG_RETURN) {
13054  const VALUE *current_ep = ((((reg_cfp)->ep)));
13055  const VALUE *target_lep = VM_EP_LEP(current_ep);
13056  int in_class_frame = 0;
13057  int toplevel = 1;
13058  escape_cfp = reg_cfp;
13059  while (escape_cfp < eocfp) {
13060  const VALUE *lep = VM_CF_LEP(escape_cfp);
13061  if (!target_lep) {
13062  target_lep = lep;
13063  }
13064  if (lep == target_lep &&
13065  VM_FRAME_RUBYFRAME_P(escape_cfp) &&
13066  escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
13067  in_class_frame = 1;
13068  target_lep = 0;
13069  }
13070  if (lep == target_lep) {
13071  if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13072  toplevel = 0;
13073  if (in_class_frame) {
13074  goto valid_return;
13075  }
13076  else {
13077  const VALUE *tep = current_ep;
13078  while (target_lep != tep) {
13079  if (escape_cfp->ep == tep) {
13080  goto valid_return;
13081  }
13082  tep = VM_ENV_PREV_EP(tep);
13083  }
13084  }
13085  }
13086  else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
13087  switch (escape_cfp->iseq->body->type) {
13088  case ISEQ_TYPE_TOP:
13089  case ISEQ_TYPE_MAIN:
13090  if (toplevel) {
13091  if (in_class_frame) goto unexpected_return;
13092  goto valid_return;
13093  }
13094  break;
13095  case ISEQ_TYPE_EVAL:
13096  case ISEQ_TYPE_CLASS:
13097  toplevel = 0;
13098  break;
13099  default:
13100  break;
13101  }
13102  }
13103  }
13104  if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
13105  goto valid_return;
13106  }
13107  escape_cfp = ((escape_cfp)+1);
13108  }
13109  unexpected_return:;
13110  rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
13111  valid_return:;
13112  }
13113  else {
13114  rb_bug("isns(throw): unsupported throw type");
13115  }
13116  ec->tag->state = state;
13117  return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
13118 }
13119 static VALUE
13121  rb_num_t throw_state, VALUE throwobj)
13122 {
13123  const int state = (int)(throw_state & VM_THROW_STATE_MASK);
13124  const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
13125  if (state != 0) {
13126  return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
13127  }
13128  else {
13129  return vm_throw_continue(ec, throwobj);
13130  }
13131 }
13132 static inline void
13133 vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
13134 {
13135  int is_splat = flag & 0x01;
13136  rb_num_t space_size = num + is_splat;
13137  VALUE *base = sp - 1;
13138  const VALUE *ptr;
13139  rb_num_t len;
13140  const VALUE obj = ary;
13141  if (!( ((RUBY_T_ARRAY) == RUBY_T_FIXNUM) ? (((int)(long)(ary))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ARRAY) == RUBY_T_TRUE) ? ((ary) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ARRAY) == RUBY_T_FALSE) ? ((ary) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ARRAY) == RUBY_T_NIL) ? ((ary) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ARRAY) == RUBY_T_UNDEF) ? ((ary) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ARRAY) == RUBY_T_SYMBOL) ? ((((VALUE)(ary)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ARRAY) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_ARRAY))) && !((VALUE)(ary = rb_check_array_type(ary)) != ((VALUE)RUBY_Qnil))) {
13142  ary = obj;
13143  ptr = &ary;
13144  len = 1;
13145  }
13146  else {
13147  ptr = rb_array_const_ptr_transient(ary);
13148  len = (rb_num_t)rb_array_len(ary);
13149  }
13150  if (space_size == 0) {
13151  }
13152  else if (flag & 0x02) {
13153  rb_num_t i = 0, j;
13154  if (len < num) {
13155  for (i=0; i<num-len; i++) {
13156  *base++ = ((VALUE)RUBY_Qnil);
13157  }
13158  }
13159  for (j=0; i<num; i++, j++) {
13160  VALUE v = ptr[len - j - 1];
13161  *base++ = v;
13162  }
13163  if (is_splat) {
13164  *base = rb_ary_new_from_values(len - j, ptr);
13165  }
13166  }
13167  else {
13168  rb_num_t i;
13169  VALUE *bptr = &base[space_size - 1];
13170  for (i=0; i<num; i++) {
13171  if (len <= i) {
13172  for (; i<num; i++) {
13173  *bptr-- = ((VALUE)RUBY_Qnil);
13174  }
13175  break;
13176  }
13177  *bptr-- = ptr[i];
13178  }
13179  if (is_splat) {
13180  if (num > len) {
13181  *bptr = rb_ary_new();
13182  }
13183  else {
13184  *bptr = rb_ary_new_from_values(len - num, ptr + num);
13185  }
13186  }
13187  }
13188  (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
13189 }
13190 static VALUE vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
13191 __attribute__((__artificial__))
13192 static inline vm_call_handler
13193 calccall(const struct rb_call_data *cd, const rb_callable_method_entry_t *me)
13194 {
13195  const struct rb_call_info *ci = &cd->ci;
13196  const struct rb_call_cache *cc = &cd->cc;
13197  if ((__builtin_expect(!!(!me), 0))) {
13198  ((void)0);
13199  return vm_call_general;
13200  }
13201  else if ((__builtin_expect(!!(cc->me != me), 1))) {
13202  ((void)0);
13203  return vm_call_general;
13204  }
13205  else if ((__builtin_expect(!!(cc->method_serial != me->def->method_serial), 0))) {
13206  ((void)0);
13207  return vm_call_general;
13208  }
13209  else if (((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) != METHOD_VISI_PUBLIC) &&
13210  !(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
13211  ((void)0);
13212  return vm_call_general;
13213  }
13214  else {
13215  ((void)0);
13216  (void)(cc->call != vm_call_general);
13217  return cc->call;
13218  }
13219 }
13220 __attribute__ ((__visibility__("default"))) extern void
13222 {
13223  const struct rb_call_info *ci = &cd->ci;
13224  struct rb_call_cache *cc = &cd->cc;
13227  const vm_call_handler call = calccall(cd, me);
13228  struct rb_call_cache buf = {
13230  { ((((struct RClass*)(klass))->ptr)->class_serial) },
13231  me,
13232  me ? me->def->method_serial : 0,
13233  call,
13234  };
13235  if (call != vm_call_general) {
13236  for (int i = 0; i < ((int)(sizeof(cc->class_serial) / sizeof((cc->class_serial)[0]))) - 1; i++) {
13237  buf.class_serial[i + 1] = cc->class_serial[i];
13238  }
13239  }
13240  ((__builtin_object_size((cc), 0) != (size_t)-1) ? __builtin___memcpy_chk((cc), (&buf), sizeof(struct rb_call_cache)*(size_t)(1), __builtin_object_size((cc), 0)) : __memcpy_ichk((cc), (&buf), sizeof(struct rb_call_cache)*(size_t)(1)));
13241  ((void)0);
13242 }
13243 static inline _Bool
13244 vm_cache_check_for_class_serial(struct rb_call_cache *cc, rb_serial_t class_serial)
13245 {
13246  int i;
13247  rb_serial_t j;
13248  for (i = 0; i < ((int)(sizeof(cc->class_serial) / sizeof((cc->class_serial)[0]))); i++) {
13249  j = cc->class_serial[i];
13250  if (! j) {
13251  break;
13252  }
13253  else if (j != class_serial) {
13254  continue;
13255  }
13256  else if (! i) {
13257  return 1;
13258  }
13259  else {
13260  goto hit;
13261  }
13262  }
13263  ((void)0);
13264  return 0;
13265  hit:
13266  for (; i > 0; i--) {
13267  cc->class_serial[i] = cc->class_serial[i - 1];
13268  }
13269  cc->class_serial[0] = j;
13270  ((__builtin_object_size((&cc->aux), 0) != (size_t)-1) ? __builtin___memset_chk((&cc->aux), 0, sizeof(cc->aux)*(size_t)(1), __builtin_object_size((&cc->aux), 0)) : __memset_ichk((&cc->aux), 0, sizeof(cc->aux)*(size_t)(1)));
13271  return 1;
13272 }
13273 static void
13274 vm_search_method_fastpath(struct rb_call_data *cd, VALUE klass)
13275 {
13276  struct rb_call_cache *cc = &cd->cc;
13277  if ((__builtin_expect(!!(((ruby_vm_global_method_state) == cc->method_state) && vm_cache_check_for_class_serial(cc, ((((struct RClass*)(klass))->ptr)->class_serial))), 1))) {
13278  ((void)0);
13279  ((void)0);
13280  return;
13281  }
13282  ((void)0);
13284 }
13285 static void
13286 vm_search_method(struct rb_call_data *cd, VALUE recv)
13287 {
13288  VALUE klass = rb_class_of((VALUE)(recv));
13289  ((void)0);
13290  ((void)0);
13291  vm_search_method_fastpath(cd, klass);
13292 }
13293 static inline int
13294 check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)())
13295 {
13296  if (me && me->def->type == VM_METHOD_TYPE_CFUNC &&
13297  me->def->body.cfunc.func == func) {
13298  return 1;
13299  }
13300  else {
13301  return 0;
13302  }
13303 }
13304 static inline int
13305 vm_method_cfunc_is(CALL_DATA cd, VALUE recv, VALUE (*func)())
13306 {
13307  vm_search_method(cd, recv);
13308  return check_cfunc(cd->cc.me, func);
13309 }
13310 static VALUE
13311 opt_equal_fallback(VALUE recv, VALUE obj, CALL_DATA cd)
13312 {
13313  if (vm_method_cfunc_is(cd, recv, rb_obj_equal)) {
13314  return recv == obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13315  }
13316  return ((VALUE)RUBY_Qundef);
13317 }
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
13321 FIXNUM_2_P(VALUE a, VALUE b)
13322 {
13323  long x = a;
13324  long y = b;
13325  long z = x & y & 1;
13326  return z == 1;
13327 }
13328 static inline _Bool
13329 FLONUM_2_P(VALUE a, VALUE b)
13330 {
13331  return 0;
13332 }
13333 static inline int
13334 comparable_by_identity(VALUE recv, VALUE obj)
13335 {
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;
13338  }
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;
13341  }
13342  if (((((VALUE)(recv)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(recv))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
13343  return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
13344  }
13345  return 0;
13346 }
13347 static
13348 inline
13349 VALUE
13350 opt_eq_func(VALUE recv, VALUE obj, CALL_DATA cd)
13351 {
13352  switch (comparable_by_identity(recv, obj)) {
13353  case 1:
13354  return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13355  case -1:
13356  goto fallback;
13357  }
13358  if (0) {
13359  }
13360  else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
13361  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
13362  return rb_float_equal(recv, obj);
13363  }
13364  }
13365  else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString) && ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
13366  if (recv == obj) return ((VALUE)RUBY_Qtrue);
13367  if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
13368  return rb_str_eql_internal(recv, obj);
13369  }
13370  }
13371  fallback:
13372  return opt_equal_fallback(recv, obj, cd);
13373 }
13374 static
13375 inline
13376 VALUE
13377 opt_eql_func(VALUE recv, VALUE obj, CALL_DATA cd)
13378 {
13379  switch (comparable_by_identity(recv, obj)) {
13380  case 1:
13381  return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13382  case -1:
13383  goto fallback;
13384  }
13385  if (0) {
13386  }
13387  else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
13388  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
13389  return rb_float_eql(recv, obj);
13390  }
13391  }
13392  else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString)) {
13393  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
13394  return rb_str_eql(recv, obj);
13395  }
13396  }
13397  fallback:
13398  return opt_equal_fallback(recv, obj, cd);
13399 }
13400 #undef BUILTIN_CLASS_P
13401 #undef EQ_UNREDEFINED_P
13402 VALUE
13404 {
13405  struct rb_call_data cd = { .ci = { .mid = idEq, }, };
13406  return opt_eq_func(obj1, obj2, &cd);
13407 }
13408 VALUE
13410 {
13411  struct rb_call_data cd = { .ci = { .mid = idEqlP, }, };
13412  return opt_eql_func(obj1, obj2, &cd);
13413 }
13414 extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
13415 static VALUE
13416 check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
13417 {
13418  switch (type) {
13420  return pattern;
13422  if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
13423  rb_raise(rb_eTypeError, "class or module required for rescue clause");
13424  }
13425  case VM_CHECKMATCH_TYPE_CASE: {
13427  rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(pattern)), idEqq, ((void *)0));
13428  if (me) {
13429  return rb_vm_call0(ec, pattern, idEqq, 1, &target, me, 0);
13430  }
13431  else {
13432  return __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, pattern, idEqq, 1, &target); });
13433  }
13434  }
13435  default:
13436  rb_bug("check_match: unreachable");
13437  }
13438 }
13439 #define CHECK_CMP_NAN(a,b)
13440 static inline VALUE
13441 double_cmp_lt(double a, double b)
13442 {
13443  ;
13444  return a < b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13445 }
13446 static inline VALUE
13447 double_cmp_le(double a, double b)
13448 {
13449  ;
13450  return a <= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13451 }
13452 static inline VALUE
13453 double_cmp_gt(double a, double b)
13454 {
13455  ;
13456  return a > b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13457 }
13458 static inline VALUE
13459 double_cmp_ge(double a, double b)
13460 {
13461  ;
13462  return a >= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13463 }
13464 static inline VALUE *
13465 vm_base_ptr(const rb_control_frame_t *cfp)
13466 {
13467  return cfp->__bp__;
13468 }
13469 __attribute__ ((__noreturn__)) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
13470 __attribute__ ((__noreturn__)) static void argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc);
13471 __attribute__ ((__noreturn__)) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
13472 VALUE rb_keyword_error_new(const char *error, VALUE keys);
13473 static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
13474  enum method_missing_reason call_status, int kw_splat);
13475 __attribute__ ((__visibility__("default"))) extern
13477 struct args_info {
13478  VALUE *argv;
13479  int argc;
13480  int rest_index;
13481  int rest_dupped;
13482  const struct rb_call_info_kw_arg *kw_arg;
13483  VALUE *kw_argv;
13484  VALUE rest;
13485 };
13489 };
13490 static inline void
13491 arg_rest_dup(struct args_info *args)
13492 {
13493  if (!args->rest_dupped) {
13494  args->rest = rb_ary_dup(args->rest);
13495  args->rest_dupped = 1;
13496  }
13497 }
13498 static inline int
13499 args_argc(struct args_info *args)
13500 {
13501  if (args->rest == ((VALUE)RUBY_Qfalse)) {
13502  return args->argc;
13503  }
13504  else {
13505  return args->argc + ((int)(rb_array_len(args->rest))) - args->rest_index;
13506  }
13507 }
13508 static inline void
13509 args_extend(struct args_info *args, const int min_argc)
13510 {
13511  int i;
13512  if (args->rest) {
13513  arg_rest_dup(args);
13514  ((void)0);
13515  for (i=args->argc + ((int)(rb_array_len(args->rest))); i<min_argc; i++) {
13516  rb_ary_push(args->rest, ((VALUE)RUBY_Qnil));
13517  }
13518  }
13519  else {
13520  for (i=args->argc; i<min_argc; i++) {
13521  args->argv[args->argc++] = ((VALUE)RUBY_Qnil);
13522  }
13523  }
13524 }
13525 static inline void
13526 args_reduce(struct args_info *args, int over_argc)
13527 {
13528  if (args->rest) {
13529  const long len = rb_array_len(args->rest);
13530  if (len > over_argc) {
13531  arg_rest_dup(args);
13532  rb_ary_resize(args->rest, len - over_argc);
13533  return;
13534  }
13535  else {
13536  args->rest = ((VALUE)RUBY_Qfalse);
13537  over_argc -= len;
13538  }
13539  }
13540  ((void)0);
13541  args->argc -= over_argc;
13542 }
13543 static inline int
13544 args_check_block_arg0(struct args_info *args)
13545 {
13546  VALUE ary = ((VALUE)RUBY_Qnil);
13547  if (args->rest && rb_array_len(args->rest) == 1) {
13548  VALUE arg0 = (rb_array_const_ptr_transient(args->rest)[0]);
13549  ary = rb_check_array_type(arg0);
13550  }
13551  else if (args->argc == 1) {
13552  VALUE arg0 = args->argv[0];
13553  ary = rb_check_array_type(arg0);
13554  args->argv[0] = arg0;
13555  }
13556  if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
13557  args->rest = ary;
13558  args->rest_index = 0;
13559  args->argc = 0;
13560  return 1;
13561  }
13562  return 0;
13563 }
13564 static inline void
13565 args_copy(struct args_info *args)
13566 {
13567  if (args->rest != ((VALUE)RUBY_Qfalse)) {
13568  int argc = args->argc;
13569  args->argc = 0;
13570  arg_rest_dup(args);
13571  while (args->rest_index > 0 && argc > 0) {
13572  do { const VALUE _ary = (args->rest); const VALUE _v = (args->argv[--argc]); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
13573 #pragma GCC diagnostic push
13574  ;
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);
13579  }
13580  while (argc > 0) {
13581  rb_ary_unshift(args->rest, args->argv[--argc]);
13582  }
13583  }
13584  else if (args->argc > 0) {
13585  args->rest = rb_ary_new_from_values(args->argc, args->argv);
13586  args->rest_index = 0;
13587  args->rest_dupped = 1;
13588  args->argc = 0;
13589  }
13590 }
13591 static inline const VALUE *
13592 args_rest_argv(struct args_info *args)
13593 {
13594  return rb_array_const_ptr_transient(args->rest) + args->rest_index;
13595 }
13596 static inline VALUE
13597 args_rest_array(struct args_info *args)
13598 {
13599  VALUE ary;
13600  if (args->rest) {
13601  ary = rb_ary_behead(args->rest, args->rest_index);
13602  args->rest_index = 0;
13603  args->rest = 0;
13604  }
13605  else {
13606  ary = rb_ary_new();
13607  }
13608  return ary;
13609 }
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
13614 static int
13615 keyword_hash_symbol_other_iter(st_data_t key, st_data_t val, st_data_t arg)
13616 {
13617  *(int*)arg |= ((((VALUE)((VALUE)key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) ? 1 : 2;
13618  if ((*(int*)arg & 3) == 3) {
13619  return ST_STOP;
13620  }
13621  return ST_CONTINUE;
13622 }
13623 static int
13624 keyword_hash_symbol_other(VALUE hash)
13625 {
13626  int symbol_other = 0;
13627  rb_hash_stlike_foreach(hash, keyword_hash_symbol_other_iter, (st_data_t)(&symbol_other));
13628  return symbol_other;
13629 }
13630 static int
13631 keyword_hash_split_iter(st_data_t key, st_data_t val, st_data_t arg)
13632 {
13633  if (((((VALUE)((VALUE)key)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)key))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))) {
13634  rb_hash_aset((VALUE)arg, (VALUE)key, (VALUE)val);
13635  return ST_DELETE;
13636  }
13637  return ST_CONTINUE;
13638 }
13639 static void
13640 keyword_hash_split(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr)
13641 {
13642  *kw_hash_ptr = rb_hash_new();
13643  rb_hash_stlike_foreach(*rest_hash_ptr, keyword_hash_split_iter, (st_data_t)(*kw_hash_ptr));
13644 }
13645 static int
13646 keyword_hash_p(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr, int check_only_symbol)
13647 {
13648  *rest_hash_ptr = rb_check_hash_type(*kw_hash_ptr);
13649  if (!!((VALUE)(*rest_hash_ptr) != ((VALUE)RUBY_Qnil))) {
13650  if (check_only_symbol) {
13651  switch (keyword_hash_symbol_other(*rest_hash_ptr)) {
13652  case 0:
13653  case 1:
13654  break;
13655  case 2:
13656  *kw_hash_ptr = ((VALUE)RUBY_Qnil);
13657  return 0;
13658  case 3:
13659  *rest_hash_ptr = rb_hash_dup(*rest_hash_ptr);
13660  keyword_hash_split(kw_hash_ptr, rest_hash_ptr);
13661  return 1;
13662  }
13663  }
13664  *kw_hash_ptr = *rest_hash_ptr;
13665  *rest_hash_ptr = ((VALUE)RUBY_Qfalse);
13666  return 1;
13667  }
13668  else {
13669  *kw_hash_ptr = ((VALUE)RUBY_Qnil);
13670  return 0;
13671  }
13672 }
13673 static VALUE
13674 args_pop_keyword_hash(struct args_info *args, VALUE *kw_hash_ptr, int check_only_symbol)
13675 {
13676  VALUE rest_hash;
13677  if (args->rest == ((VALUE)RUBY_Qfalse)) {
13678  from_argv:
13679  ((void)0);
13680  *kw_hash_ptr = args->argv[args->argc-1];
13681  if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13682  if (rest_hash) {
13683  args->argv[args->argc-1] = rest_hash;
13684  }
13685  else {
13686  args->argc--;
13687  return 1;
13688  }
13689  }
13690  }
13691  else {
13692  long len = rb_array_len(args->rest);
13693  if (len > 0) {
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)) {
13696  if (rest_hash) {
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
13699  ;
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);
13704  }
13705  else {
13706  arg_rest_dup(args);
13707  rb_ary_pop(args->rest);
13708  return 1;
13709  }
13710  }
13711  }
13712  else {
13713  goto from_argv;
13714  }
13715  }
13716  return 0;
13717 }
13718 static int
13719 args_kw_argv_to_hash(struct args_info *args)
13720 {
13721  const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
13722  const VALUE *const passed_keywords = kw_arg->keywords;
13723  const int kw_len = kw_arg->keyword_len;
13724  VALUE h = rb_hash_new_with_size(kw_len);
13725  const int kw_start = args->argc - kw_len;
13726  const VALUE * const kw_argv = args->argv + kw_start;
13727  int i;
13728  args->argc = kw_start + 1;
13729  for (i=0; i<kw_len; i++) {
13730  rb_hash_aset(h, passed_keywords[i], kw_argv[i]);
13731  }
13732  args->argv[args->argc - 1] = h;
13733  return args->argc;
13734 }
13735 static void
13736 args_stored_kw_argv_to_hash(struct args_info *args)
13737 {
13738  int i;
13739  const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
13740  const VALUE *const passed_keywords = kw_arg->keywords;
13741  const int passed_keyword_len = kw_arg->keyword_len;
13742  VALUE h = rb_hash_new_with_size(passed_keyword_len);
13743  for (i=0; i<passed_keyword_len; i++) {
13744  rb_hash_aset(h, passed_keywords[i], args->kw_argv[i]);
13745  }
13746  args->kw_argv = ((void *)0);
13747  if (args->rest) {
13748  arg_rest_dup(args);
13749  rb_ary_push(args->rest, h);
13750  }
13751  else {
13752  args->argv[args->argc++] = h;
13753  }
13754 }
13755 static inline void
13756 args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
13757 {
13758  if (args->argc >= argc) {
13759  args->argc -= argc;
13760  args->argv += argc;
13761  }
13762  else {
13763  int i, j;
13764  const VALUE *argv = args_rest_argv(args);
13765  for (i=args->argc, j=0; i<argc; i++, j++) {
13766  locals[i] = argv[j];
13767  }
13768  args->rest_index += argc - args->argc;
13769  args->argc = 0;
13770  }
13771 }
13772 static inline void
13773 args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
13774 {
13775  long len;
13776  len = rb_array_len(args->rest);
13777  ((__builtin_object_size((locals), 0) != (size_t)-1) ? __builtin___memcpy_chk((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((locals), 0)) : __memcpy_ichk((locals), (rb_array_const_ptr_transient(args->rest) + len - argc), sizeof(VALUE)*(size_t)(argc)));
13778  rb_ary_resize(args->rest, len - argc);
13779 }
13780 static inline int
13781 args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
13782 {
13783  int i;
13784  if (args->argc >= opt_max) {
13785  args->argc -= opt_max;
13786  args->argv += opt_max;
13787  i = opt_max;
13788  }
13789  else {
13790  int j;
13791  i = args->argc;
13792  args->argc = 0;
13793  if (args->rest) {
13794  int len = ((int)(rb_array_len(args->rest)));
13795  const VALUE *argv = rb_array_const_ptr_transient(args->rest);
13796  for (; i<opt_max && args->rest_index < len; i++, args->rest_index++) {
13797  locals[i] = argv[args->rest_index];
13798  }
13799  }
13800  for (j=i; j<opt_max; j++) {
13801  locals[j] = ((VALUE)RUBY_Qnil);
13802  }
13803  }
13804  return i;
13805 }
13806 static inline void
13807 args_setup_rest_parameter(struct args_info *args, VALUE *locals)
13808 {
13809  *locals = args_rest_array(args);
13810 }
13811 static VALUE
13812 make_unknown_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
13813 {
13814  int i;
13815  VALUE obj = rb_ary_tmp_new(1);
13816  for (i=0; i<passed_keyword_len; i++) {
13817  if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
13818  rb_ary_push(obj, passed_keywords[i]);
13819  }
13820  }
13821  return obj;
13822 }
13823 static VALUE
13824 make_rest_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
13825 {
13826  int i;
13827  VALUE obj = rb_hash_new_with_size(passed_keyword_len);
13828  for (i=0; i<passed_keyword_len; i++) {
13829  if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
13830  rb_hash_aset(obj, passed_keywords[i], kw_argv[i]);
13831  }
13832  }
13833  return obj;
13834 }
13835 static inline int
13836 args_setup_kw_parameters_lookup(const ID key, VALUE *ptr, const VALUE *const passed_keywords, VALUE *passed_values, const int passed_keyword_len)
13837 {
13838  int i;
13839  const VALUE keyname = (rb_id2sym(key));
13840  for (i=0; i<passed_keyword_len; i++) {
13841  if (keyname == passed_keywords[i]) {
13842  *ptr = passed_values[i];
13843  passed_values[i] = ((VALUE)RUBY_Qundef);
13844  return 1;
13845  }
13846  }
13847  return 0;
13848 }
13849 #define KW_SPECIFIED_BITS_MAX (32-1)
13850 static void
13851 args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
13852  VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
13853  VALUE *const locals)
13854 {
13855  const ID *acceptable_keywords = iseq->body->param.keyword->table;
13856  const int req_key_num = iseq->body->param.keyword->required_num;
13857  const int key_num = iseq->body->param.keyword->num;
13858  const VALUE * const default_values = iseq->body->param.keyword->default_values;
13859  VALUE missing = 0;
13860  int i, di, found = 0;
13861  int unspecified_bits = 0;
13862  VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
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)) {
13866  found++;
13867  }
13868  else {
13869  if (!missing) missing = rb_ary_tmp_new(1);
13870  rb_ary_push(missing, (rb_id2sym(key)));
13871  }
13872  }
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)) {
13876  found++;
13877  }
13878  else {
13879  if (default_values[di] == ((VALUE)RUBY_Qundef)) {
13880  locals[i] = ((VALUE)RUBY_Qnil);
13881  if ((__builtin_expect(!!(i < (32-1)), 1))) {
13882  unspecified_bits |= 0x01 << di;
13883  }
13884  else {
13885  if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
13886  int j;
13887  unspecified_bits_value = rb_hash_new();
13888  for (j=0; j<(32-1); j++) {
13889  if (unspecified_bits & (0x01 << j)) {
13890  rb_hash_aset(unspecified_bits_value, (((VALUE)(j))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
13891  }
13892  }
13893  }
13894  rb_hash_aset(unspecified_bits_value, (((VALUE)(di))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
13895  }
13896  }
13897  else {
13898  locals[i] = default_values[di];
13899  }
13900  }
13901  }
13902  if (iseq->body->param.flags.has_kwrest) {
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);
13905  }
13906  else {
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);
13910  }
13911  }
13912  if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
13913  unspecified_bits_value = (((VALUE)(unspecified_bits))<<1 | RUBY_FIXNUM_FLAG);
13914  }
13915  locals[key_num] = unspecified_bits_value;
13916 }
13917 static inline void
13918 args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals)
13919 {
13920  locals[0] = !((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) ? rb_hash_new() : rb_hash_dup(keyword_hash);
13921 }
13922 static inline void
13923 args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
13924 {
13925  VALUE block_handler = calling->block_handler;
13926  *locals = rb_vm_bh_to_procval(ec, block_handler);
13927 }
13928 struct fill_values_arg {
13929  VALUE *keys;
13930  VALUE *vals;
13931  int argc;
13932 };
13933 static int
13934 fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
13935 {
13936  struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
13937  int i = arg->argc++;
13938  arg->keys[i] = (VALUE)key;
13939  arg->vals[i] = (VALUE)val;
13940  return ST_CONTINUE;
13941 }
13942 static inline int
13943 ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq)
13944 {
13945  if (!(iseq->body->param.flags.has_kw) &&
13946  !(iseq->body->param.flags.has_kwrest)) {
13947  keyword_hash = rb_check_hash_type(keyword_hash);
13948  if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) && (((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)) == 0)) {
13949  return 1;
13950  }
13951  }
13952  return 0;
13953 }
13955 static st_table *caller_to_callees = 0;
13956 static VALUE
13957 rb_warn_check(const rb_execution_context_t * const ec, const rb_iseq_t *const iseq)
13958 {
13960  if (!iseq) return 0;
13961  const st_data_t callee = (st_data_t)(iseq->body->iseq_unique_id * 2);
13962  const rb_control_frame_t * const cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
13963  if (!cfp) return 0;
13964  const st_data_t caller = (st_data_t)cfp->pc;
13965  if (!caller_to_callees) {
13966  caller_to_callees = rb_st_init_numtable();
13967  }
13968  st_data_t val;
13969  if (rb_st_lookup(caller_to_callees, caller, &val)) {
13970  st_table *callees;
13971  if (val & 1) {
13972  val &= ~(st_data_t)1;
13973  if (val == callee) return 1;
13974  callees = rb_st_init_numtable();
13975  rb_st_insert(callees, val, 1);
13976  }
13977  else {
13978  callees = (st_table *) val;
13979  if (rb_st_lookup((callees),(callee),(st_data_t *)0)) return 1;
13980  }
13981  rb_st_insert(callees, callee, 1);
13982  rb_st_insert(caller_to_callees, caller, (st_data_t) callees);
13983  }
13984  else {
13985  rb_st_insert(caller_to_callees, caller, callee | 1);
13986  }
13987  return 0;
13988 }
13989 static inline void
13990 rb_warn_keyword_to_last_hash(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
13991 {
13992  if (rb_warn_check(ec, iseq)) return;
13993  VALUE name, loc;
13994  if (calling->recv == ((VALUE)RUBY_Qundef)) {
13995  rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
13996  return;
13997  }
13998  name = rb_id2str(ci->mid);
13999  loc = rb_iseq_location(iseq);
14000  if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14001  rb_warn("Passing the keyword argument for `%""l""i" "\v""' as the last hash parameter is deprecated",
14002  name);
14003  }
14004  else {
14005  rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
14006  if (name) {
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);
14009  }
14010  else {
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");
14013  }
14014  }
14015 }
14016 static inline void
14017 rb_warn_split_last_hash_to_keyword(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
14018 {
14019  if (rb_warn_check(ec, iseq)) return;
14020  VALUE name, loc;
14021  name = rb_id2str(ci->mid);
14022  loc = rb_iseq_location(iseq);
14023  if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14024  rb_warn("Splitting the last argument for `%""l""i" "\v""' into positional and keyword parameters is deprecated",
14025  name);
14026  }
14027  else {
14028  rb_warn("Splitting the last argument into positional and keyword parameters is deprecated");
14029  if (calling->recv != ((VALUE)RUBY_Qundef)) {
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);
14032  }
14033  else {
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");
14036  }
14037  }
14038 }
14039 static inline void
14040 rb_warn_last_hash_to_keyword(rb_execution_context_t * const ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t * const iseq)
14041 {
14042  if (rb_warn_check(ec, iseq)) return;
14043  VALUE name, loc;
14044  name = rb_id2str(ci->mid);
14045  loc = rb_iseq_location(iseq);
14046  if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14047  rb_warn("Using the last argument for `%""l""i" "\v""' as keyword parameters is deprecated; maybe ** should be added to the call",
14048  name);
14049  }
14050  else {
14051  rb_warn("Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call");
14052  if (calling->recv != ((VALUE)RUBY_Qundef)) {
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);
14055  }
14056  else {
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");
14059  }
14060  }
14061 }
14062 static int
14063 setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
14064  struct rb_calling_info *const calling,
14065  const struct rb_call_info *ci,
14066  VALUE * const locals, const enum arg_setup_type arg_setup_type)
14067 {
14068  const int min_argc = iseq->body->param.lead_num + iseq->body->param.post_num;
14069  const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1);
14070  int given_argc;
14071  int kw_splat = 0;
14072  unsigned int kw_flag = ci->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
14073  int opt_pc = 0, allow_autosplat = !kw_flag;
14074  struct args_info args_body, *args;
14075  VALUE keyword_hash = ((VALUE)RUBY_Qnil);
14076  VALUE * const orig_sp = ec->cfp->sp;
14077  unsigned int i;
14078  int remove_empty_keyword_hash = 1;
14079  VALUE flag_keyword_hash = 0;
14080  ;
14081  for (i=calling->argc; i<iseq->body->param.size; i++) {
14082  locals[i] = ((VALUE)RUBY_Qnil);
14083  }
14084  ec->cfp->sp = &locals[i];
14085  args = &args_body;
14086  given_argc = args->argc = calling->argc;
14087  args->argv = locals;
14088  args->rest_dupped = 0;
14089  if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
14090  args->kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
14091  if (iseq->body->param.flags.has_kw) {
14092  int kw_len = args->kw_arg->keyword_len;
14093  args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len)), _Alignof(VALUE) * 8);
14094  args->argc -= kw_len;
14095  given_argc -= kw_len;
14096  ((__builtin_object_size((args->kw_argv), 0) != (size_t)-1) ? __builtin___memcpy_chk((args->kw_argv), (locals + args->argc), sizeof(VALUE)*(size_t)(kw_len), __builtin_object_size((args->kw_argv), 0)) : __memcpy_ichk((args->kw_argv), (locals + args->argc), sizeof(VALUE)*(size_t)(kw_len)));
14097  }
14098  else {
14099  args->kw_argv = ((void *)0);
14100  given_argc = args_kw_argv_to_hash(args);
14101  kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
14102  }
14103  }
14104  else {
14105  args->kw_arg = ((void *)0);
14106  args->kw_argv = ((void *)0);
14107  }
14108  if (kw_flag && iseq->body->param.flags.ruby2_keywords) {
14109  remove_empty_keyword_hash = 0;
14110  }
14111  if (ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
14112  VALUE rest_last = 0;
14113  int len;
14114  args->rest = locals[--args->argc];
14115  args->rest_index = 0;
14116  len = ((int)(rb_array_len(args->rest)));
14117  given_argc += len - 1;
14118  rest_last = (rb_array_const_ptr_transient(args->rest)[len - 1]);
14119  if (!kw_flag && len > 0) {
14120  if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(rest_last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((rest_last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((rest_last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((rest_last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((rest_last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(rest_last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
14121  (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
14122  rest_last = rb_hash_dup(rest_last);
14123  kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
14124  if (iseq->body->param.flags.ruby2_keywords) {
14125  remove_empty_keyword_hash = 0;
14126  }
14127  }
14128  else {
14129  rest_last = 0;
14130  }
14131  }
14132  if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14133  if (len > 0 && ignore_keyword_hash_p(rest_last, iseq)) {
14134  if (given_argc != min_argc) {
14135  if (remove_empty_keyword_hash) {
14136  arg_rest_dup(args);
14137  rb_ary_pop(args->rest);
14138  given_argc--;
14139  kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
14140  }
14141  else {
14142  if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(rest_last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((rest_last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((rest_last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((rest_last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((rest_last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(rest_last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) && rb_obj_frozen_p(rest_last)) {
14143  rest_last = rb_hash_new();
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
14146  ;
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);
14151  }
14152  flag_keyword_hash = rest_last;
14153  }
14154  }
14155  else {
14156  rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14157  }
14158  }
14159  else if (!remove_empty_keyword_hash && rest_last) {
14160  flag_keyword_hash = rest_last;
14161  }
14162  }
14163  }
14164  else {
14165  if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14166  VALUE last_arg = args->argv[args->argc-1];
14167  if (ignore_keyword_hash_p(last_arg, iseq)) {
14168  if (given_argc != min_argc) {
14169  if (remove_empty_keyword_hash) {
14170  args->argc--;
14171  given_argc--;
14172  kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
14173  }
14174  else {
14175  if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(last_arg))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((last_arg) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((last_arg) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((last_arg) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((last_arg) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(last_arg)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(last_arg) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last_arg) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last_arg))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) && rb_obj_frozen_p(last_arg)) {
14176  last_arg = rb_hash_new();
14177  args->argv[args->argc-1] = last_arg;
14178  }
14179  flag_keyword_hash = last_arg;
14180  }
14181  }
14182  else {
14183  rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14184  }
14185  }
14186  else if (!remove_empty_keyword_hash) {
14187  flag_keyword_hash = args->argv[args->argc-1];
14188  }
14189  }
14190  args->rest = ((VALUE)RUBY_Qfalse);
14191  }
14192  if (flag_keyword_hash && ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(flag_keyword_hash))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(flag_keyword_hash)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
14193  ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
14194  }
14195  if (kw_flag && iseq->body->param.flags.accepts_no_kwarg) {
14196  rb_raise(rb_eArgError, "no keywords accepted");
14197  }
14198  switch (arg_setup_type) {
14199  case arg_setup_method:
14200  break;
14201  case arg_setup_block:
14202  if (given_argc == 1 &&
14203  allow_autosplat &&
14204  (min_argc > 0 || iseq->body->param.opt_num > 1 ||
14205  iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) &&
14206  !iseq->body->param.flags.ambiguous_param0 &&
14207  args_check_block_arg0(args)) {
14208  given_argc = ((int)(rb_array_len(args->rest)));
14209  }
14210  break;
14211  }
14212  if (given_argc < min_argc) {
14213  if (given_argc == min_argc - 1 && args->kw_argv) {
14214  args_stored_kw_argv_to_hash(args);
14215  given_argc = args_argc(args);
14216  }
14217  else {
14219  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((ec->cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(ec->cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((ec->cfp)->sp) + (min_argc)) + 1) >= (ec->cfp))), 1))) {(void)0;} else vm_stackoverflow();
14220  given_argc = min_argc;
14221  args_extend(args, min_argc);
14222  }
14223  else {
14224  argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
14225  }
14226  }
14227  }
14228  if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14229  kw_splat = !iseq->body->param.flags.has_rest;
14230  }
14231  if ((iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest ||
14232  (kw_splat && given_argc > max_argc)) &&
14233  args->kw_argv == ((void *)0)) {
14234  if (given_argc > min_argc) {
14235  if (kw_flag) {
14236  int check_only_symbol = (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) &&
14237  iseq->body->param.flags.has_kw &&
14238  !iseq->body->param.flags.has_kwrest;
14239  if (args_pop_keyword_hash(args, &keyword_hash, check_only_symbol)) {
14240  given_argc--;
14241  }
14242  else if (check_only_symbol) {
14243  if (keyword_hash != ((VALUE)RUBY_Qnil)) {
14244  rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
14245  }
14246  else {
14247  rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14248  }
14249  }
14250  }
14251  else if (args_pop_keyword_hash(args, &keyword_hash, 1)) {
14252  rb_warn_last_hash_to_keyword(ec, calling, ci, iseq);
14253  given_argc--;
14254  }
14255  else if (keyword_hash != ((VALUE)RUBY_Qnil)) {
14256  rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
14257  }
14258  }
14259  else if (given_argc == min_argc && kw_flag) {
14260  rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14261  }
14262  }
14263  if (given_argc > max_argc && max_argc != (-1)) {
14265  args_reduce(args, given_argc - max_argc);
14266  given_argc = max_argc;
14267  }
14268  else {
14269  argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
14270  }
14271  }
14272  if (iseq->body->param.flags.has_lead) {
14273  args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0);
14274  }
14275  if (iseq->body->param.flags.has_rest || iseq->body->param.flags.has_post){
14276  args_copy(args);
14277  }
14278  if (iseq->body->param.flags.has_post) {
14279  args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start);
14280  }
14281  if (iseq->body->param.flags.has_opt) {
14282  int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num);
14283  opt_pc = (int)iseq->body->param.opt_table[opt];
14284  }
14285  if (iseq->body->param.flags.has_rest) {
14286  args_setup_rest_parameter(args, locals + iseq->body->param.rest_start);
14287  }
14288  if (iseq->body->param.flags.has_kw) {
14289  VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num;
14290  if (args->kw_argv != ((void *)0)) {
14291  const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
14292  args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
14293  }
14294  else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil))) {
14295  int kw_len = ((int)(((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries))));
14296  struct fill_values_arg arg;
14297  arg.keys = args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len * 2)), _Alignof(VALUE) * 8);
14298  arg.vals = arg.keys + kw_len;
14299  arg.argc = 0;
14300  rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
14301  ((void)0);
14302  args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
14303  }
14304  else {
14305  ((void)0);
14306  args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
14307  }
14308  }
14309  else if (iseq->body->param.flags.has_kwrest) {
14310  args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start);
14311  }
14312  else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) && ((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)) > 0 && arg_setup_type == arg_setup_method) {
14313  argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
14314  }
14315  if (iseq->body->param.flags.has_block) {
14316  if (iseq->body->local_iseq == iseq) {
14317  }
14318  else {
14319  args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start);
14320  }
14321  }
14322  ec->cfp->sp = orig_sp;
14323  return opt_pc;
14324 }
14326 static void
14327 raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
14328 {
14329  VALUE at;
14330  if (iseq) {
14331  vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
14332  0 , ((VALUE)RUBY_Qfalse) ,
14334  ec->cfp->sp, 0, 0 );
14335  at = rb_ec_backtrace_object(ec);
14337  rb_vm_pop_frame(ec);
14338  }
14339  else {
14340  at = rb_ec_backtrace_object(ec);
14341  }
14344  rb_exc_raise(exc);
14345 }
14346 static void
14347 argument_arity_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int miss_argc, const int min_argc, const int max_argc)
14348 {
14349  VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
14350  if (iseq->body->param.flags.has_kw) {
14351  const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword;
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";
14356  VALUE mesg = rb_attr_get(exc, idMesg);
14357  rb_str_resize(mesg, (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1);
14358  rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
14359  __extension__ ({ (__builtin_constant_p(":")) ? rb_str_cat((mesg), (":"), (long)strlen(":")) : rb_str_cat_cstr((mesg), (":")); });
14360  do {
14361  __extension__ ({ (__builtin_constant_p(" ")) ? rb_str_cat((mesg), (" "), (long)strlen(" ")) : rb_str_cat_cstr((mesg), (" ")); });
14362  rb_str_append(mesg, rb_id2str(*keywords++));
14363  __extension__ ({ (__builtin_constant_p(",")) ? rb_str_cat((mesg), (","), (long)strlen(",")) : rb_str_cat_cstr((mesg), (",")); });
14364  } while (--req_key_num);
14365  (!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? ((struct RString*)(mesg))->as.ary : ((struct RString*)(mesg))->as.heap.ptr)[(!(((struct RBasic*)(mesg))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(mesg))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(mesg))->as.heap.len)-1] = ')';
14366  }
14367  }
14368  raise_argument_error(ec, iseq, exc);
14369 }
14370 static void
14371 argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
14372 {
14373  raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
14374 }
14375 static inline void
14376 vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
14377 {
14378  int argc = calling->argc;
14379  VALUE *argv = cfp->sp - argc;
14380  VALUE ary = argv[argc-1];
14381  ;
14382  cfp->sp--;
14383  if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
14384  const VALUE *ptr = rb_array_const_ptr_transient(ary);
14385  long len = rb_array_len(ary), i;
14386  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (len)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
14387  for (i = 0; i < len; i++) {
14388  *cfp->sp++ = ptr[i];
14389  }
14390  calling->argc += i - 1;
14391  }
14392 }
14393 static inline void
14394 vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci)
14395 {
14396  struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;
14397  const VALUE *const passed_keywords = ci_kw->kw_arg->keywords;
14398  const int kw_len = ci_kw->kw_arg->keyword_len;
14399  const VALUE h = rb_hash_new_with_size(kw_len);
14400  VALUE *sp = cfp->sp;
14401  int i;
14402  for (i=0; i<kw_len; i++) {
14403  rb_hash_aset(h, passed_keywords[i], (sp - kw_len)[i]);
14404  }
14405  (sp-kw_len)[0] = h;
14406  cfp->sp -= kw_len - 1;
14407  calling->argc -= kw_len - 1;
14408  calling->kw_splat = 1;
14409 }
14410 static VALUE
14411 vm_to_proc(VALUE proc)
14412 {
14413  if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
14414  VALUE b;
14416  rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(proc)), idTo_proc, ((void *)0));
14417  if (me) {
14418  b = rb_vm_call0(rb_current_execution_context(), proc, idTo_proc, 0, ((void *)0), me, 0);
14419  }
14420  else {
14422  }
14423  if (!((VALUE)(b) != ((VALUE)RUBY_Qnil)) || !rb_obj_is_proc(b)) {
14425  "wrong argument type %s (expected Proc)",
14426  rb_obj_classname(proc));
14427  }
14428  return b;
14429  }
14430  else {
14431  return proc;
14432  }
14433 }
14434 static VALUE
14435 refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
14436 {
14437  VALUE obj;
14438  ID mid;
14441  const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
14442  const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
14443  int kw_splat = 3;
14444  VALUE v;
14445  VALUE ret;
14446  VALUE klass;
14447  if (argc-- < 1) {
14448  rb_raise(rb_eArgError, "no receiver given");
14449  }
14450  obj = *argv++;
14451  mid = (rb_sym2id(symbol));
14452  for (klass = rb_class_of((VALUE)(obj)); klass; klass = RCLASS_SUPER(klass)) {
14454  if (me) {
14455  me = rb_resolve_refined_method_callable(refinements, me);
14456  if (me) break;
14457  }
14458  }
14459  ec = rb_current_execution_context();
14460  if (!!((VALUE)(blockarg) != ((VALUE)RUBY_Qnil))) {
14461  vm_passed_block_handler_set(ec, blockarg);
14462  }
14463  v = rb_adjust_argv_kw_splat(&argc, &argv, &kw_splat);
14464  if (!me) {
14465  ret = method_missing(obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
14466  }
14467  else {
14468  ret = rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
14469  }
14471  return ret;
14472 }
14473 static VALUE
14474 vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
14475  const struct rb_call_info *ci, const rb_iseq_t *blockiseq, const int is_super)
14476 {
14477  if (ci->flag & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
14478  VALUE block_code = *(--reg_cfp->sp);
14479  if (!((VALUE)(block_code) != ((VALUE)RUBY_Qnil))) {
14480  return 0;
14481  }
14482  else if (block_code == rb_block_param_proxy) {
14483  ((void)0);
14484  VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
14485  reg_cfp->block_code = (const void *) handler;
14486  return handler;
14487  }
14488  else if (((((VALUE)(block_code)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(block_code) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(block_code) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(block_code))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) && __extension__({ static struct rb_call_data rb_mbdp; (rb_cSymbol == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cSymbol, idTo_proc); })) {
14489  const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
14490  if (cref && !!((VALUE)(cref->refinements) != ((VALUE)RUBY_Qnil))) {
14491  VALUE ref = cref->refinements;
14492  VALUE func = rb_hash_lookup(ref, block_code);
14493  if (!((VALUE)(func) != ((VALUE)RUBY_Qnil))) {
14494  VALUE callback_arg = rb_ary_tmp_new(2);
14495  rb_ary_push(callback_arg, block_code);
14496  rb_ary_push(callback_arg, ref);
14497  (void)(((struct RBasic*)(callback_arg))->flags |= RUBY_FL_FREEZE);
14498  func = rb_func_proc_new(refine_sym_proc_call, callback_arg);
14499  rb_hash_aset(ref, block_code, func);
14500  }
14501  block_code = func;
14502  }
14503  return block_code;
14504  }
14505  else {
14506  return vm_to_proc(block_code);
14507  }
14508  }
14509  else if (blockiseq != ((void *)0)) {
14510  struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
14511  captured->code.iseq = blockiseq;
14512  return VM_BH_FROM_ISEQ_BLOCK(captured);
14513  }
14514  else {
14515  if (is_super) {
14516  return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
14517  }
14518  else {
14519  return 0;
14520  }
14521  }
14522 }
14523 static inline VALUE vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int opt_pc, int param_size, int local_size);
14524 __attribute__ ((__always_inline__)) static VALUE vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me, int opt_pc, int param_size, int local_size);
14525 static inline VALUE vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int opt_pc);
14526 static VALUE vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
14527 static VALUE vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
14528 static VALUE vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
14529 static inline VALUE vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd);
14530 static vm_call_handler vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size);
14531 static VALUE
14532 vm_call_iseq_setup_tailcall_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
14533 {
14534  ((void)0);
14535  return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, 0);
14536 }
14537 static VALUE
14538 vm_call_iseq_setup_normal_0start(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
14539 {
14540  ((void)0);
14541  struct rb_call_cache *cc = &cd->cc;
14542  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14543  int param = iseq->body->param.size;
14544  int local = iseq->body->local_table_size;
14545  return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14546 }
14547 static _Bool
14549 {
14550  return iseq->body->param.flags.has_opt == 0 &&
14551  iseq->body->param.flags.has_rest == 0 &&
14552  iseq->body->param.flags.has_post == 0 &&
14553  iseq->body->param.flags.has_kw == 0 &&
14554  iseq->body->param.flags.has_kwrest == 0 &&
14555  iseq->body->param.flags.accepts_no_kwarg == 0 &&
14556  iseq->body->param.flags.has_block == 0;
14557 }
14558 static _Bool
14559 rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
14560 {
14561  return iseq->body->param.flags.has_opt == 1 &&
14562  iseq->body->param.flags.has_rest == 0 &&
14563  iseq->body->param.flags.has_post == 0 &&
14564  iseq->body->param.flags.has_kw == 0 &&
14565  iseq->body->param.flags.has_kwrest == 0 &&
14566  iseq->body->param.flags.accepts_no_kwarg == 0 &&
14567  iseq->body->param.flags.has_block == 0;
14568 }
14569 static _Bool
14570 rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
14571 {
14572  return iseq->body->param.flags.has_opt == 0 &&
14573  iseq->body->param.flags.has_rest == 0 &&
14574  iseq->body->param.flags.has_post == 0 &&
14575  iseq->body->param.flags.has_kw == 1 &&
14576  iseq->body->param.flags.has_kwrest == 0 &&
14577  iseq->body->param.flags.has_block == 0;
14578 }
14579 static inline void
14580 CALLER_SETUP_ARG(struct rb_control_frame_struct *restrict cfp,
14582  const struct rb_call_info *restrict ci)
14583 {
14584  if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
14585  VALUE final_hash;
14586  vm_caller_setup_arg_splat(cfp, calling);
14587  if (!((ci)->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
14588  calling->argc > 0 &&
14589  ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)((final_hash = *(cfp->sp - 1))))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)((final_hash = *(cfp->sp - 1)))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
14590  (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
14591  *(cfp->sp - 1) = rb_hash_dup(final_hash);
14592  calling->kw_splat = 1;
14593  }
14594  }
14595  if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) {
14596  vm_caller_setup_arg_kw(cfp, calling, ci);
14597  }
14598 }
14599 static inline void
14600 CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *restrict cfp,
14602  const struct rb_call_info *restrict ci)
14603 {
14604  if ((__builtin_expect(!!(calling->kw_splat), 0))) {
14605  if ((((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
14606  cfp->sp--;
14607  calling->argc--;
14608  calling->kw_splat = 0;
14609  }
14610  }
14611 }
14612 #define USE_OPT_HIST 0
14613 static VALUE
14614 vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14615  struct rb_calling_info *calling,
14616  struct rb_call_data *cd)
14617 {
14618  const struct rb_call_cache *cc = &cd->cc;
14619  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14620  const int lead_num = iseq->body->param.lead_num;
14621  const int opt = calling->argc - lead_num;
14622  const int opt_num = iseq->body->param.opt_num;
14623  const int opt_pc = (int)iseq->body->param.opt_table[opt];
14624  const int param = iseq->body->param.size;
14625  const int local = iseq->body->local_table_size;
14626  const int delta = opt_num - opt;
14627  ((void)0);
14628  return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param - delta, local);
14629 }
14630 static VALUE
14631 vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14632  struct rb_calling_info *calling,
14633  struct rb_call_data *cd)
14634 {
14635  const struct rb_call_cache *cc = &cd->cc;
14636  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14637  const int lead_num = iseq->body->param.lead_num;
14638  const int opt = calling->argc - lead_num;
14639  const int opt_pc = (int)iseq->body->param.opt_table[opt];
14640  ((void)0);
14641  return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
14642 }
14643 static void
14644 args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
14645  VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
14646  VALUE *const locals);
14647 static VALUE
14648 vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14649  struct rb_calling_info *calling,
14650  struct rb_call_data *cd)
14651 {
14652  const struct rb_kwarg_call_data *kcd = (void *)cd;
14653  const struct rb_call_info_with_kwarg *ci_kw = &kcd->ci_kw;
14654  const struct rb_call_cache *cc = &kcd->cc;
14655  ((void)0);
14656  ((void)0);
14657  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14658  const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14659  const struct rb_call_info_kw_arg *kw_arg = ci_kw->kw_arg;
14660  const int ci_kw_len = kw_arg->keyword_len;
14661  const VALUE * const ci_keywords = kw_arg->keywords;
14662  VALUE *argv = cfp->sp - calling->argc;
14663  VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
14664  const int lead_num = iseq->body->param.lead_num;
14665  VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
14666  ((__builtin_object_size((ci_kws), 0) != (size_t)-1) ? __builtin___memcpy_chk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len), __builtin_object_size((ci_kws), 0)) : __memcpy_ichk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len)));
14667  args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14668  int param = iseq->body->param.size;
14669  int local = iseq->body->local_table_size;
14670  return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14671 }
14672 static VALUE
14673 vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14674  struct rb_calling_info *calling,
14675  struct rb_call_data *cd)
14676 {
14677  const struct rb_call_info *__attribute__ ((__unused__)) ci = &cd->ci;
14678  const struct rb_call_cache *cc = &cd->cc;
14679  ((void)0);
14680  ((void)0);
14681  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14682  const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14683  VALUE * const argv = cfp->sp - calling->argc;
14684  VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
14685  int i;
14686  for (i=0; i<kw_param->num; i++) {
14687  klocals[i] = kw_param->default_values[i];
14688  }
14689  klocals[i] = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
14690  int param = iseq->body->param.size;
14691  int local = iseq->body->local_table_size;
14692  return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14693 }
14694 static inline int
14695 vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd,
14696  const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
14697 {
14698  const struct rb_call_info *ci = &cd->ci;
14699  struct rb_call_cache *cc = &cd->cc;
14700  if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
14701  if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
14702  rb_control_frame_t *cfp = ec->cfp;
14703  CALLER_SETUP_ARG(cfp, calling, ci);
14704  CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
14705  if (calling->argc != iseq->body->param.lead_num) {
14706  argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
14707  }
14708  CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), vm_call_iseq_optimizable_p(&cd->ci, &cd->cc));
14709  return 0;
14710  }
14711  else if (rb_iseq_only_optparam_p(iseq)) {
14712  rb_control_frame_t *cfp = ec->cfp;
14713  CALLER_SETUP_ARG(cfp, calling, ci);
14714  CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
14715  const int lead_num = iseq->body->param.lead_num;
14716  const int opt_num = iseq->body->param.opt_num;
14717  const int argc = calling->argc;
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);
14721  }
14722  if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
14723  CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
14724  !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
14725  !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14726  }
14727  else {
14728  CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
14729  !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
14730  !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14731  }
14732  ((void)0);
14733  for (int i=argc; i<lead_num + opt_num; i++) {
14734  argv[i] = ((VALUE)RUBY_Qnil);
14735  }
14736  return (int)iseq->body->param.opt_table[opt];
14737  }
14738  else if (rb_iseq_only_kwparam_p(iseq) && !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
14739  const int lead_num = iseq->body->param.lead_num;
14740  const int argc = calling->argc;
14741  const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14742  if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
14743  const struct rb_call_info_kw_arg *kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
14744  if (argc - kw_arg->keyword_len == lead_num) {
14745  const int ci_kw_len = kw_arg->keyword_len;
14746  const VALUE * const ci_keywords = kw_arg->keywords;
14747  VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
14748  ((__builtin_object_size((ci_kws), 0) != (size_t)-1) ? __builtin___memcpy_chk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len), __builtin_object_size((ci_kws), 0)) : __memcpy_ichk((ci_kws), (argv + lead_num), sizeof(VALUE)*(size_t)(ci_kw_len)));
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,
14752  !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14753  return 0;
14754  }
14755  }
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);
14759  if (klocals[kw_param->num] == (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG)) {
14760  CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
14761  !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14762  }
14763  return 0;
14764  }
14765  }
14766  }
14767  return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
14768 }
14769 static VALUE
14770 vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
14771 {
14772  ((void)0);
14773  const struct rb_call_cache *cc = &cd->cc;
14774  const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14775  const int param_size = iseq->body->param.size;
14776  const int local_size = iseq->body->local_table_size;
14777  const int opt_pc = vm_callee_setup_arg(ec, calling, cd, def_iseq_ptr(cc->me->def), cfp->sp - calling->argc, param_size, local_size);
14778  return vm_call_iseq_setup_2(ec, cfp, calling, cd, opt_pc, param_size, local_size);
14779 }
14780 static inline VALUE
14781 vm_call_iseq_setup_2(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd,
14782  int opt_pc, int param_size, int local_size)
14783 {
14784  const struct rb_call_info *ci = &cd->ci;
14785  const struct rb_call_cache *cc = &cd->cc;
14786  if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
14787  return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param_size, local_size);
14788  }
14789  else {
14790  return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
14791  }
14792 }
14793 static inline VALUE
14794 vm_call_iseq_setup_normal(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, const rb_callable_method_entry_t *me,
14795  int opt_pc, int param_size, int local_size)
14796 {
14797  const rb_iseq_t *iseq = def_iseq_ptr(me->def);
14798  VALUE *argv = cfp->sp - calling->argc;
14799  VALUE *sp = argv + param_size;
14800  cfp->sp = argv - 1 ;
14801  vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
14802  calling->block_handler, (VALUE)me,
14803  iseq->body->iseq_encoded + opt_pc, sp,
14805  iseq->body->stack_max);
14806  return ((VALUE)RUBY_Qundef);
14807 }
14808 static inline VALUE
14809 vm_call_iseq_setup_tailcall(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd,
14810  int opt_pc)
14811 {
14812  const struct rb_call_cache *cc = &cd->cc;
14813  unsigned int i;
14814  VALUE *argv = cfp->sp - calling->argc;
14815  const rb_callable_method_entry_t *me = cc->me;
14816  const rb_iseq_t *iseq = def_iseq_ptr(me->def);
14817  VALUE *src_argv = argv;
14818  VALUE *sp_orig, *sp;
14819  VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
14820  if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
14821  struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
14822  const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
14823  dst_captured->code.val = src_captured->code.val;
14824  if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
14825  calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
14826  }
14827  else {
14828  calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
14829  }
14830  }
14831  vm_pop_frame(ec, cfp, cfp->ep);
14832  cfp = ec->cfp;
14833  sp_orig = sp = cfp->sp;
14834  sp[0] = calling->recv;
14835  sp++;
14836  for (i=0; i < iseq->body->param.size; i++) {
14837  *sp++ = src_argv[i];
14838  }
14839  vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
14840  calling->recv, calling->block_handler, (VALUE)me,
14841  iseq->body->iseq_encoded + opt_pc, sp,
14843  iseq->body->stack_max);
14844  cfp->sp = sp_orig;
14845  return ((VALUE)RUBY_Qundef);
14846 }
14847 static VALUE
14848 call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14849 {
14850  return (*func)(recv, rb_ary_new_from_values(argc, argv));
14851 }
14852 static VALUE
14853 call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14854 {
14855  return (*func)(argc, argv, recv);
14856 }
14857 static VALUE
14858 call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14859 {
14860  VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
14861  return (*f)(recv);
14862 }
14863 static VALUE
14864 call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14865 {
14866  VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
14867  return (*f)(recv, argv[0]);
14868 }
14869 static VALUE
14870 call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14871 {
14872  VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
14873  return (*f)(recv, argv[0], argv[1]);
14874 }
14875 static VALUE
14876 call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14877 {
14878  VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
14879  return (*f)(recv, argv[0], argv[1], argv[2]);
14880 }
14881 static VALUE
14882 call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14883 {
14884  VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
14885  return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
14886 }
14887 static VALUE
14888 call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14889 {
14890  VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14891  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
14892 }
14893 static VALUE
14894 call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14895 {
14897  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
14898 }
14899 static VALUE
14900 call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14901 {
14903  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
14904 }
14905 static VALUE
14906 call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14907 {
14909  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
14910 }
14911 static VALUE
14912 call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14913 {
14915  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
14916 }
14917 static VALUE
14918 call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14919 {
14921  return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
14922 }
14923 static VALUE
14924 call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14925 {
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]);
14928 }
14929 static VALUE
14930 call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14931 {
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]);
14934 }
14935 static VALUE
14936 call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14937 {
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]);
14940 }
14941 static VALUE
14942 call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14943 {
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]);
14946 }
14947 static VALUE
14948 call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14949 {
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]);
14952 }
14953 static inline int
14954 vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
14955 {
14956  const int ov_flags = RAISED_STACKOVERFLOW;
14957  if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
14958  if ((((ec)->raised_flag & (ov_flags)) != 0)) {
14959  ((ec)->raised_flag &= ~(ov_flags));
14960  return 1;
14961  }
14962  return 0;
14963 }
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)))
14965 static inline
14966 const rb_method_cfunc_t *
14967 vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
14968 {
14969  return __extension__({
14970 #pragma GCC diagnostic push
14971  ;
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; });
14976 }
14977 static VALUE
14978 vm_call_cfunc_with_frame(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd, int empty_kw_splat)
14979 {
14980  const struct rb_call_info *ci = &cd->ci;
14981  const struct rb_call_cache *cc = &cd->cc;
14982  VALUE val;
14983  const rb_callable_method_entry_t *me = cc->me;
14984  const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
14985  int len = cfunc->argc;
14986  VALUE recv = calling->recv;
14987  VALUE block_handler = calling->block_handler;
14989  int argc = calling->argc;
14990  int orig_argc = argc;
14991  if ((__builtin_expect(!!(calling->kw_splat), 0))) {
14992  frame_type |= VM_FRAME_FLAG_CFRAME_KW;
14993  }
14994  else if ((__builtin_expect(!!(empty_kw_splat), 0))) {
14995  frame_type |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
14996  }
14997  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
14998  do { const rb_event_flag_t flag_arg_ = (0x0020); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, ci->mid, me->owner, ((VALUE)RUBY_Qundef), 0); } } while (0);
14999  vm_push_frame(ec, ((void *)0), frame_type, recv,
15001  0, ec->cfp->sp, 0, 0);
15002  if (len >= 0) rb_check_arity(argc, len, len);
15003  reg_cfp->sp -= orig_argc + 1;
15004  val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
15005  ((__builtin_expect(!!(vm_cfp_consistent_p(ec, reg_cfp)), 1)) ? (void)0 : rb_bug("vm_call_cfunc" ": cfp consistency error (%p, %p)", (void *)reg_cfp, (void *)(ec->cfp+1)));
15006  rb_vm_pop_frame(ec);
15007  do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, recv, me->def->original_id, ci->mid, me->owner, val, 0); } } while (0);
15008  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
15009  return val;
15010 }
15011 static VALUE
15012 vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15013 {
15014  const struct rb_call_info *ci = &cd->ci;
15015  int empty_kw_splat;
15016  ((void)0);
15017  CALLER_SETUP_ARG(reg_cfp, calling, ci);
15018  empty_kw_splat = calling->kw_splat;
15019  CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
15020  if (empty_kw_splat && calling->kw_splat) {
15021  empty_kw_splat = 0;
15022  }
15023  return vm_call_cfunc_with_frame(ec, reg_cfp, calling, cd, empty_kw_splat);
15024 }
15025 static VALUE
15026 vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15027 {
15028  struct rb_call_cache *cc = &cd->cc;
15029  ((void)0);
15030  cfp->sp -= 1;
15031  return vm_getivar(calling->recv, cc->me->def->body.attr.id, ((void *)0), cc, 1);
15032 }
15033 static VALUE
15034 vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15035 {
15036  struct rb_call_cache *cc = &cd->cc;
15037  ((void)0);
15038  VALUE val = *(cfp->sp - 1);
15039  cfp->sp -= 2;
15040  return vm_setivar(calling->recv, cc->me->def->body.attr.id, val, ((void *)0), cc, 1);
15041 }
15042 static inline VALUE
15043 vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv)
15044 {
15045  rb_proc_t *proc;
15046  VALUE val;
15047  const struct rb_call_cache *cc = &cd->cc;
15048  (((proc)) = (rb_proc_t*)(((struct RData*)(((cc->me->def->body.bmethod.proc))))->data));
15049  val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, cc->me);
15050  return val;
15051 }
15052 static VALUE
15053 vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15054 {
15055  ((void)0);
15056  VALUE *argv;
15057  int argc;
15058  const struct rb_call_info *ci = &cd->ci;
15059  CALLER_SETUP_ARG(cfp, calling, ci);
15060  argc = calling->argc;
15061  argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(argc)), _Alignof(VALUE) * 8);
15062  ((__builtin_object_size((argv), 0) != (size_t)-1) ? __builtin___memcpy_chk((argv), (cfp->sp - argc), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((argv), 0)) : __memcpy_ichk((argv), (cfp->sp - argc), sizeof(VALUE)*(size_t)(argc)));
15063  cfp->sp += - argc - 1;
15064  return vm_call_bmethod_body(ec, calling, cd, argv);
15065 }
15066 static enum method_missing_reason
15067 ci_missing_reason(const struct rb_call_info *ci)
15068 {
15070  if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
15071  if (ci->flag & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
15072  if (ci->flag & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
15073  return stat;
15074 }
15075 static VALUE
15076 vm_call_opt_send(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *orig_cd)
15077 {
15078  ((void)0);
15079  int i;
15080  VALUE sym;
15081  const struct rb_call_info *orig_ci = &orig_cd->ci;
15082  const struct rb_call_cache *orig_cc = &orig_cd->cc;
15083  struct rb_call_info *ci;
15084  struct rb_call_cache *cc;
15085  struct rb_kwarg_call_data cd;
15086  CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
15087  i = calling->argc - 1;
15088  if (calling->argc == 0) {
15089  rb_raise(rb_eArgError, "no method name given");
15090  }
15091  if (orig_ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
15092  const struct rb_kwarg_call_data *orig_kcd = (void *)orig_cd;
15093  cd = *orig_kcd;
15094  }
15095  else {
15096  cd.ci_kw.ci = *orig_ci;
15097  cd.cc = *orig_cc;
15098  }
15099  ci = &cd.ci_kw.ci;
15100  cc = &cd.cc;
15101  sym = (*(((((reg_cfp)->sp)))-(i)-1));
15102  if (!(ci->mid = rb_check_id(&sym))) {
15103  if (__extension__({ static struct rb_call_data rb_mbdp; (rb_class_of((VALUE)(calling->recv)) == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_class_of((VALUE)(calling->recv)), idMethodMissing); })) {
15104  VALUE exc =
15106  ((int)(calling->argc)), &(*(((((reg_cfp)->sp)))-(i)-1)),
15107  ci->flag & ((0x01 << VM_CALL_FCALL_bit)|(0x01 << VM_CALL_VCALL_bit)));
15108  rb_exc_raise(exc);
15109  }
15110  (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(sym);
15111  ci->mid = idMethodMissing;
15112  ec->method_missing_reason = cc->aux.method_missing_reason = ci_missing_reason(ci);
15113  }
15114  else {
15115  if (i > 0) {
15116  ((__builtin_object_size((&(*(((((reg_cfp)->sp)))-(i)-1))), 0) != (size_t)-1) ? __builtin___memmove_chk((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), sizeof(VALUE)*(size_t)(i), __builtin_object_size((&(*(((((reg_cfp)->sp)))-(i)-1))), 0)) : __memmove_ichk((&(*(((((reg_cfp)->sp)))-(i)-1))), (&(*(((((reg_cfp)->sp)))-(i-1)-1))), sizeof(VALUE)*(size_t)(i)));
15117  }
15118  calling->argc -= 1;
15119  (((reg_cfp)->sp) -= (((1))));
15120  }
15121  CC_SET_ME(cc, rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(calling->recv)), ci->mid, ((void *)0)));
15122  ci->flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
15123  return vm_call_method(ec, reg_cfp, calling, (CALL_DATA)&cd);
15124 }
15125 static inline VALUE vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
15126 __attribute__ ((__noinline__)) static VALUE vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler);
15127 static VALUE
15128 vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15129  struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
15130 {
15131  int argc = calling->argc;
15132  if (argc > 0) ((__builtin_object_size((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0) != (size_t)-1) ? __builtin___memmove_chk((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((&(*(((((reg_cfp)->sp)))-(argc)-1))), 0)) : __memmove_ichk((&(*(((((reg_cfp)->sp)))-(argc)-1))), (&(*(((((reg_cfp)->sp)))-(argc-1)-1))), sizeof(VALUE)*(size_t)(argc)));
15133  (((reg_cfp)->sp) -= (((1))));
15134  return vm_invoke_block(ec, reg_cfp, calling, ci, block_handler);
15135 }
15136 static VALUE
15137 vm_call_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15138 {
15139  ((void)0);
15140  const struct rb_call_info *ci = &cd->ci;
15141  VALUE procval = calling->recv;
15142  return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
15143 }
15144 static VALUE
15145 vm_call_opt_block_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15146 {
15147  ((void)0);
15148  VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
15149  const struct rb_call_info *ci = &cd->ci;
15150  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
15151  return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
15152  }
15153  else {
15155  vm_search_method(cd, calling->recv);
15156  return vm_call_general(ec, reg_cfp, calling, cd);
15157  }
15158 }
15159 static VALUE
15160 vm_call_method_missing(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *orig_cd)
15161 {
15162  ((void)0);
15163  const struct rb_call_info *orig_ci = &orig_cd->ci;
15164  const struct rb_call_cache *orig_cc = &orig_cd->cc;
15165  VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
15166  struct rb_call_data cd = *orig_cd;
15167  unsigned int argc;
15168  CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
15169  argc = calling->argc+1;
15170  cd.ci.flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
15171  cd.ci.mid = idMethodMissing;
15172  cd.ci.orig_argc = argc;
15173  cd.cc.me =
15175  idMethodMissing, ((void *)0));
15176  calling->argc = argc;
15177  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((reg_cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(reg_cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((reg_cfp)->sp) + (1)) + 1) >= (reg_cfp))), 1))) {(void)0;} else vm_stackoverflow();
15178  ;
15179  if (argc > 1) {
15180  ((__builtin_object_size((argv+1), 0) != (size_t)-1) ? __builtin___memmove_chk((argv+1), (argv), sizeof(VALUE)*(size_t)(argc-1), __builtin_object_size((argv+1), 0)) : __memmove_ichk((argv+1), (argv), sizeof(VALUE)*(size_t)(argc-1)));
15181  }
15182  argv[0] = (rb_id2sym(orig_ci->mid));
15183  (((reg_cfp)->sp) += (((1))));
15185  return vm_call_method(ec, reg_cfp, calling, &cd);
15186 }
15187 static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
15188 static VALUE
15189 vm_call_zsuper(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd, VALUE klass)
15190 {
15191  ((void)0);
15192  const struct rb_call_info *ci = &cd->ci;
15193  struct rb_call_cache *cc = &cd->cc;
15195  CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, ci->mid) : ((void *)0));
15196  if (!cc->me) {
15197  return vm_call_method_nome(ec, cfp, calling, cd);
15198  }
15199  if (cc->me->def->type == VM_METHOD_TYPE_REFINED &&
15200  cc->me->def->body.refined.orig_me) {
15201  CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
15202  }
15203  return vm_call_method_each_type(ec, cfp, calling, cd);
15204 }
15205 static inline VALUE
15206 find_refinement(VALUE refinements, VALUE klass)
15207 {
15208  if (!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
15209  return ((VALUE)RUBY_Qnil);
15210  }
15211  return rb_hash_lookup(refinements, klass);
15212 }
15213 __attribute__ ((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
15214 static rb_control_frame_t *
15215 current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
15216 {
15217  rb_control_frame_t *top_cfp = cfp;
15218  if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) {
15219  const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq;
15220  do {
15221  cfp = ((cfp)+1);
15222  if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
15223  return top_cfp;
15224  }
15225  } while (cfp->iseq != local_iseq);
15226  }
15227  return cfp;
15228 }
15229 static VALUE
15230 find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
15231 {
15232  VALUE klass = current_class;
15233  if (( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) && ((!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((klass)))->flags&((((VALUE)RUBY_FL_USER5)))):0)) klass = (((struct RBasic*)(klass))->klass);
15234  while (!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
15235  VALUE owner = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ? (((struct RBasic*)(klass))->klass) : klass;
15236  if (owner == target_owner) {
15237  return klass;
15238  }
15240  }
15241  return current_class;
15242 }
15243 static const rb_callable_method_entry_t *
15244 aliased_callable_method_entry(const rb_callable_method_entry_t *me)
15245 {
15246  const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
15247  const rb_callable_method_entry_t *cme;
15248  if (orig_me->defined_class == 0) {
15249  VALUE defined_class = find_defined_class_by_owner(me->defined_class, orig_me->owner);
15250  ((void)0);
15251  cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
15252  if (me->def->alias_count + me->def->complemented_count == 0) {
15253  __extension__({
15254 #pragma GCC diagnostic push
15255  ;
15256 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
15257  ; typeof(rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.7.2/vm_insnhelper.c", 2828)) unaligned_member_access_result = (rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.7.2/vm_insnhelper.c", 2828));
15258 #pragma GCC diagnostic pop
15259  ; unaligned_member_access_result; });
15260  }
15261  else {
15262  rb_method_definition_t *def =
15264  rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
15265  }
15266  }
15267  else {
15268  cme = (const rb_callable_method_entry_t *)orig_me;
15269  }
15270  ((void)0);
15271  return cme;
15272 }
15273 static const rb_callable_method_entry_t *
15274 refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
15275 {
15276  const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
15277  const rb_callable_method_entry_t *cme;
15278  if (orig_me->defined_class == 0) {
15279  cme = ((void *)0);
15280  rb_notimplement();
15281  }
15282  else {
15283  cme = (const rb_callable_method_entry_t *)orig_me;
15284  }
15285  ((void)0);
15286  if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
15287  cme = ((void *)0);
15288  }
15289  return cme;
15290 }
15291 static int
15292 search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, ID mid, struct rb_call_cache *cc)
15293 {
15294  const rb_cref_t *cref = vm_get_cref(cfp->ep);
15295  for (; cref; cref = CREF_NEXT(cref)) {
15296  const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), cc->me->owner);
15297  if (!((VALUE)(refinement) != ((VALUE)RUBY_Qnil))) continue;
15298  const rb_callable_method_entry_t *const ref_me =
15299  rb_callable_method_entry(refinement, mid);
15300  if (ref_me) {
15301  if (cc->call == vm_call_super_method) {
15302  const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
15303  const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
15304  if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
15305  continue;
15306  }
15307  }
15308  if (cc->me->def->type != VM_METHOD_TYPE_REFINED ||
15309  cc->me->def != ref_me->def) {
15310  CC_SET_ME(cc, ref_me);
15311  }
15312  if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
15313  return 1;
15314  }
15315  }
15316  else {
15317  CC_SET_ME(cc, ((void *)0));
15318  return 0;
15319  }
15320  }
15321  if (cc->me->def->body.refined.orig_me) {
15322  CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
15323  }
15324  else {
15326  CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, mid) : ((void *)0));
15327  }
15328  return 1;
15329 }
15330 static VALUE
15331 vm_call_method_each_type(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15332 {
15333  const struct rb_call_info *ci = &cd->ci;
15334  struct rb_call_cache *cc = &cd->cc;
15335  switch (cc->me->def->type) {
15336  case VM_METHOD_TYPE_ISEQ:
15337  CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
15338  return vm_call_iseq_setup(ec, cfp, calling, cd);
15340  case VM_METHOD_TYPE_CFUNC:
15341  CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
15342  return vm_call_cfunc(ec, cfp, calling, cd);
15344  CALLER_SETUP_ARG(cfp, calling, ci);
15345  if (calling->argc == 1 && calling->kw_splat && (((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
15346  rb_warn_keyword_to_last_hash(ec, calling, ci, ((void *)0));
15347  }
15348  else {
15349  CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15350  }
15351  rb_check_arity(calling->argc, 1, 1);
15352  cc->aux.index = 0;
15353  CC_SET_FASTPATH(cc, vm_call_attrset, !((ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (ci->flag & (0x01 << VM_CALL_KWARG_bit))));
15354  return vm_call_attrset(ec, cfp, calling, cd);
15355  case VM_METHOD_TYPE_IVAR:
15356  CALLER_SETUP_ARG(cfp, calling, ci);
15357  CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15358  rb_check_arity(calling->argc, 0, 0);
15359  cc->aux.index = 0;
15360  CC_SET_FASTPATH(cc, vm_call_ivar, !(ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)));
15361  return vm_call_ivar(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);
15369  case VM_METHOD_TYPE_ALIAS:
15370  CC_SET_ME(cc, aliased_callable_method_entry(cc->me));
15371  ((void)0);
15372  return vm_call_method_each_type(ec, cfp, calling, cd);
15374  switch (cc->me->def->body.optimize_type) {
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);
15384  default:
15385  rb_bug("vm_call_method: unsupported optimized method type (%d)",
15386  cc->me->def->body.optimize_type);
15387  }
15388  case VM_METHOD_TYPE_UNDEF:
15389  break;
15390  case VM_METHOD_TYPE_ZSUPER:
15391  return vm_call_zsuper(ec, cfp, calling, cd, ((((struct RClass*)(cc->me->defined_class))->ptr)->origin_));
15393  if (search_refined_method(ec, cfp, ci->mid, cc))
15394  return vm_call_method(ec, cfp, calling, cd);
15395  else
15396  return vm_call_method_nome(ec, cfp, calling, cd);
15397  }
15398  rb_bug("vm_call_method: unsupported method type (%d)", cc->me->def->type);
15399 }
15400 __attribute__ ((__noreturn__)) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
15401 static VALUE
15402 vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15403 {
15404  const struct rb_call_info *ci = &cd->ci;
15405  struct rb_call_cache *cc = &cd->cc;
15406  const int stat = ci_missing_reason(ci);
15407  if (ci->mid == idMethodMissing) {
15409  VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
15410  vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
15411  }
15412  else {
15414  CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15415  return vm_call_method_missing(ec, cfp, calling, cd);
15416  }
15417 }
15418 static inline VALUE
15419 vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15420 {
15421  const struct rb_call_info *ci = &cd->ci;
15422  struct rb_call_cache *cc = &cd->cc;
15423  ((void)0);
15424  if (cc->me != ((void *)0)) {
15425  switch ((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
15426  case METHOD_VISI_PUBLIC:
15427  return vm_call_method_each_type(ec, cfp, calling, cd);
15428  case METHOD_VISI_PRIVATE:
15429  if (!(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
15431  if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
15433  CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15434  return vm_call_method_missing(ec, cfp, calling, cd);
15435  }
15436  return vm_call_method_each_type(ec, cfp, calling, cd);
15437  case METHOD_VISI_PROTECTED:
15438  if (!(ci->flag & (0x01 << VM_CALL_OPT_SEND_bit))) {
15441  return vm_call_method_missing(ec, cfp, calling, cd);
15442  }
15443  else {
15444  ((void)0);
15445  if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
15446  struct rb_kwarg_call_data *kcd = (void *)cd;
15447  struct rb_kwarg_call_data cd_entry = *kcd;
15448  return vm_call_method_each_type(ec, cfp, calling, (void *)&cd_entry);
15449  }
15450  else {
15451  struct rb_call_data cd_entry = *cd;
15452  return vm_call_method_each_type(ec, cfp, calling, &cd_entry);
15453  }
15454  }
15455  }
15456  return vm_call_method_each_type(ec, cfp, calling, cd);
15457  default:
15458  rb_bug("unreachable");
15459  }
15460  }
15461  else {
15462  return vm_call_method_nome(ec, cfp, calling, cd);
15463  }
15464 }
15465 static VALUE
15466 vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15467 {
15468  ((void)0);
15469  return vm_call_method(ec, reg_cfp, calling, cd);
15470 }
15471 static VALUE
15472 vm_call_super_method(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15473 {
15474  ((void)0);
15475  const struct rb_call_cache *cc = &cd->cc;
15476  if (cc->call != vm_call_super_method) rb_bug("bug");
15477  return vm_call_method(ec, reg_cfp, calling, cd);
15478 }
15479 static inline VALUE
15480 vm_search_normal_superclass(VALUE klass)
15481 {
15482  if ((int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_ICLASS &&
15483  ((!(((VALUE)(((struct RBasic*)(klass))->klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(((struct RBasic*)(klass))->klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(((struct RBasic*)(klass))->klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((((struct RBasic*)(klass))->klass)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
15484  klass = ((struct RBasic*)(klass))->klass;
15485  }
15486  klass = ((((struct RClass*)(klass))->ptr)->origin_);
15487  return RCLASS_SUPER(klass);
15488 }
15489 __attribute__ ((__noreturn__)) static void vm_super_outside(void);
15490 static void
15491 vm_super_outside(void)
15492 {
15493  rb_raise(rb_eNoMethodError, "super called outside of method");
15494 }
15495 static void
15496 vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
15497 {
15498  VALUE current_defined_class, klass;
15500  struct rb_call_info *ci = &cd->ci;
15501  struct rb_call_cache *cc = &cd->cc;
15502  if (!me) {
15503  vm_super_outside();
15504  }
15505  current_defined_class = me->defined_class;
15506  if (!!((VALUE)(((((struct RClass*)(current_defined_class))->ptr)->refined_class)) != ((VALUE)RUBY_Qnil))) {
15507  current_defined_class = ((((struct RClass*)(current_defined_class))->ptr)->refined_class);
15508  }
15509  if ((int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_MODULE &&
15510  !((!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((current_defined_class)))->flags&((RMODULE_INCLUDED_INTO_REFINEMENT))):0) &&
15511  !rb_obj_is_kind_of(recv, current_defined_class)) {
15512  VALUE m = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(current_defined_class))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((current_defined_class) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((current_defined_class) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((current_defined_class) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((current_defined_class) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(current_defined_class)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ?
15513  ((((struct RClass*)(current_defined_class))->ptr)->includer) : current_defined_class;
15514  if (m) {
15516  "self has wrong type to call super in this context: "
15517  "%""l""i" "\v"" (expected %""l""i" "\v"")",
15518  rb_obj_class(recv), m);
15519  }
15520  }
15521  if (me->def->type == VM_METHOD_TYPE_BMETHOD && (ci->flag & (0x01 << VM_CALL_ZSUPER_bit))) {
15523  "implicit argument passing of super from method defined"
15524  " by define_method() is not supported."
15525  " Specify all arguments explicitly.");
15526  }
15527  ci->mid = me->def->original_id;
15528  klass = vm_search_normal_superclass(me->defined_class);
15529  if (!klass) {
15531  CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15532  }
15533  else {
15534  CC_SET_ME(cc, rb_callable_method_entry(klass, ci->mid));
15535  CC_SET_FASTPATH(cc, vm_call_super_method, 1);
15536  }
15537 }
15538 static inline int
15539 block_proc_is_lambda(const VALUE procval)
15540 {
15541  rb_proc_t *proc;
15542  if (procval) {
15543  (((proc)) = (rb_proc_t*)(((struct RData*)(((procval))))->data));
15544  return proc->is_lambda;
15545  }
15546  else {
15547  return 0;
15548  }
15549 }
15550 static VALUE
15551 vm_yield_with_cfunc(rb_execution_context_t *ec,
15552  const struct rb_captured_block *captured,
15553  VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
15555 {
15556  int is_lambda = 0;
15557  VALUE val, arg, blockarg;
15558  int frame_flag;
15559  const struct vm_ifunc *ifunc = captured->code.ifunc;
15560  if (is_lambda) {
15562  }
15563  else if (argc == 0) {
15564  arg = ((VALUE)RUBY_Qnil);
15565  }
15566  else {
15567  arg = argv[0];
15568  }
15569  blockarg = rb_vm_bh_to_procval(ec, block_handler);
15571  switch (kw_splat) {
15572  case 1:
15573  frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
15574  break;
15575  case 2:
15576  frame_flag |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
15577  break;
15578  }
15579  vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
15580  frame_flag,
15581  self,
15582  ((VALUE)((captured->ep)) | (0x01)),
15583  (VALUE)me,
15584  0, ec->cfp->sp, 0, 0);
15585  val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
15586  rb_vm_pop_frame(ec);
15587  return val;
15588 }
15589 static VALUE
15590 vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
15591 {
15592  return rb_sym_proc_call((rb_sym2id(symbol)), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
15593 }
15594 static inline int
15595 vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
15596 {
15597  int i;
15598  long len = rb_array_len(ary);
15599  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
15600  for (i=0; i<len && i<iseq->body->param.lead_num; i++) {
15601  argv[i] = (rb_array_const_ptr_transient(ary)[i]);
15602  }
15603  return i;
15604 }
15605 static inline VALUE
15606 vm_callee_setup_block_arg_arg0_check(VALUE *argv)
15607 {
15608  VALUE ary, arg0 = argv[0];
15609  ary = rb_check_array_type(arg0);
15610  ((void)0);
15611  return ary;
15612 }
15613 static int
15614 vm_callee_setup_block_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, const struct rb_call_info *ci, const rb_iseq_t *iseq, VALUE *argv, const enum arg_setup_type arg_setup_type)
15615 {
15616  if (rb_simple_iseq_p(iseq)) {
15617  rb_control_frame_t *cfp = ec->cfp;
15618  VALUE arg0;
15619  CALLER_SETUP_ARG(cfp, calling, ci);
15620  if (calling->kw_splat && calling->argc == iseq->body->param.lead_num + iseq->body->param.post_num && (((!(((struct RBasic*)((cfp->sp[-1])))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(cfp->sp[-1]))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(cfp->sp[-1]))->as.st)->num_entries)) == 0)) {
15621  rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
15622  }
15623  else {
15624  CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15625  }
15627  calling->argc == 1 &&
15628  iseq->body->param.flags.has_lead &&
15629  !iseq->body->param.flags.ambiguous_param0 &&
15630  !!((VALUE)(arg0 = vm_callee_setup_block_arg_arg0_check(argv)) != ((VALUE)RUBY_Qnil))) {
15631  calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
15632  }
15633  if (calling->argc != iseq->body->param.lead_num) {
15635  if (calling->argc < iseq->body->param.lead_num) {
15636  int i;
15637  if ((__builtin_expect(!!(!(!(1/!!(sizeof(*((cfp)->sp)) == sizeof(VALUE))) || !(1/!!(sizeof(*(cfp)) == sizeof(rb_control_frame_t))) || ((rb_control_frame_t *)(((cfp)->sp) + (iseq->body->param.lead_num)) + 1) >= (cfp))), 1))) {(void)0;} else vm_stackoverflow();
15638  for (i=calling->argc; i<iseq->body->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
15639  calling->argc = iseq->body->param.lead_num;
15640  }
15641  else if (calling->argc > iseq->body->param.lead_num) {
15642  calling->argc = iseq->body->param.lead_num;
15643  }
15644  }
15645  else {
15646  argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
15647  }
15648  }
15649  return 0;
15650  }
15651  else {
15652  return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
15653  }
15654 }
15655 static int
15656 vm_yield_setup_args(rb_execution_context_t *ec, const rb_iseq_t *iseq, const int argc, VALUE *argv, int kw_splat, VALUE block_handler, enum arg_setup_type arg_setup_type)
15657 {
15658  struct rb_calling_info calling_entry, *calling;
15659  struct rb_call_info ci_entry, *ci;
15660  calling = &calling_entry;
15661  calling->argc = argc;
15662  calling->block_handler = block_handler;
15663  calling->kw_splat = kw_splat;
15664  calling->recv = ((VALUE)RUBY_Qundef);
15665  ci_entry.flag = kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0;
15666  ci = &ci_entry;
15667  return vm_callee_setup_block_arg(ec, calling, ci, iseq, argv, arg_setup_type);
15668 }
15669 static VALUE
15670 vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15671  struct rb_calling_info *calling, const struct rb_call_info *ci,
15672  int is_lambda, const struct rb_captured_block *captured)
15673 {
15674  const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
15675  const int arg_size = iseq->body->param.size;
15676  VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
15677  int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
15678  (((reg_cfp)->sp) = (((rsp))));
15679  vm_push_frame(ec, iseq,
15680  VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
15681  captured->self,
15682  ((VALUE)((captured->ep)) | (0x01)), 0,
15684  rsp + arg_size,
15685  iseq->body->local_table_size - arg_size, iseq->body->stack_max);
15686  return ((VALUE)RUBY_Qundef);
15687 }
15688 static VALUE
15689 vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15690  struct rb_calling_info *calling, const struct rb_call_info *ci,
15691  VALUE symbol)
15692 {
15693  VALUE val;
15694  int argc;
15695  CALLER_SETUP_ARG(ec->cfp, calling, ci);
15696  argc = calling->argc;
15697  val = vm_yield_with_symbol(ec, symbol, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler);
15698  ((((reg_cfp)->sp) -= (((argc)))));
15699  return val;
15700 }
15701 static VALUE
15702 vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15703  struct rb_calling_info *calling, const struct rb_call_info *ci,
15704  const struct rb_captured_block *captured)
15705 {
15706  VALUE val;
15707  int argc;
15708  int kw_splat = calling->kw_splat;
15709  CALLER_SETUP_ARG(ec->cfp, calling, ci);
15710  CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
15711  if (kw_splat && !calling->kw_splat) {
15712  kw_splat = 2;
15713  }
15714  else {
15715  kw_splat = calling->kw_splat;
15716  }
15717  argc = calling->argc;
15718  val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), kw_splat, calling->block_handler, ((void *)0));
15719  ((((reg_cfp)->sp) -= (((argc)))));
15720  return val;
15721 }
15722 static VALUE
15723 vm_proc_to_block_handler(VALUE procval)
15724 {
15725  const struct rb_block *block = vm_proc_block(procval);
15726  switch (vm_block_type(block)) {
15727  case block_type_iseq:
15728  return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
15729  case block_type_ifunc:
15730  return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
15731  case block_type_symbol:
15732  return VM_BH_FROM_SYMBOL(block->as.symbol);
15733  case block_type_proc:
15734  return VM_BH_FROM_PROC(block->as.proc);
15735  }
15736  __builtin_unreachable();
15737  return ((VALUE)RUBY_Qundef);
15738 }
15739 static inline VALUE
15740 vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15741  struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
15742 {
15743  int is_lambda = 0;
15744  again:
15745  switch (vm_block_handler_type(block_handler)) {
15747  {
15748  const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
15749  return vm_invoke_iseq_block(ec, reg_cfp, calling, ci, is_lambda, captured);
15750  }
15752  {
15753  const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
15754  return vm_invoke_ifunc_block(ec, reg_cfp, calling, ci, captured);
15755  }
15757  is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(block_handler));
15758  block_handler = vm_proc_to_block_handler(VM_BH_TO_PROC(block_handler));
15759  goto again;
15761  return vm_invoke_symbol_block(ec, reg_cfp, calling, ci, VM_BH_TO_SYMBOL(block_handler));
15762  }
15763  __builtin_unreachable();
15764  return ((VALUE)RUBY_Qnil);
15765 }
15766 static VALUE
15767 vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
15768 {
15769  const rb_execution_context_t *ec = rb_current_execution_context();
15771  struct rb_captured_block *captured;
15772  if (cfp == 0) {
15773  rb_bug("vm_make_proc_with_iseq: unreachable");
15774  }
15775  captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
15776  captured->code.iseq = blockiseq;
15777  return rb_vm_make_proc(ec, captured, rb_cProc);
15778 }
15779 static VALUE
15780 vm_once_exec(VALUE iseq)
15781 {
15782  VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
15783  return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
15784 }
15785 static VALUE
15786 vm_once_clear(VALUE data)
15787 {
15788  union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
15789  is->once.running_thread = ((void *)0);
15790  return ((VALUE)RUBY_Qnil);
15791 }
15794 {
15795  (*(((((reg_cfp)->sp)))-(0)-1)) = rb_struct_aref((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)));
15796  return reg_cfp;
15797 }
15800 {
15801  rb_struct_aset((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)), (*(((((reg_cfp)->sp)))-(1)-1)));
15802  return reg_cfp;
15803 }
15804 static enum defined_type
15805 check_respond_to_missing(VALUE obj, VALUE v)
15806 {
15807  VALUE args[2];
15808  VALUE r;
15809  args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
15810  r = rb_check_funcall(v, idRespond_to_missing, 2, args);
15811  if (r != ((VALUE)RUBY_Qundef) && !(((VALUE)(r) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
15812  return DEFINED_METHOD;
15813  }
15814  else {
15815  return DEFINED_NOT_DEFINED;
15816  }
15817 }
15818 static VALUE
15819 vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE needstr, VALUE v)
15820 {
15821  VALUE klass;
15822  enum defined_type expr_type = DEFINED_NOT_DEFINED;
15823  enum defined_type type = (enum defined_type)op_type;
15824  switch (type) {
15825  case DEFINED_IVAR:
15826  if (rb_ivar_defined((((((reg_cfp)))->self)), (rb_sym2id(obj)))) {
15827  expr_type = DEFINED_IVAR;
15828  }
15829  break;
15830  case DEFINED_IVAR2:
15831  klass = vm_get_cbase(((((reg_cfp)->ep))));
15832  break;
15833  case DEFINED_GVAR:
15835  expr_type = DEFINED_GVAR;
15836  }
15837  break;
15838  case DEFINED_CVAR: {
15839  const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
15840  klass = vm_get_cvar_base(cref, (((reg_cfp))));
15841  if (rb_cvar_defined(klass, (rb_sym2id(obj)))) {
15842  expr_type = DEFINED_CVAR;
15843  }
15844  break;
15845  }
15846  case DEFINED_CONST:
15847  case DEFINED_CONST_FROM: {
15848  _Bool allow_nil = type == DEFINED_CONST;
15849  klass = v;
15850  if (vm_get_ev_const(ec, klass, (rb_sym2id(obj)), allow_nil, 1)) {
15851  expr_type = DEFINED_CONST;
15852  }
15853  break;
15854  }
15855  case DEFINED_FUNC:
15856  klass = rb_class_of((VALUE)(v));
15857  if (rb_method_boundp(klass, (rb_sym2id(obj)), 0)) {
15858  expr_type = DEFINED_METHOD;
15859  }
15860  else {
15861  expr_type = check_respond_to_missing(obj, v);
15862  }
15863  break;
15864  case DEFINED_METHOD:{
15865  VALUE klass = rb_class_of((VALUE)(v));
15867  if (me) {
15868  switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
15869  case METHOD_VISI_PRIVATE:
15870  break;
15871  case METHOD_VISI_PROTECTED:
15872  if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(me->defined_class))) {
15873  break;
15874  }
15875  case METHOD_VISI_PUBLIC:
15876  expr_type = DEFINED_METHOD;
15877  break;
15878  default:
15879  rb_bug("vm_defined: unreachable: %u", (unsigned int)(rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)));
15880  }
15881  }
15882  else {
15883  expr_type = check_respond_to_missing(obj, v);
15884  }
15885  break;
15886  }
15887  case DEFINED_YIELD:
15888  if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
15889  expr_type = DEFINED_YIELD;
15890  }
15891  break;
15892  case DEFINED_ZSUPER:
15893  {
15895  if (me) {
15896  VALUE klass = vm_search_normal_superclass(me->defined_class);
15897  ID id = me->def->original_id;
15898  if (rb_method_boundp(klass, id, 0)) {
15899  expr_type = DEFINED_ZSUPER;
15900  }
15901  }
15902  }
15903  break;
15904  case DEFINED_REF:{
15905  if (vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), ((int)((long)(((long)(obj))>>(int)(1))))) != ((VALUE)RUBY_Qnil)) {
15906  expr_type = DEFINED_GVAR;
15907  }
15908  break;
15909  }
15910  default:
15911  rb_bug("unimplemented defined? type (VM)");
15912  break;
15913  }
15914  if (expr_type != 0) {
15915  if (needstr != ((VALUE)RUBY_Qfalse)) {
15916  return rb_iseq_defined_string(expr_type);
15917  }
15918  else {
15919  return ((VALUE)RUBY_Qtrue);
15920  }
15921  }
15922  else {
15923  return ((VALUE)RUBY_Qnil);
15924  }
15925 }
15926 static const VALUE *
15927 vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
15928 {
15929  rb_num_t i;
15930  const VALUE *ep = reg_ep;
15931  for (i = 0; i < lv; i++) {
15932  ep = ((VALUE *)((ep)[(-1)] & ~0x03));
15933  }
15934  return ep;
15935 }
15936 static VALUE
15937 vm_get_special_object(const VALUE *const reg_ep,
15939 {
15940  switch (type) {
15942  return rb_mRubyVMFrozenCore;
15944  return vm_get_cbase(reg_ep);
15946  return vm_get_const_base(reg_ep);
15947  default:
15948  rb_bug("putspecialobject insn: unknown value_type %d", type);
15949  }
15950 }
15951 static void
15952 vm_freezestring(VALUE str, VALUE debug)
15953 {
15954  if (!!((VALUE)(debug) != ((VALUE)RUBY_Qnil))) {
15956  }
15957  rb_str_freeze(str);
15958 }
15959 static VALUE
15960 vm_concat_array(VALUE ary1, VALUE ary2st)
15961 {
15962  const VALUE ary2 = ary2st;
15963  VALUE tmp1 = rb_check_to_array(ary1);
15964  VALUE tmp2 = rb_check_to_array(ary2);
15965  if (!((VALUE)(tmp1) != ((VALUE)RUBY_Qnil))) {
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); });
15967  }
15968  if (!((VALUE)(tmp2) != ((VALUE)RUBY_Qnil))) {
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); });
15970  }
15971  if (tmp1 == ary1) {
15972  tmp1 = rb_ary_dup(ary1);
15973  }
15974  return rb_ary_concat(tmp1, tmp2);
15975 }
15976 static VALUE
15977 vm_splat_array(VALUE flag, VALUE ary)
15978 {
15979  VALUE tmp = rb_check_to_array(ary);
15980  if (!((VALUE)(tmp) != ((VALUE)RUBY_Qnil))) {
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); });
15982  }
15983  else if (!(((VALUE)(flag) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
15984  return rb_ary_dup(tmp);
15985  }
15986  else {
15987  return tmp;
15988  }
15989 }
15990 static VALUE
15991 vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
15992 {
15993  enum vm_check_match_type type = ((int)flag) & 0x03;
15994  if (flag & 0x04) {
15995  long i;
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]);
15999  VALUE c = check_match(ec, v, target, type);
16000  if (!(((VALUE)(c) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
16001  return c;
16002  }
16003  }
16004  return ((VALUE)RUBY_Qfalse);
16005  }
16006  else {
16007  return check_match(ec, pattern, target, type);
16008  }
16009 }
16010 static VALUE
16011 vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
16012 {
16013  const VALUE kw_bits = *(ep - bits);
16014  if ((((int)(long)(kw_bits))&RUBY_FIXNUM_FLAG)) {
16015  unsigned int b = (unsigned int)((unsigned long)((long)(((long)(kw_bits))>>(int)(1))));
16016  if ((idx < (32-1)) && (b & (0x01 << idx)))
16017  return ((VALUE)RUBY_Qfalse);
16018  }
16019  else {
16020  ((void)0);
16021  if (rb_hash_has_key(kw_bits, (((VALUE)(idx))<<1 | RUBY_FIXNUM_FLAG))) return ((VALUE)RUBY_Qfalse);
16022  }
16023  return ((VALUE)RUBY_Qtrue);
16024 }
16025 static void
16026 vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
16027 {
16028  if (0 ||
16029  0 ||
16030  0 ||
16031  0) {
16032  switch (flag) {
16033  case 0x0008:
16034  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
16035  return;
16036  case 0x0020:
16037  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
16038  return;
16039  case 0x0010:
16040  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
16041  return;
16042  case 0x0040:
16043  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, 0, 0, &args)) { do {} while (0); } } } while (0);
16044  return;
16045  }
16046  }
16047 }
16048 static VALUE
16049 vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
16050 {
16051  VALUE ns;
16052  if ((ns = vm_search_const_defined_class(cbase, id)) == 0) {
16053  return ns;
16054  }
16055  else if (((flags) & 0x08)) {
16056  return rb_public_const_get_at(ns, id);
16057  }
16058  else {
16059  return rb_const_get_at(ns, id);
16060  }
16061 }
16062 static VALUE
16063 vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
16064 {
16065  if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
16066  return 0;
16067  }
16068  else if (((flags) & 0x10)) {
16070  if (tmp != super) {
16072  "superclass mismatch for class %""l""i" "\v""",
16073  rb_id2str(id));
16074  }
16075  else {
16076  return klass;
16077  }
16078  }
16079  else {
16080  return klass;
16081  }
16082 }
16083 static VALUE
16084 vm_check_if_module(ID id, VALUE mod)
16085 {
16086  if (!( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(mod))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((mod) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((mod) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((mod) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((mod) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(mod)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
16087  return 0;
16088  }
16089  else {
16090  return mod;
16091  }
16092 }
16093 static VALUE
16094 declare_under(ID id, VALUE cbase, VALUE c)
16095 {
16097  rb_const_set(cbase, id, c);
16098  return c;
16099 }
16100 static VALUE
16101 vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
16102 {
16103  VALUE s = ((flags) & 0x10) ? super : rb_cObject;
16104  VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
16105  rb_class_inherited(s, c);
16106  return c;
16107 }
16108 static VALUE
16109 vm_declare_module(ID id, VALUE cbase)
16110 {
16111  return declare_under(id, cbase, rb_define_module_id(id));
16112 }
16113 __attribute__ ((__noreturn__)) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
16114 static void
16115 unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
16116 {
16117  VALUE name = rb_id2str(id);
16118  VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
16119  name, type);
16120  VALUE location = rb_const_source_location_at(cbase, id);
16121  if (!!((VALUE)(location) != ((VALUE)RUBY_Qnil))) {
16122  rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
16123  " previous definition of %""l""i" "\v"" was here",
16124  rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
16125  }
16127 }
16128 static VALUE
16129 vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
16130 {
16131  VALUE klass;
16132  if (((flags) & 0x10) && !( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(super))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((super) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((super) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((super) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((super) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(super)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( 0 || (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
16134  "superclass must be a Class (%""l""i" "\v"" given)",
16135  rb_obj_class(super));
16136  }
16137  vm_check_if_namespace(cbase);
16138  rb_autoload_load(cbase, id);
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);
16142  return klass;
16143  }
16144  else {
16145  return vm_declare_class(id, flags, cbase, super);
16146  }
16147 }
16148 static VALUE
16149 vm_define_module(ID id, rb_num_t flags, VALUE cbase)
16150 {
16151  VALUE mod;
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);
16156  return mod;
16157  }
16158  else {
16159  return vm_declare_module(id, cbase);
16160  }
16161 }
16162 static VALUE
16163 vm_find_or_create_class_by_id(ID id,
16164  rb_num_t flags,
16165  VALUE cbase,
16166  VALUE super)
16167 {
16169  switch (type) {
16171  return vm_define_class(id, flags, cbase, super);
16173  return rb_singleton_class(cbase);
16175  return vm_define_module(id, flags, cbase);
16176  default:
16177  rb_bug("unknown defineclass type: %d", (int)type);
16178  }
16179 }
16181 vm_scope_visibility_get(const rb_execution_context_t *ec)
16182 {
16184  if (!vm_env_cref_by_cref(cfp->ep)) {
16185  return METHOD_VISI_PUBLIC;
16186  }
16187  else {
16188  return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
16189  }
16190 }
16191 static int
16192 vm_scope_module_func_check(const rb_execution_context_t *ec)
16193 {
16195  if (!vm_env_cref_by_cref(cfp->ep)) {
16196  return 0;
16197  }
16198  else {
16199  return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
16200  }
16201 }
16202 static void
16203 vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
16204 {
16205  VALUE klass;
16207  rb_cref_t *cref = vm_ec_cref(ec);
16208  if (!is_singleton) {
16209  klass = CREF_CLASS(cref);
16210  visi = vm_scope_visibility_get(ec);
16211  }
16212  else {
16214  visi = METHOD_VISI_PUBLIC;
16215  }
16216  if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
16217  rb_raise(rb_eTypeError, "no class/module to add method");
16218  }
16219  rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
16220  if (!is_singleton && vm_scope_module_func_check(ec)) {
16222  rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
16223  }
16224 }
16225 static void
16226 vm_search_method_wrap(
16227  const struct rb_control_frame_struct *reg_cfp,
16228  struct rb_call_data *cd,
16229  VALUE recv)
16230 {
16231  vm_search_method(cd, recv);
16232 }
16233 static void
16234 vm_search_invokeblock(
16235  const struct rb_control_frame_struct *reg_cfp,
16236  struct rb_call_data *cd,
16237  VALUE recv)
16238 {
16239 }
16240 static VALUE
16241 vm_invokeblock_i(
16242  struct rb_execution_context_struct *ec,
16244  struct rb_calling_info *calling,
16245  struct rb_call_data *cd)
16246 {
16247  const struct rb_call_info *ci = &cd->ci;
16248  VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
16249  if (block_handler == 0) {
16250  rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
16251  }
16252  else {
16253  return vm_invoke_block(ec, (((reg_cfp))), calling, ci, block_handler);
16254  }
16255 }
16256 static VALUE
16257 vm_sendish(
16258  struct rb_execution_context_struct *ec,
16260  struct rb_call_data *cd,
16262  void (*method_explorer)(
16263  const struct rb_control_frame_struct *reg_cfp,
16264  struct rb_call_data *cd,
16265  VALUE recv))
16266 {
16267  CALL_INFO ci = &cd->ci;
16268  CALL_CACHE cc = &cd->cc;
16269  VALUE val;
16270  int argc = ci->orig_argc;
16271  VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
16272  struct rb_calling_info calling;
16273  calling.block_handler = block_handler;
16274  calling.kw_splat = ((ci)->flag & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0;
16275  calling.recv = recv;
16276  calling.argc = argc;
16277  method_explorer((((reg_cfp))), cd, recv);
16278  val = cc->call(ec, (((reg_cfp))), &calling, cd);
16279  if (val != ((VALUE)RUBY_Qundef)) {
16280  return val;
16281  }
16282  else {
16283  do { (reg_cfp) = ec->cfp; } while (0);
16284  }
16285  if (((((reg_cfp)))->iseq)->body->catch_except_p) {
16286  VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
16287  return rb_vm_exec(ec, 1);
16288  }
16289  else if ((val = mjit_exec(ec)) == ((VALUE)RUBY_Qundef)) {
16290  VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
16291  return rb_vm_exec(ec, 0);
16292  }
16293  else {
16294  return val;
16295  }
16296 }
16297 static VALUE
16298 vm_opt_str_freeze(VALUE str, int bop, ID id)
16299 {
16300  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16301  return str;
16302  }
16303  else {
16304  return ((VALUE)RUBY_Qundef);
16305  }
16306 }
16307 #define id_cmp idCmp
16308 static VALUE
16309 vm_opt_newarray_max(rb_num_t num, const VALUE *ptr)
16310 {
16311  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
16312  if (num == 0) {
16313  return ((VALUE)RUBY_Qnil);
16314  }
16315  else {
16316  struct cmp_opt_data cmp_opt = { 0, 0 };
16317  VALUE result = *ptr;
16318  rb_snum_t i = num - 1;
16319  while (i-- > 0) {
16320  const VALUE v = *++ptr;
16321  if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 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 & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( 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 & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) > 0) {
16322  result = v;
16323  }
16324  }
16325  return result;
16326  }
16327  }
16328  else {
16329  VALUE ary = rb_ary_new_from_values(num, ptr);
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)); }); });
16331  }
16332 }
16333 static VALUE
16334 vm_opt_newarray_min(rb_num_t num, const VALUE *ptr)
16335 {
16336  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
16337  if (num == 0) {
16338  return ((VALUE)RUBY_Qnil);
16339  }
16340  else {
16341  struct cmp_opt_data cmp_opt = { 0, 0 };
16342  VALUE result = *ptr;
16343  rb_snum_t i = num - 1;
16344  while (i-- > 0) {
16345  const VALUE v = *++ptr;
16346  if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( 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 & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( 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 & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) < 0) {
16347  result = v;
16348  }
16349  }
16350  return result;
16351  }
16352  }
16353  else {
16354  VALUE ary = rb_ary_new_from_values(num, ptr);
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)); }); });
16356  }
16357 }
16358 #undef id_cmp
16359 static int
16360 vm_ic_hit_p(IC ic, const VALUE *reg_ep)
16361 {
16363  return (ic->ic_cref == ((void *)0) ||
16364  ic->ic_cref == vm_get_cref(reg_ep));
16365  }
16366  return 0;
16367 }
16368 static void
16369 vm_ic_update(IC ic, VALUE val, const VALUE *reg_ep)
16370 {
16371  ((void)0);
16372  ic->value = val;
16374  ic->ic_cref = vm_get_const_key_cref(reg_ep);
16376 }
16377 static VALUE
16378 vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
16379 {
16380  rb_thread_t *th = rb_ec_thread_ptr(ec);
16381  rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
16382  again:
16383  if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
16384  return is->once.value;
16385  }
16386  else if (is->once.running_thread == ((void *)0)) {
16387  VALUE val;
16388  is->once.running_thread = th;
16389  val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
16390  __extension__({
16391 #pragma GCC diagnostic push
16392 ;
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; });
16397  is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
16398  return val;
16399  }
16400  else if (is->once.running_thread == th) {
16401  return vm_once_exec((VALUE)iseq);
16402  }
16403  else {
16404  rb_vm_check_ints(ec);
16406  goto again;
16407  }
16408 }
16409 static OFFSET
16410 vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
16411 {
16412  switch (__extension__({ VALUE arg_obj = (key); (((VALUE)(arg_obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(arg_obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) ? -1 : (int)(((struct RBasic*)(arg_obj))->flags & RUBY_T_MASK); })) {
16413  case -1:
16414  case RUBY_T_FLOAT:
16415  case RUBY_T_SYMBOL:
16416  case RUBY_T_BIGNUM:
16417  case RUBY_T_STRING:
16418  if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQQ)]&((1 << 6) | (1 << 0) | (1 << 1) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 2))) == 0), 1)))) {
16419  st_data_t val;
16420  if (( 0 || (!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == RUBY_T_FLOAT))) {
16421  double kval = rb_float_value_inline(key);
16422  if (!(__builtin_isinf_sign (kval)) && modf(kval, &kval) == 0.0) {
16423  key = (((kval) < (0x7fffffffL>>1)+1) && ((kval) >= (((long)(-0x7fffffffL -1L))>>(int)(1)))) ? (((VALUE)((long)kval))<<1 | RUBY_FIXNUM_FLAG) : rb_dbl2big(kval);
16424  }
16425  }
16426  if (rb_hash_stlike_lookup(hash, key, &val)) {
16427  return ((long)(((long)((VALUE)val))>>(int)(1)));
16428  }
16429  else {
16430  return else_offset;
16431  }
16432  }
16433  }
16434  return 0;
16435 }
16436 __attribute__ ((__noreturn__)) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
16437 static void
16438 vm_stack_consistency_error(const rb_execution_context_t *ec,
16439  const rb_control_frame_t *cfp,
16440  const VALUE *bp)
16441 {
16442  const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
16443  const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
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);
16447 }
16448 static VALUE
16449 vm_opt_plus(VALUE recv, VALUE obj)
16450 {
16451  if (FIXNUM_2_P(recv, obj) &&
16452  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
16453  return rb_fix_plus_fix(recv, obj);
16454  }
16455  else if (FLONUM_2_P(recv, obj) &&
16456  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
16457  return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
16458  }
16459  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16460  return ((VALUE)RUBY_Qundef);
16461  }
16462  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16463  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16464  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
16465  return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
16466  }
16467  else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16468  (((struct RBasic*)(obj))->klass) == rb_cString &&
16469  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
16470  return rb_str_opt_plus(recv, obj);
16471  }
16472  else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16473  (((struct RBasic*)(obj))->klass) == rb_cArray &&
16474  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
16475  return rb_ary_plus(recv, obj);
16476  }
16477  else {
16478  return ((VALUE)RUBY_Qundef);
16479  }
16480 }
16481 static VALUE
16482 vm_opt_minus(VALUE recv, VALUE obj)
16483 {
16484  if (FIXNUM_2_P(recv, obj) &&
16485  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
16486  return rb_fix_minus_fix(recv, obj);
16487  }
16488  else if (FLONUM_2_P(recv, obj) &&
16489  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
16490  return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
16491  }
16492  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16493  return ((VALUE)RUBY_Qundef);
16494  }
16495  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16496  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16497  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
16498  return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
16499  }
16500  else {
16501  return ((VALUE)RUBY_Qundef);
16502  }
16503 }
16504 static VALUE
16505 vm_opt_mult(VALUE recv, VALUE obj)
16506 {
16507  if (FIXNUM_2_P(recv, obj) &&
16508  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
16509  return rb_fix_mul_fix(recv, obj);
16510  }
16511  else if (FLONUM_2_P(recv, obj) &&
16512  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
16513  return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
16514  }
16515  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16516  return ((VALUE)RUBY_Qundef);
16517  }
16518  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16519  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16520  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
16521  return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
16522  }
16523  else {
16524  return ((VALUE)RUBY_Qundef);
16525  }
16526 }
16527 static VALUE
16528 vm_opt_div(VALUE recv, VALUE obj)
16529 {
16530  if (FIXNUM_2_P(recv, obj) &&
16531  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
16532  return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
16533  }
16534  else if (FLONUM_2_P(recv, obj) &&
16535  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
16536  return rb_flo_div_flo(recv, obj);
16537  }
16538  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16539  return ((VALUE)RUBY_Qundef);
16540  }
16541  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16542  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16543  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
16544  return rb_flo_div_flo(recv, obj);
16545  }
16546  else {
16547  return ((VALUE)RUBY_Qundef);
16548  }
16549 }
16550 static VALUE
16551 vm_opt_mod(VALUE recv, VALUE obj)
16552 {
16553  if (FIXNUM_2_P(recv, obj) &&
16554  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
16555  return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
16556  }
16557  else if (FLONUM_2_P(recv, obj) &&
16558  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
16559  return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
16560  }
16561  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16562  return ((VALUE)RUBY_Qundef);
16563  }
16564  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16565  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16566  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
16567  return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
16568  }
16569  else {
16570  return ((VALUE)RUBY_Qundef);
16571  }
16572 }
16573 static VALUE
16574 vm_opt_neq(CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj)
16575 {
16576  if (vm_method_cfunc_is(cd, recv, rb_obj_not_equal)) {
16577  VALUE val = opt_eq_func(recv, obj, cd_eq);
16578  if (val != ((VALUE)RUBY_Qundef)) {
16579  return !(((VALUE)(val) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
16580  }
16581  }
16582  return ((VALUE)RUBY_Qundef);
16583 }
16584 static VALUE
16585 vm_opt_lt(VALUE recv, VALUE obj)
16586 {
16587  if (FIXNUM_2_P(recv, obj) &&
16588  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
16589  return (long)recv < (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16590  }
16591  else if (FLONUM_2_P(recv, obj) &&
16592  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
16593  return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16594  }
16595  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16596  return ((VALUE)RUBY_Qundef);
16597  }
16598  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16599  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16600  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
16601  ;
16602  return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16603  }
16604  else {
16605  return ((VALUE)RUBY_Qundef);
16606  }
16607 }
16608 static VALUE
16609 vm_opt_le(VALUE recv, VALUE obj)
16610 {
16611  if (FIXNUM_2_P(recv, obj) &&
16612  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
16613  return (long)recv <= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16614  }
16615  else if (FLONUM_2_P(recv, obj) &&
16616  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
16617  return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16618  }
16619  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16620  return ((VALUE)RUBY_Qundef);
16621  }
16622  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16623  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16624  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
16625  ;
16626  return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16627  }
16628  else {
16629  return ((VALUE)RUBY_Qundef);
16630  }
16631 }
16632 static VALUE
16633 vm_opt_gt(VALUE recv, VALUE obj)
16634 {
16635  if (FIXNUM_2_P(recv, obj) &&
16636  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
16637  return (long)recv > (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16638  }
16639  else if (FLONUM_2_P(recv, obj) &&
16640  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
16641  return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16642  }
16643  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16644  return ((VALUE)RUBY_Qundef);
16645  }
16646  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16647  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16648  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
16649  ;
16650  return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16651  }
16652  else {
16653  return ((VALUE)RUBY_Qundef);
16654  }
16655 }
16656 static VALUE
16657 vm_opt_ge(VALUE recv, VALUE obj)
16658 {
16659  if (FIXNUM_2_P(recv, obj) &&
16660  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
16661  return (long)recv >= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16662  }
16663  else if (FLONUM_2_P(recv, obj) &&
16664  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
16665  return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16666  }
16667  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) || (((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16668  return ((VALUE)RUBY_Qundef);
16669  }
16670  else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16671  (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16672  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
16673  ;
16674  return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16675  }
16676  else {
16677  return ((VALUE)RUBY_Qundef);
16678  }
16679 }
16680 static VALUE
16681 vm_opt_ltlt(VALUE recv, VALUE obj)
16682 {
16683  if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16684  return ((VALUE)RUBY_Qundef);
16685  }
16686  else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16687  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
16688  return rb_str_concat(recv, obj);
16689  }
16690  else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16691  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
16692  return rb_ary_push(recv, obj);
16693  }
16694  else {
16695  return ((VALUE)RUBY_Qundef);
16696  }
16697 }
16698 static VALUE
16699 vm_opt_and(VALUE recv, VALUE obj)
16700 {
16701  if (FIXNUM_2_P(recv, obj) &&
16702  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
16703  return (recv & obj) | 1;
16704  }
16705  else {
16706  return ((VALUE)RUBY_Qundef);
16707  }
16708 }
16709 static VALUE
16710 vm_opt_or(VALUE recv, VALUE obj)
16711 {
16712  if (FIXNUM_2_P(recv, obj) &&
16713  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
16714  return recv | obj;
16715  }
16716  else {
16717  return ((VALUE)RUBY_Qundef);
16718  }
16719 }
16720 static VALUE
16721 vm_opt_aref(VALUE recv, VALUE obj)
16722 {
16723  if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16724  if (FIXNUM_2_P(recv, obj) &&
16725  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
16726  return rb_fix_aref(recv, obj);
16727  }
16728  return ((VALUE)RUBY_Qundef);
16729  }
16730  else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16731  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
16732  if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
16733  return rb_ary_entry_internal(recv, ((long)(((long)(obj))>>(int)(1))));
16734  }
16735  else {
16736  return rb_ary_aref1(recv, obj);
16737  }
16738  }
16739  else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16740  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
16741  return rb_hash_aref(recv, obj);
16742  }
16743  else {
16744  return ((VALUE)RUBY_Qundef);
16745  }
16746 }
16747 static VALUE
16748 vm_opt_aset(VALUE recv, VALUE obj, VALUE set)
16749 {
16750  if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16751  return ((VALUE)RUBY_Qundef);
16752  }
16753  else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16754  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
16755  (((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
16756  rb_ary_store(recv, ((long)(((long)(obj))>>(int)(1))), set);
16757  return set;
16758  }
16759  else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16760  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
16761  rb_hash_aset(recv, obj, set);
16762  return set;
16763  }
16764  else {
16765  return ((VALUE)RUBY_Qundef);
16766  }
16767 }
16768 static VALUE
16769 vm_opt_aref_with(VALUE recv, VALUE key)
16770 {
16771  if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
16772  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
16774  return rb_hash_aref(recv, key);
16775  }
16776  else {
16777  return ((VALUE)RUBY_Qundef);
16778  }
16779 }
16780 static VALUE
16781 vm_opt_aset_with(VALUE recv, VALUE key, VALUE val)
16782 {
16783  if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
16784  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
16786  return rb_hash_aset(recv, key, val);
16787  }
16788  else {
16789  return ((VALUE)RUBY_Qundef);
16790  }
16791 }
16792 static VALUE
16793 vm_opt_length(VALUE recv, int bop)
16794 {
16795  if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16796  return ((VALUE)RUBY_Qundef);
16797  }
16798  else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16799  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16800  if (bop == BOP_EMPTY_P) {
16801  return rb_long2num_inline((!(((struct RBasic*)(recv))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(recv))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(recv))->as.heap.len));
16802  }
16803  else {
16804  return rb_str_length(recv);
16805  }
16806  }
16807  else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16808  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
16809  return rb_long2num_inline(rb_array_len(recv));
16810  }
16811  else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16812  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
16813  return (((VALUE)(((!(((struct RBasic*)((recv)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(recv))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(recv))->as.st)->num_entries))))<<1 | RUBY_FIXNUM_FLAG);
16814  }
16815  else {
16816  return ((VALUE)RUBY_Qundef);
16817  }
16818 }
16819 static VALUE
16820 vm_opt_empty_p(VALUE recv)
16821 {
16822  switch (vm_opt_length(recv, BOP_EMPTY_P)) {
16823  case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
16824  case (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG): return ((VALUE)RUBY_Qtrue);
16825  default: return ((VALUE)RUBY_Qfalse);
16826  }
16827 }
16829 static VALUE
16830 vm_opt_nil_p(CALL_DATA cd, VALUE recv)
16831 {
16832  if (recv == ((VALUE)RUBY_Qnil) &&
16833  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
16834  return ((VALUE)RUBY_Qtrue);
16835  }
16836  else if (vm_method_cfunc_is(cd, recv, rb_false)) {
16837  return ((VALUE)RUBY_Qfalse);
16838  }
16839  else {
16840  return ((VALUE)RUBY_Qundef);
16841  }
16842 }
16843 static VALUE
16844 fix_succ(VALUE x)
16845 {
16846  switch (x) {
16847  case ~0UL:
16848  return (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
16849  case ((~0UL)>>(int)(1)):
16850  return rb_uint2big(1UL << (4 * 8 - 2));
16851  default:
16852  return x + 2;
16853  }
16854 }
16855 static VALUE
16856 vm_opt_succ(VALUE recv)
16857 {
16858  if ((((int)(long)(recv))&RUBY_FIXNUM_FLAG) &&
16859  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
16860  return fix_succ(recv);
16861  }
16862  else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16863  return ((VALUE)RUBY_Qundef);
16864  }
16865  else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16866  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
16867  return rb_str_succ(recv);
16868  }
16869  else {
16870  return ((VALUE)RUBY_Qundef);
16871  }
16872 }
16873 static VALUE
16874 vm_opt_not(CALL_DATA cd, VALUE recv)
16875 {
16876  if (vm_method_cfunc_is(cd, recv, rb_obj_not)) {
16877  return !(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
16878  }
16879  else {
16880  return ((VALUE)RUBY_Qundef);
16881  }
16882 }
16883 static VALUE
16884 vm_opt_regexpmatch2(VALUE recv, VALUE obj)
16885 {
16886  if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16887  return ((VALUE)RUBY_Qundef);
16888  }
16889  else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16890  rb_class_of((VALUE)(obj)) == rb_cRegexp &&
16891  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
16892  return rb_reg_match(obj, recv);
16893  }
16894  else if ((((struct RBasic*)(recv))->klass) == rb_cRegexp &&
16895  ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
16896  return rb_reg_match(recv, obj);
16897  }
16898  else {
16899  return ((VALUE)RUBY_Qundef);
16900  }
16901 }
16903 __attribute__ ((__noinline__)) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc);
16904 static inline void
16905 vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
16906  rb_event_flag_t pc_events, rb_event_flag_t target_event,
16907  rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val)
16908 {
16909  rb_event_flag_t event = pc_events & target_event;
16910  VALUE self = (((((reg_cfp)))->self));
16911  ((void)0);
16912  if (event & global_hooks->events) {
16913  reg_cfp->pc++;
16914  vm_dtrace(event, ec);
16915  rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
16916  reg_cfp->pc--;
16917  }
16918  if (local_hooks != ((void *)0)) {
16919  if (event & local_hooks->events) {
16920  reg_cfp->pc++;
16921  rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
16922  reg_cfp->pc--;
16923  }
16924  }
16925 }
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)
16927 static void
16929 {
16930  rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0100| 0x0200| 0x010000| 0x020000);
16931  if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
16932  return;
16933  }
16934  else {
16935  const rb_iseq_t *iseq = reg_cfp->iseq;
16936  size_t pos = pc - iseq->body->iseq_encoded;
16937  rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
16938  rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
16939  rb_event_flag_t local_hook_events = local_hooks != ((void *)0) ? local_hooks->events : 0;
16940  enabled_flags |= local_hook_events;
16941  ((void)0);
16942  if ((pc_events & enabled_flags) == 0) {
16943  return;
16944  }
16945  else if (ec->trace_arg != ((void *)0)) {
16946  return;
16947  }
16948  else {
16949  rb_hook_list_t *global_hooks = rb_vm_global_hooks(ec);
16950  if (0) {
16951  fprintf(((__getreent())->_stderr), "vm_trace>>%4d (%4x) - %s:%d %s\n",
16952  (int)pos,
16953  (int)pc_events,
16954  (!(((struct RBasic*)(rb_iseq_path(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_path(iseq)))->as.ary : ((struct RString*)(rb_iseq_path(iseq)))->as.heap.ptr),
16955  (int)rb_iseq_line_no(iseq, pos),
16956  (!(((struct RBasic*)(rb_iseq_label(iseq)))->flags & RSTRING_NOEMBED) ? ((struct RString*)(rb_iseq_label(iseq)))->as.ary : ((struct RString*)(rb_iseq_label(iseq)))->as.heap.ptr));
16957  }
16958  ((void)0);
16959  ((void)0);
16960  ((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);
16966  }
16967  }
16968 }
16969 void Init_vm_stack_canary(void) { }
16970 static VALUE
16971 builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16972 {
16973  typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
16974  return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
16975 }
16976 static VALUE
16977 builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16978 {
16979  typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
16980  return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
16981 }
16982 static VALUE
16983 builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16984 {
16985  typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
16986  return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
16987 }
16988 static VALUE
16989 builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16990 {
16991  typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
16992  return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
16993 }
16994 static VALUE
16995 builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16996 {
16997  typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
16998  return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
16999 }
17000 static VALUE
17001 builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17002 {
17003  typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
17004  return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
17005 }
17006 static VALUE
17007 builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17008 {
17009  typedef VALUE (*rb_invoke_funcptr6_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6);
17010  return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
17011 }
17012 static VALUE
17013 builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17014 {
17015  typedef VALUE (*rb_invoke_funcptr7_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7);
17016  return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
17017 }
17018 static VALUE
17019 builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17020 {
17021  typedef VALUE (*rb_invoke_funcptr8_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5, VALUE v6, VALUE v7, VALUE v8);
17022  return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
17023 }
17024 static VALUE
17025 builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17026 {
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]);
17029 }
17030 static VALUE
17031 builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17032 {
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]);
17035 }
17036 static VALUE
17037 builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17038 {
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]);
17041 }
17042 static VALUE
17043 builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17044 {
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]);
17047 }
17048 static VALUE
17049 builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17050 {
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]);
17053 }
17054 static VALUE
17055 builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17056 {
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]);
17059 }
17060 static VALUE
17061 builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17062 {
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]);
17065 }
17067 static builtin_invoker
17068 lookup_builtin_invoker(int argc)
17069 {
17070  static const builtin_invoker invokers[] = {
17071  builtin_invoker0,
17072  builtin_invoker1,
17073  builtin_invoker2,
17074  builtin_invoker3,
17075  builtin_invoker4,
17076  builtin_invoker5,
17077  builtin_invoker6,
17078  builtin_invoker7,
17079  builtin_invoker8,
17080  builtin_invoker9,
17081  builtin_invoker10,
17082  builtin_invoker11,
17083  builtin_invoker12,
17084  builtin_invoker13,
17085  builtin_invoker14,
17086  builtin_invoker15,
17087  };
17088  return invokers[argc];
17089 }
17090 static inline VALUE
17091 invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
17092 {
17093  VALUE self = cfp->self;
17094  return (*lookup_builtin_invoker(bf->argc))(ec, self, argv, (rb_insn_func_t)bf->func_ptr);
17095 }
17096 static VALUE
17097 vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
17098 {
17099  return invoke_bf(ec, cfp, bf, argv);
17100 }
17101 static VALUE
17102 vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
17103 {
17104  if (0) {
17105  fprintf(((__getreent())->_stderr), "vm_invoke_builtin_delegate: passing -> ");
17106  for (int i=0; i<bf->argc; i++) {
17107  fprintf(((__getreent())->_stderr), ":%s ", rb_id2name(cfp->iseq->body->local_table[i+start_index]));
17108  }
17109  fprintf(((__getreent())->_stderr), "\n");
17110  fprintf(((__getreent())->_stderr), "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
17111  }
17112  if (bf->argc == 0) {
17113  return invoke_bf(ec, cfp, bf, ((void *)0));
17114  }
17115  else {
17116  const VALUE *argv = cfp->ep - cfp->iseq->body->local_table_size - ( 3) + 1 + start_index;
17117  return invoke_bf(ec, cfp, bf, argv);
17118  }
17119 }
17120 VALUE
17122 {
17123  const rb_control_frame_t *cfp = ec->cfp;
17124  return cfp->ep[index];
17125 }
17126 struct local_var_list {
17127  VALUE tbl;
17128 };
17129 static inline VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
17130 static inline VALUE vm_yield_with_cref(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat, const rb_cref_t *cref, int is_lambda);
17131 static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
17132 static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
17133 static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
17134 VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p);
17135 static void vm_set_eval_stack(rb_execution_context_t * th, const rb_iseq_t *iseq, const rb_cref_t *cref, const struct rb_block *base_block);
17136 static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
17137 static VALUE rb_eUncaughtThrow;
17138 static ID id_result, id_tag, id_value;
17139 #define id_mesg idMesg
17140 typedef enum call_type {
17148 static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
17149 static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv);
17150 static inline void
17151 stack_check(rb_execution_context_t *ec)
17152 {
17153  if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
17154  rb_ec_stack_check(ec)) {
17155  ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
17156  rb_ec_stack_overflow(ec, 0);
17157  }
17158 }
17159 static void
17160 raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
17161  enum method_missing_reason last_call_status)
17162 {
17164  VALUE format = 0;
17165  if ((__builtin_expect(!!(argc == 0), 0))) {
17166  rb_raise(rb_eArgError, "no method name given");
17167  }
17168  else if ((__builtin_expect(!!(!((((VALUE)(argv[0])&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(argv[0]) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(argv[0]) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(argv[0]))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL)))), 0))) {
17169  const VALUE e = rb_eArgError;
17170  rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
17171  rb_obj_class(argv[0]));
17172  }
17173  stack_check(ec);
17174  if (last_call_status & MISSING_PRIVATE) {
17175  format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
17176  }
17177  else if (last_call_status & MISSING_PROTECTED) {
17178  format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
17179  }
17180  else if (last_call_status & MISSING_VCALL) {
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));
17182  exc = rb_eNameError;
17183  }
17184  else if (last_call_status & MISSING_SUPER) {
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));
17186  }
17187  {
17189  last_call_status & (MISSING_FCALL|MISSING_VCALL));
17190  if (!(last_call_status & MISSING_MISSING)) {
17192  }
17193  rb_exc_raise(exc);
17194  }
17195 }
17196 static void
17197 vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
17198  VALUE obj, int call_status)
17199 {
17200  vm_passed_block_handler_set(ec, 0);
17201  raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
17202 }
17203 static inline VALUE
17204 method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
17205 {
17206  VALUE *nargv, result, work, klass;
17207  rb_execution_context_t *ec = rb_current_execution_context();
17208  VALUE block_handler = vm_passed_block_handler(ec);
17211  if (id == idMethodMissing) {
17212  missing:
17213  raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
17214  }
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))));
17216  nargv[0] = (rb_id2sym(id));
17217  ((__builtin_object_size((nargv + 1), 0) != (size_t)-1) ? __builtin___memcpy_chk((nargv + 1), (argv), sizeof(VALUE)*(size_t)(argc), __builtin_object_size((nargv + 1), 0)) : __memcpy_ichk((nargv + 1), (argv), sizeof(VALUE)*(size_t)(argc)));
17218  ++argc;
17219  argv = nargv;
17220  klass = rb_class_of((VALUE)(obj));
17221  if (!klass) goto missing;
17223  if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
17224  vm_passed_block_handler_set(ec, block_handler);
17225  result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
17226  if (work) rb_free_tmp_buffer(&(work));
17227  return result;
17228 }
17229 static rb_control_frame_t *
17230 vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
17231 {
17232  if (VM_FRAME_RUBYFRAME_P(cfp)) {
17233  return (rb_control_frame_t *)cfp;
17234  }
17235  cfp = ((cfp)+1);
17236  while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
17237  if (VM_FRAME_RUBYFRAME_P(cfp)) {
17238  return (rb_control_frame_t *)cfp;
17239  }
17240  if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
17241  break;
17242  }
17243  cfp = ((cfp)+1);
17244  }
17245  return 0;
17246 }
17247 static void
17249 {
17250  rb_execution_context_t *ec = rb_current_execution_context();
17251  rb_control_frame_t *cfp = ec->cfp;
17253  do { const rb_event_flag_t flag_arg_ = (0x0040); rb_hook_list_t *hooks_arg_ = (rb_vm_global_hooks(ec)); if ((__builtin_expect(!!((hooks_arg_)->events & (flag_arg_)), 0))) { rb_exec_event_hook_orig(ec, hooks_arg_, flag_arg_, cfp->self, me->def->original_id, me->called_id, me->owner, ((VALUE)RUBY_Qnil), 0); } } while (0);
17254  do { if ((__builtin_expect(!!(0), 0))) { struct ruby_dtrace_method_hook_args args; if (rb_dtrace_setup(ec, me->owner, me->def->original_id, &args)) { do {} while (0); } } } while (0);
17255  vm_pop_frame(ec, cfp, cfp->ep);
17256 }
17257 static VALUE
17258 vm_call_iseq_setup_normal_0start_0params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17259 {
17260  ((void)0);
17261  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 0);
17262 }
17263 static VALUE
17264 vm_call_iseq_setup_normal_0start_0params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17265 {
17266  ((void)0);
17267  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 1);
17268 }
17269 static VALUE
17270 vm_call_iseq_setup_normal_0start_0params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17271 {
17272  ((void)0);
17273  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 2);
17274 }
17275 static VALUE
17276 vm_call_iseq_setup_normal_0start_0params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17277 {
17278  ((void)0);
17279  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 3);
17280 }
17281 static VALUE
17282 vm_call_iseq_setup_normal_0start_0params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17283 {
17284  ((void)0);
17285  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 4);
17286 }
17287 static VALUE
17288 vm_call_iseq_setup_normal_0start_0params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17289 {
17290  ((void)0);
17291  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 5);
17292 }
17293 static VALUE
17294 vm_call_iseq_setup_normal_0start_1params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17295 {
17296  ((void)0);
17297  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 0);
17298 }
17299 static VALUE
17300 vm_call_iseq_setup_normal_0start_1params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17301 {
17302  ((void)0);
17303  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 1);
17304 }
17305 static VALUE
17306 vm_call_iseq_setup_normal_0start_1params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17307 {
17308  ((void)0);
17309  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 2);
17310 }
17311 static VALUE
17312 vm_call_iseq_setup_normal_0start_1params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17313 {
17314  ((void)0);
17315  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 3);
17316 }
17317 static VALUE
17318 vm_call_iseq_setup_normal_0start_1params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17319 {
17320  ((void)0);
17321  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 4);
17322 }
17323 static VALUE
17324 vm_call_iseq_setup_normal_0start_1params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17325 {
17326  ((void)0);
17327  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 5);
17328 }
17329 static VALUE
17330 vm_call_iseq_setup_normal_0start_2params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17331 {
17332  ((void)0);
17333  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 0);
17334 }
17335 static VALUE
17336 vm_call_iseq_setup_normal_0start_2params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17337 {
17338  ((void)0);
17339  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 1);
17340 }
17341 static VALUE
17342 vm_call_iseq_setup_normal_0start_2params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17343 {
17344  ((void)0);
17345  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 2);
17346 }
17347 static VALUE
17348 vm_call_iseq_setup_normal_0start_2params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17349 {
17350  ((void)0);
17351  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 3);
17352 }
17353 static VALUE
17354 vm_call_iseq_setup_normal_0start_2params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17355 {
17356  ((void)0);
17357  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 4);
17358 }
17359 static VALUE
17360 vm_call_iseq_setup_normal_0start_2params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17361 {
17362  ((void)0);
17363  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 5);
17364 }
17365 static VALUE
17366 vm_call_iseq_setup_normal_0start_3params_0locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17367 {
17368  ((void)0);
17369  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 0);
17370 }
17371 static VALUE
17372 vm_call_iseq_setup_normal_0start_3params_1locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17373 {
17374  ((void)0);
17375  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 1);
17376 }
17377 static VALUE
17378 vm_call_iseq_setup_normal_0start_3params_2locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17379 {
17380  ((void)0);
17381  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 2);
17382 }
17383 static VALUE
17384 vm_call_iseq_setup_normal_0start_3params_3locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17385 {
17386  ((void)0);
17387  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 3);
17388 }
17389 static VALUE
17390 vm_call_iseq_setup_normal_0start_3params_4locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17391 {
17392  ((void)0);
17393  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 4);
17394 }
17395 static VALUE
17396 vm_call_iseq_setup_normal_0start_3params_5locals(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
17397 {
17398  ((void)0);
17399  return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 5);
17400 }
17401 static const vm_call_handler vm_call_iseq_handlers[][6] = {
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}
17426 };
17427 static inline vm_call_handler
17428 vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
17429 {
17430  if ((__builtin_expect(!!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
17431  return &vm_call_iseq_setup_tailcall_0start;
17432  }
17433  else if (0) {
17434  return &vm_call_iseq_setup_normal_0start;
17435  }
17436  else {
17437  if (param_size <= 3 &&
17438  local_size <= 5) {
17439  ((void)0);
17440  return vm_call_iseq_handlers[param_size][local_size];
17441  }
17442  return &vm_call_iseq_setup_normal_0start;
17443  }
17444 }
rb_str_buf_cat
#define rb_str_buf_cat
Definition: rb_mjit_min_header-2.7.2.h:6131
RMODULE_IS_OVERLAID
#define RMODULE_IS_OVERLAID
rb_hash_add_new_element
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val)
Definition: hash.c:4547
_global_impure_ptr
struct _reent *const _global_impure_ptr
pthread_detach
int pthread_detach(pthread_t)
rb_eEAGAIN
VALUE rb_eEAGAIN
Definition: error.c:54
loff_t
__loff_t loff_t
Definition: rb_mjit_min_header-2.7.2.h:1431
rb_execution_context_struct::raised_flag
uint8_t raised_flag
Definition: vm_core.h:878
rb_check_safe_obj
void rb_check_safe_obj(VALUE)
Definition: safe.c:136
ruby_brace_glob
int ruby_brace_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2659
getloadavg
int getloadavg(double loadavg[], int nelem)
YARVINSN_opt_eq
@ YARVINSN_opt_eq
Definition: rb_mjit_min_header-2.7.2.h:12012
kwtable
Definition: lex.c:34
rb_hash_update_by
VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func)
Definition: hash.c:3910
native_thread_data_t
struct native_thread_data_struct native_thread_data_t
rb_type_str
const char * rb_type_str(enum ruby_value_type type)
Definition: vm_eval.c:572
getw
int getw(FILE *)
YARVINSN_trace_throw
@ YARVINSN_trace_throw
Definition: rb_mjit_min_header-2.7.2.h:12101
pow10l
float pow10l(float)
rb_st_delete
int rb_st_delete(st_table *, st_data_t *, st_data_t *)
lroundl
long lroundl(long double)
strrchr
char * strrchr(const char *, int)
Definition: strchr.c:20
strncmp
int strncmp(const char *, const char *, size_t)
sched_getcpu
int sched_getcpu(void)
DEFINED_YIELD
@ DEFINED_YIELD
Definition: rb_mjit_min_header-2.7.2.h:10856
rb_str_modify
void rb_str_modify(VALUE)
Definition: string.c:2114
rb_execution_context_struct::protect_tag
struct rb_vm_protect_tag * protect_tag
Definition: vm_core.h:850
MISSING_NONE
@ MISSING_NONE
Definition: rb_mjit_min_header-2.7.2.h:7813
ruby_safe_level_2_error
int ruby_safe_level_2_error(void) __attribute__((error("$SAFE
rb_gv_set
VALUE rb_gv_set(const char *, VALUE)
Definition: variable.c:671
_asniprintf_r
int char * _asniprintf_r(struct _reent *, char *, size_t *, const char *,...) __attribute__((__format__(__printf__
RB_DEBUG_COUNTER_mjit_cancel_opt_insn
@ RB_DEBUG_COUNTER_mjit_cancel_opt_insn
Definition: rb_mjit_min_header-2.7.2.h:11663
psiginfo
void psiginfo(const siginfo_t *, const char *)
flock
Definition: rb_mjit_min_header-2.7.2.h:1432
RAISED_STACKOVERFLOW
@ RAISED_STACKOVERFLOW
Definition: rb_mjit_min_header-2.7.2.h:11149
rb_vm_struct::running_thread
const struct rb_thread_struct * running_thread
Definition: vm_core.h:584
_reent::_getdate_err
int _getdate_err
Definition: rb_mjit_min_header-2.7.2.h:1091
rb_enumeratorize_with_size_kw
VALUE rb_enumeratorize_with_size_kw(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *, int)
Definition: enumerator.c:537
rb_check_symbol
VALUE rb_check_symbol(volatile VALUE *namep)
Definition: symbol.c:952
rb_cvar_defined
VALUE rb_cvar_defined(VALUE, ID)
Definition: variable.c:3123
rb_gvar_undef_marker
rb_gvar_marker_t rb_gvar_undef_marker
Definition: rb_mjit_min_header-2.7.2.h:5097
rb_encdb_replicate
int rb_encdb_replicate(const char *alias, const char *orig)
Definition: encoding.c:450
RB_DEBUG_COUNTER_ivar_set_ic_miss_serial
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_serial
Definition: rb_mjit_min_header-2.7.2.h:11549
rb_str_dup
VALUE rb_str_dup(VALUE)
Definition: string.c:1516
rb_xcalloc_mul_add_mul
void * rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10197
Init_class_hierarchy
void Init_class_hierarchy(void)
Definition: class.c:549
idName
@ idName
Definition: rb_mjit_min_header-2.7.2.h:8702
RB_DEBUG_COUNTER_obj_newobj_wb_unprotected
@ RB_DEBUG_COUNTER_obj_newobj_wb_unprotected
Definition: rb_mjit_min_header-2.7.2.h:11577
rb_iseq_new_with_opt
rb_iseq_t * rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t *)
Definition: iseq.c:807
RIMemo::v1
VALUE v1
Definition: internal.h:1127
sigaltstack
Definition: rb_mjit_min_header-2.7.2.h:2306
idTo_int
@ idTo_int
Definition: rb_mjit_min_header-2.7.2.h:8677
RB_DEBUG_COUNTER_obj_data_empty
@ RB_DEBUG_COUNTER_obj_data_empty
Definition: rb_mjit_min_header-2.7.2.h:11611
mkdtemp
char * mkdtemp(char *)
rb_complex_arg
VALUE rb_complex_arg(VALUE z)
Definition: complex.c:1208
abort
void abort(void) __attribute__((__noreturn__))
pthread_barrierattr_t
struct __pthread_barrierattr_t * pthread_barrierattr_t
rb_vm_struct::workqueue
struct list_head workqueue
Definition: vm_core.h:642
rb_prepend_module
void rb_prepend_module(VALUE, VALUE)
Definition: class.c:999
NODE_SCLASS
@ NODE_SCLASS
Definition: rb_mjit_min_header-2.7.2.h:8129
rb_float_div
VALUE rb_float_div(VALUE x, VALUE y)
Definition: numeric.c:1126
SIGEV_THREAD
#define SIGEV_THREAD
Definition: rb_mjit_min_header-2.7.2.h:2228
strtok
char * strtok(char *__restrict, const char *__restrict)
rb_kwarg_call_data
Definition: vm_core.h:257
rb_time_interval
struct timeval rb_time_interval(VALUE num)
Definition: time.c:2669
rb_autoload_str
void rb_autoload_str(VALUE mod, ID id, VALUE file)
Definition: variable.c:1937
strerror
char * strerror(int)
Definition: strerror.c:11
putchar
int putchar(int)
YARVINSN_trace_concatstrings
@ YARVINSN_trace_concatstrings
Definition: rb_mjit_min_header-2.7.2.h:12062
rb_time_timeval
struct timeval rb_time_timeval(VALUE time)
Definition: time.c:2675
rb_iseq_disasm
VALUE rb_iseq_disasm(const rb_iseq_t *iseq)
Definition: iseq.c:2278
min_argc
const rb_iseq_t const int const int min_argc
Definition: rb_mjit_min_header-2.7.2.h:13470
rb_realpath_internal
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict)
Definition: file.c:4409
rb_fiber_resume_kw
VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2097
_fgets_unlocked_r
char * _fgets_unlocked_r(struct _reent *, char *__restrict, int, FILE *__restrict)
__sFILE64::_cookie
void * _cookie
Definition: rb_mjit_min_header-2.7.2.h:1016
rb_absint_singlebit_p
int rb_absint_singlebit_p(VALUE val)
Definition: bignum.c:3446
rb_reg_new_ary
VALUE rb_reg_new_ary(VALUE ary, int options)
Definition: re.c:2927
rb_subclass_entry::next
rb_subclass_entry_t * next
Definition: internal.h:1000
rb_iseq_location
VALUE rb_iseq_location(const rb_iseq_t *iseq)
Definition: proc.c:1242
rb_dbl2big
VALUE rb_dbl2big(double)
Definition: bignum.c:5249
ruby_stop
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
Definition: eval.c:288
__n
__inline__ size_t size_t __n
Definition: rb_mjit_min_header-2.7.2.h:1934
_reent::_localtime_buf
struct __tm _localtime_buf
Definition: rb_mjit_min_header-2.7.2.h:1082
__mcontext::edx
__uint32_t edx
Definition: rb_mjit_min_header-2.7.2.h:2072
rb_parser_free
void rb_parser_free(struct parser_params *, void *)
Definition: ripper.c:19400
rb_reg_match_p
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos)
Definition: re.c:3340
rb_backref_set
void rb_backref_set(VALUE)
Definition: vm.c:1310
__mempcpy_chk
void * __mempcpy_chk(void *, const void *, size_t, size_t)
sighold
int sighold(int)
rb_get_kwargs
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *)
Definition: class.c:1886
CLD_KILLED
#define CLD_KILLED
Definition: rb_mjit_min_header-2.7.2.h:2215
__ssp_real_fread_unlocked
size_t __ssp_real_fread_unlocked(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp) __asm__("_" "fread_unlocked")
rb_ary_pop
VALUE rb_ary_pop(VALUE)
Definition: array.c:1241
_scanf_r
int _scanf_r(struct _reent *, const char *__restrict,...) __attribute__((__format__(__scanf__
_reent::_asctime_buf
char _asctime_buf[26]
Definition: rb_mjit_min_header-2.7.2.h:1081
_fiprintf_r
int _fiprintf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__printf__
rpmatch
int rpmatch(const char *response)
RUBY_ID_CONST
@ RUBY_ID_CONST
Definition: rb_mjit_min_header-2.7.2.h:8463
ID
unsigned long ID
Definition: ruby.h:103
RUBY_T_ARRAY
@ RUBY_T_ARRAY
Definition: rb_mjit_min_header-2.7.2.h:4325
rb_write_error_str
void rb_write_error_str(VALUE mesg)
Definition: io.c:7936
rb_str_dump
VALUE rb_str_dump(VALUE)
Definition: string.c:6042
__sFILE::_flags2
int _flags2
Definition: rb_mjit_min_header-2.7.2.h:1005
YARVINSN_invokesuper
@ YARVINSN_invokesuper
Definition: rb_mjit_min_header-2.7.2.h:11995
THREAD_RUNNABLE
@ THREAD_RUNNABLE
Definition: rb_mjit_min_header-2.7.2.h:9779
block_type_proc
@ block_type_proc
Definition: rb_mjit_min_header-2.7.2.h:9753
RUBY_TAG_REDO
@ RUBY_TAG_REDO
Definition: rb_mjit_min_header-2.7.2.h:9396
rb_num2short
short rb_num2short(VALUE)
Definition: numeric.c:3041
rb_hash_stlike_update
int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func func, st_data_t arg)
Definition: hash.c:1651
pthread_rwlockattr_getpshared
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *attr, int *pshared)
acos
double acos(double)
rb_define_class
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
Definition: class.c:649
BOP_AREF
@ BOP_AREF
Definition: rb_mjit_min_header-2.7.2.h:9612
ruby_hexdigits
const char ruby_hexdigits[]
Definition: escape.c:5
rb_big2ull
unsigned long long rb_big2ull(VALUE)
idSucc
@ idSucc
Definition: rb_mjit_min_header-2.7.2.h:8666
YARVINSN_trace_opt_empty_p
@ YARVINSN_trace_opt_empty_p
Definition: rb_mjit_min_header-2.7.2.h:12130
rb_iseq_constant_body::variable
struct rb_iseq_constant_body::@4 variable
gammaf
float gammaf(float)
rb_ary_ptr_use_start
VALUE * rb_ary_ptr_use_start(VALUE ary)
Definition: array.c:226
arc4random
__uint32_t arc4random(void)
_vprintf_r
int char char int int int int int int int int int int _vprintf_r(struct _reent *, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
register_t
__intptr_t register_t
Definition: rb_mjit_min_header-2.7.2.h:1160
rb_flo_div_flo
VALUE rb_flo_div_flo(VALUE x, VALUE y)
Definition: numeric.c:1110
lrintf
long int lrintf(float)
rb_vm_struct::loaded_features_index
struct st_table * loaded_features_index
Definition: vm_core.h:621
rb_block_type
rb_block_type
Definition: vm_core.h:744
rb_deprecated_classext_struct::conflict
char conflict[sizeof(VALUE) *3]
Definition: internal.h:992
__sFILE64::_w
int _w
Definition: rb_mjit_min_header-2.7.2.h:1010
ruby_stack_length
size_t ruby_stack_length(VALUE **)
Definition: gc.c:4634
rb_gvar_setter_t
void rb_gvar_setter_t(VALUE val, ID id, VALUE *data)
Definition: rb_mjit_min_header-2.7.2.h:5093
rb_ary_delete
VALUE rb_ary_delete(VALUE, VALUE)
Definition: array.c:3365
lgammaf
float lgammaf(float)
NODE_ATTRASGN
@ NODE_ATTRASGN
Definition: rb_mjit_min_header-2.7.2.h:8144
stat::st_size
off_t st_size
Definition: rb_mjit_min_header-2.7.2.h:2399
RB_DEBUG_COUNTER_mjit_frame_JT2VM
@ RB_DEBUG_COUNTER_mjit_frame_JT2VM
Definition: rb_mjit_min_header-2.7.2.h:11659
rb_f_raise
VALUE rb_f_raise(int argc, VALUE *argv)
Definition: eval.c:727
__off
__inline__ void size_t off_t __off
Definition: rb_mjit_min_header-2.7.2.h:3613
RB_DEBUG_COUNTER_obj_ary_shared_create
@ RB_DEBUG_COUNTER_obj_ary_shared_create
Definition: rb_mjit_min_header-2.7.2.h:11593
rb_int2inum
VALUE rb_int2inum(intptr_t)
Definition: bignum.c:3208
RB_DEBUG_COUNTER_ccf_method_missing
@ RB_DEBUG_COUNTER_ccf_method_missing
Definition: rb_mjit_min_header-2.7.2.h:11521
_fputs_r
int _fputs_r(struct _reent *, const char *__restrict, FILE *__restrict)
rb_method_bmethod_struct
Definition: method.h:151
NODE_STR
@ NODE_STR
Definition: rb_mjit_min_header-2.7.2.h:8106
rb_thread_local_aset
VALUE rb_thread_local_aset(VALUE, ID, VALUE)
Definition: thread.c:3364
rb_id2name
const char * rb_id2name(ID)
Definition: symbol.c:801
tMethod_added
@ tMethod_added
Definition: rb_mjit_min_header-2.7.2.h:8576
st_foreach_callback_func
int st_foreach_callback_func(st_data_t, st_data_t, st_data_t)
Definition: rb_mjit_min_header-2.7.2.h:5420
rb_cDir
VALUE rb_cDir
Definition: dir.c:439
rb_block_min_max_arity
int rb_block_min_max_arity(int *max)
Definition: proc.c:1178
_reent::_stdout
__FILE * _stdout
Definition: rb_mjit_min_header-2.7.2.h:1062
itimerspec::it_interval
struct timespec it_interval
Definition: rb_mjit_min_header-2.7.2.h:1252
rb_block::proc
VALUE proc
Definition: vm_core.h:755
id_core_set_postexe
@ id_core_set_postexe
Definition: rb_mjit_min_header-2.7.2.h:8561
stat::st_ctim
timestruc_t st_ctim
Definition: rb_mjit_min_header-2.7.2.h:2402
rb_reg_nth_defined
VALUE rb_reg_nth_defined(int, VALUE)
Definition: re.c:1688
_reent::_signal_buf
char _signal_buf[24]
Definition: rb_mjit_min_header-2.7.2.h:1090
rb_method_bmethod_struct::proc
VALUE proc
Definition: method.h:152
rb_is_const_id
int rb_is_const_id(ID id)
Definition: symbol.c:854
RUBY_NUM_ROUND_HALF_DOWN
@ RUBY_NUM_ROUND_HALF_DOWN
Definition: rb_mjit_min_header-2.7.2.h:7432
_strtoul_r
unsigned long _strtoul_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
RNode::value
VALUE value
Definition: node.h:154
__assert
void __assert(const char *, int, const char *) __attribute__((__noreturn__))
idSend
@ idSend
Definition: rb_mjit_min_header-2.7.2.h:8670
ST_STOP
@ ST_STOP
Definition: rb_mjit_min_header-2.7.2.h:5386
NODE_MODULE
@ NODE_MODULE
Definition: rb_mjit_min_header-2.7.2.h:8128
fmal
long double fmal(long double, long double, long double)
VM_METHOD_TYPE_UNDEF
@ VM_METHOD_TYPE_UNDEF
Definition: rb_mjit_min_header-2.7.2.h:8799
rb_big_fdiv_double
double rb_big_fdiv_double(VALUE x, VALUE y)
Definition: bignum.c:6209
max_align_t::__attribute__
__float128 __max_align_f128 __attribute__((__aligned__(__alignof(__float128))))
rb_match_busy
void rb_match_busy(VALUE)
Definition: re.c:1287
sigignore
int sigignore(int)
__pthread_condattr_t
Definition: rb_mjit_min_header-2.7.2.h:1382
rb_hook_list_struct
Definition: vm_core.h:565
cmp_opt_Fixnum
@ cmp_opt_Fixnum
Definition: rb_mjit_min_header-2.7.2.h:7159
rb_vm_exec
VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p)
rb_objspace_garbage_object_p
int rb_objspace_garbage_object_p(VALUE obj)
Definition: gc.c:3607
rb_exec_recursive
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5075
tNUMPARAM_8
@ tNUMPARAM_8
Definition: rb_mjit_min_header-2.7.2.h:8631
nexttowardl
long double nexttowardl(long double, long double)
__int16_t
short int __int16_t
Definition: rb_mjit_min_header-2.7.2.h:620
rb_float_pow
VALUE rb_float_pow(VALUE x, VALUE y)
Definition: numeric.c:1298
strverscmp
int strverscmp(const char *, const char *)
rb_generic_ivar_memsize
size_t rb_generic_ivar_memsize(VALUE)
Definition: variable.c:1010
sigpause
int sigpause(int) __asm__("_" "__xpg_sigpause")
ILL_COPROC
#define ILL_COPROC
Definition: rb_mjit_min_header-2.7.2.h:2199
tTo_i
@ tTo_i
Definition: rb_mjit_min_header-2.7.2.h:8605
stat
Definition: rb_mjit_min_header-2.7.2.h:2391
_sigcommune::_si_flags
uint32_t _si_flags
Definition: rb_mjit_min_header-2.7.2.h:2110
Init_File
void Init_File(void)
Definition: file.c:6435
rb_vmdebug_debug_print_post
void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm_dump.c:414
rb_io_getbyte
VALUE rb_io_getbyte(VALUE)
Definition: io.c:4215
__sFILE64::_mbstate
_mbstate_t _mbstate
Definition: rb_mjit_min_header-2.7.2.h:1035
rb_check_convert_type_with_id
VALUE rb_check_convert_type_with_id(VALUE, int, const char *, ID)
Definition: object.c:2957
rb_autoloading_value
int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag)
Definition: variable.c:2078
error
const rb_iseq_t const char * error
Definition: rb_mjit_min_header-2.7.2.h:13471
rb_reset_coverages
void rb_reset_coverages(void)
Definition: thread.c:5504
rb_hash_end
#define rb_hash_end(h)
Definition: rb_mjit_min_header-2.7.2.h:6090
ruby_check_sizeof_long
char ruby_check_sizeof_long[4==sizeof(long) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.2.h:3999
gamma_r
double gamma_r(double, int *)
sched_getscheduler
int sched_getscheduler(pid_t __pid)
ruby_vm_throw_flags
ruby_vm_throw_flags
Definition: vm_core.h:208
rb_int_modulo
VALUE rb_int_modulo(VALUE x, VALUE y)
Definition: numeric.c:3886
__mcontext::es
__uint32_t es
Definition: rb_mjit_min_header-2.7.2.h:2067
rb_define_method
void rb_define_method(VALUE, const char *, VALUE(*)(), int)
_sscanf_r
int int int int int int int _sscanf_r(struct _reent *, const char *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
_vsnprintf_r
int char char int int int int int int int int int int int int int int int _vsnprintf_r(struct _reent *, char *__restrict, size_t, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
rb_obj_instance_exec
VALUE rb_obj_instance_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2029
rb_at_exit_list::func
rb_vm_at_exit_func * func
Definition: vm_core.h:556
RUBY_T_OBJECT
@ RUBY_T_OBJECT
Definition: rb_mjit_min_header-2.7.2.h:4319
rb_method_call_kw
VALUE rb_method_call_kw(int, const VALUE *, VALUE, int)
Definition: proc.c:2266
rb_default_rs
VALUE rb_default_rs
Definition: intern.h:586
rb_vm_jump_tag_but_local_jump
void rb_vm_jump_tag_but_local_jump(int state)
Definition: vm.c:1510
rb_int_ge
VALUE rb_int_ge(VALUE x, VALUE y)
Definition: numeric.c:4292
rb_hash_key_str
VALUE rb_hash_key_str(VALUE)
Definition: hash.c:2802
rb_gvar_setter_function_of
rb_gvar_setter_t * rb_gvar_setter_function_of(const struct rb_global_entry *)
Definition: variable.c:708
bp
#define bp()
Definition: rb_mjit_min_header-2.7.2.h:7217
RUBY_T_IMEMO
@ RUBY_T_IMEMO
Definition: rb_mjit_min_header-2.7.2.h:4340
rb_io_print
VALUE rb_io_print(int, const VALUE *, VALUE)
Definition: io.c:7576
infinity
double infinity(void)
RUBY_TAG_NEXT
@ RUBY_TAG_NEXT
Definition: rb_mjit_min_header-2.7.2.h:9394
rb_callable_method_entry_with_refinements
const rb_callable_method_entry_t * rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:917
ruby_float_step_size
double ruby_float_step_size(double beg, double end, double unit, int excl)
Definition: numeric.c:2495
rb_str_set_len
void rb_str_set_len(VALUE, long)
Definition: string.c:2692
rb_check_id
ID rb_check_id(volatile VALUE *)
Returns ID for the given name if it is interned already, or 0.
Definition: symbol.c:919
u_int64_t
__uint64_t u_int64_t
Definition: rb_mjit_min_header-2.7.2.h:1159
__cleanup_routine_type
void(* __cleanup_routine_type)(void *)
Definition: rb_mjit_min_header-2.7.2.h:9210
__vsprintf_chk
int int __vsprintf_chk(char *__restrict, int, size_t, const char *__restrict, __va_list) __attribute__((__format__(__printf__
_atexit::_ind
int _ind
Definition: rb_mjit_min_header-2.7.2.h:967
RUBY_TAG_RETURN
@ RUBY_TAG_RETURN
Definition: rb_mjit_min_header-2.7.2.h:9392
rb_mv_generic_ivar
void rb_mv_generic_ivar(VALUE src, VALUE dst)
Definition: variable.c:983
RB_DEBUG_COUNTER_obj_imemo_parser_strterm
@ RB_DEBUG_COUNTER_obj_imemo_parser_strterm
Definition: rb_mjit_min_header-2.7.2.h:11640
getdelim
ssize_t getdelim(char **, size_t *, int, FILE *)
stime
int stime(const time_t *)
rb_vm_struct::objspace
struct rb_objspace * objspace
Definition: vm_core.h:651
RB_DEBUG_COUNTER_ccf_general
@ RB_DEBUG_COUNTER_ccf_general
Definition: rb_mjit_min_header-2.7.2.h:11510
rb_cHash
VALUE rb_cHash
Definition: hash.c:92
iseq_compile_data::storage_current
struct iseq_compile_data_storage * storage_current
Definition: iseq.h:105
__sFILE::_w
int _w
Definition: rb_mjit_min_header-2.7.2.h:981
rb_threadptr_pending_interrupt_clear
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th)
Definition: thread.c:1751
rb_class_name
VALUE rb_class_name(VALUE)
Definition: variable.c:274
rb_hash_freeze
VALUE rb_hash_freeze(VALUE)
Definition: hash.c:87
rb_obj_instance_eval
VALUE rb_obj_instance_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:1997
rb_include_module
void rb_include_module(VALUE, VALUE)
Definition: class.c:869
ILL_PRVOPC
#define ILL_PRVOPC
Definition: rb_mjit_min_header-2.7.2.h:2197
ruby_rmodule_flags
ruby_rmodule_flags
Definition: ruby.h:954
faccessat
int faccessat(int __dirfd, const char *__path, int __mode, int __flags)
RVALUE_EMBED_LEN_MAX
#define RVALUE_EMBED_LEN_MAX
siginterrupt
int siginterrupt(int, int)
__mcontext::fpstate
struct _fpstate fpstate
Definition: rb_mjit_min_header-2.7.2.h:2064
rb_exc_new
VALUE rb_exc_new(VALUE, const char *, long)
Definition: error.c:961
idOROP
@ idOROP
Definition: rb_mjit_min_header-2.7.2.h:8545
rb_execarg::fd_dup2_child
VALUE fd_dup2_child
Definition: internal.h:2065
ruby_set_inplace_mode
void ruby_set_inplace_mode(const char *)
Definition: io.c:12861
RB_IO_WAIT_READABLE
#define RB_IO_WAIT_READABLE
Definition: rb_mjit_min_header-2.7.2.h:5180
rb_define_finalizer
VALUE rb_define_finalizer(VALUE, VALUE)
Definition: gc.c:3289
RSTRING_NOEMBED
#define RSTRING_NOEMBED
lchown
int lchown(const char *__path, uid_t __owner, gid_t __group)
sched_setscheduler
int sched_setscheduler(pid_t __pid, int __policy, const struct sched_param *__param)
uint_least8_t
__uint_least8_t uint_least8_t
Definition: rb_mjit_min_header-2.7.2.h:2921
timezone
Definition: missing.h:67
tTo_r
@ tTo_r
Definition: rb_mjit_min_header-2.7.2.h:8607
imemo
union @0::@2 imemo
__size
__inline__ size_t __size
Definition: rb_mjit_min_header-2.7.2.h:1934
sys_errlist
char * sys_errlist[]
RUBY_T_FILE
@ RUBY_T_FILE
Definition: rb_mjit_min_header-2.7.2.h:4329
reallocf
void void * reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
getsid
pid_t getsid(pid_t)
YARVINSN_trace_opt_str_uminus
@ YARVINSN_trace_opt_str_uminus
Definition: rb_mjit_min_header-2.7.2.h:12095
__cygwin_lock_lock
void __cygwin_lock_lock(_LOCK_T *)
remquof
float remquof(float, float, int *)
list_head::n
struct list_node n
Definition: rb_mjit_min_header-2.7.2.h:8941
rb_thread_check_ints
void rb_thread_check_ints(void)
Definition: thread.c:1362
rb_hook_list_connect_tracepoint
void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line)
Definition: vm_trace.c:1252
rb_execution_context_struct::private_const_reference
VALUE private_const_reference
Definition: vm_core.h:883
VM_METHOD_TYPE_BMETHOD
@ VM_METHOD_TYPE_BMETHOD
Definition: rb_mjit_min_header-2.7.2.h:8796
rb_execarg::chdir_dir
VALUE chdir_dir
Definition: internal.h:2068
RUBY_T_SYMBOL
@ RUBY_T_SYMBOL
Definition: rb_mjit_min_header-2.7.2.h:4337
rb_eScriptError
VALUE rb_eScriptError
Definition: error.c:939
suboptarg
char * suboptarg
RString::ptr
char * ptr
Definition: ruby.h:993
n_opt
const VALUE int int n_opt
Definition: rb_mjit_min_header-2.7.2.h:6458
RTypedData::type
const rb_data_type_t * type
Definition: ruby.h:1170
rb_f_eval
VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self)
Definition: vm_eval.c:1670
rb_thread_interrupted
int rb_thread_interrupted(VALUE thval)
Definition: thread.c:1379
remainderl
long double remainderl(long double, long double)
pthread_atfork
int pthread_atfork(void(*)(void), void(*)(void), void(*)(void))
rb_obj_hide
VALUE rb_obj_hide(VALUE obj)
Make the object invisible from Ruby code.
Definition: object.c:78
iseq_compile_data::loopval_popped
int loopval_popped
Definition: iseq.h:111
ruby_method_ids
ruby_method_ids
Definition: id.h:78
imemo_env
@ imemo_env
Definition: rb_mjit_min_header-2.7.2.h:7029
rb_mEnumerable
VALUE rb_mEnumerable
Definition: enum.c:20
_reent::_gamma_signgam
int _gamma_signgam
Definition: rb_mjit_min_header-2.7.2.h:1083
rb_str_convert_to_inum
VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
Definition: bignum.c:4246
chmod
int chmod(const char *__path, mode_t __mode)
popen
FILE * popen(const char *, const char *)
getusershell
char * getusershell(void)
ruby_options
void * ruby_options(int argc, char **argv)
Processes command line arguments and compiles the Ruby source to execute.
Definition: eval.c:115
imemo_tmpbuf
@ imemo_tmpbuf
Definition: rb_mjit_min_header-2.7.2.h:7037
RB_DEBUG_COUNTER_ccf_opt_send
@ RB_DEBUG_COUNTER_ccf_opt_send
Definition: rb_mjit_min_header-2.7.2.h:11524
RUBY_FL_WB_PROTECTED
@ RUBY_FL_WB_PROTECTED
Definition: ruby.h:842
rb_thread_struct::top_self
VALUE top_self
Definition: vm_core.h:923
imemo_throw_data
@ imemo_throw_data
Definition: rb_mjit_min_header-2.7.2.h:7032
rb_float_denominator
VALUE rb_float_denominator(VALUE x)
Definition: rational.c:2104
rb_cData
VALUE rb_cData
Data class.
Definition: ruby.h:2018
RB_DEBUG_COUNTER_frame_R2R
@ RB_DEBUG_COUNTER_frame_R2R
Definition: rb_mjit_min_header-2.7.2.h:11538
rb_class_inherited
VALUE rb_class_inherited(VALUE, VALUE)
Calls Class::inherited.
Definition: class.c:623
NODE_EVSTR
@ NODE_EVSTR
Definition: rb_mjit_min_header-2.7.2.h:8110
rb_method_definition_set
void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts)
Definition: vm_method.c:232
valloc
void * valloc(size_t)
rename
int rename(const char *, const char *)
rb_obj_not_equal
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2)
Definition: object.c:187
double_t
long double double_t
Definition: rb_mjit_min_header-2.7.2.h:3662
__pthread_barrier_t
Definition: rb_mjit_min_header-2.7.2.h:1385
rb_block_param_proxy
VALUE rb_block_param_proxy
Definition: vm.c:368
sinl
long double sinl(long double)
rb_f_trace_var
VALUE rb_f_trace_var(int, const VALUE *)
Definition: variable.c:528
YARVINSN_trace_getconstant
@ YARVINSN_trace_getconstant
Definition: rb_mjit_min_header-2.7.2.h:12053
RB_DEBUG_COUNTER_mc_miss_by_distinct
@ RB_DEBUG_COUNTER_mc_miss_by_distinct
Definition: rb_mjit_min_header-2.7.2.h:11505
iseq_catch_table_entry::iseq
rb_iseq_t * iseq
Definition: iseq.h:247
rb_check_type
void rb_check_type(VALUE, int)
Definition: error.c:839
rb_ast_struct::body
rb_ast_body_t body
Definition: node.h:402
vm_ifunc_argc::max
signed int max
Definition: rb_mjit_min_header-2.7.2.h:7084
vm_call_flag_bits
vm_call_flag_bits
Definition: vm_core.h:1085
range
#define range(low, item, hi)
Definition: date_strftime.c:21
strsignal
char * strsignal(int __signo)
YARVINSN_trace_newarray
@ YARVINSN_trace_newarray
Definition: rb_mjit_min_header-2.7.2.h:12067
rb_builtin_function
Definition: builtin.h:6
rb_thread_sleep
void rb_thread_sleep(int)
Definition: thread.c:1385
rb_execution_context_t
struct rb_execution_context_struct rb_execution_context_t
asiprintf
int int int int int int int int asiprintf(char **, const char *,...) __attribute__((__format__(__printf__
_mkostemps_r
int _mkostemps_r(struct _reent *, char *, int, int)
rb_match_nth_defined
int rb_match_nth_defined(int nth, VALUE match)
Definition: re.c:1309
rb_exc_new_str
VALUE rb_exc_new_str(VALUE, VALUE)
Definition: error.c:974
CALL_FCALL
@ CALL_FCALL
Definition: rb_mjit_min_header-2.7.2.h:17142
rb_class_modify_check
void rb_class_modify_check(VALUE)
Asserts that klass is not a frozen class.
Definition: eval.c:438
initstate
char * initstate(unsigned, char *, size_t)
strtof
float strtof(const char *__restrict __n, char **__restrict __end_PTR)
uint_least16_t
__uint_least16_t uint_least16_t
Definition: rb_mjit_min_header-2.7.2.h:2924
YARVINSN_trace_opt_minus
@ YARVINSN_trace_opt_minus
Definition: rb_mjit_min_header-2.7.2.h:12111
st_table::entry_power
unsigned char entry_power
Definition: st.h:81
rb_block_call
VALUE rb_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1470
rb_execarg::env_modification
VALUE env_modification
Definition: internal.h:2066
st_table::num_entries
st_index_t num_entries
Definition: st.h:86
NODE_ITER
@ NODE_ITER
Definition: rb_mjit_min_header-2.7.2.h:8055
RB_DEBUG_COUNTER_gc_minor_capi
@ RB_DEBUG_COUNTER_gc_minor_capi
Definition: rb_mjit_min_header-2.7.2.h:11564
RB_DEBUG_COUNTER_obj_newobj_slowpath
@ RB_DEBUG_COUNTER_obj_newobj_slowpath
Definition: rb_mjit_min_header-2.7.2.h:11576
rb_vm_struct::thread_report_on_exception
unsigned int thread_report_on_exception
Definition: vm_core.h:604
_tempnam_r
int int int int int int int char * _tempnam_r(struct _reent *, const char *, const char *)
RB_DEBUG_COUNTER_obj_imemo_throw_data
@ RB_DEBUG_COUNTER_obj_imemo_throw_data
Definition: rb_mjit_min_header-2.7.2.h:11637
pthread_condattr_getpshared
int pthread_condattr_getpshared(const pthread_condattr_t *, int *)
rb_must_asciicompat
void rb_must_asciicompat(VALUE)
Definition: string.c:2166
_vdprintf_r
int char char int int int _vdprintf_r(struct _reent *, int, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
env
#define env
memcpy
#define memcpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2853
rb_opts_exception_p
int rb_opts_exception_p(VALUE opts, int default_value)
Definition: object.c:3125
CLD_EXITED
#define CLD_EXITED
Definition: rb_mjit_min_header-2.7.2.h:2214
__pthread_mutexattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1381
rb_vm_struct::waiting_grps
struct list_head waiting_grps
Definition: vm_core.h:593
YARVINSN_leave
@ YARVINSN_leave
Definition: rb_mjit_min_header-2.7.2.h:11997
YARVINSN_putobject_INT2FIX_1_
@ YARVINSN_putobject_INT2FIX_1_
Definition: rb_mjit_min_header-2.7.2.h:12040
_mbstate_t
Definition: rb_mjit_min_header-2.7.2.h:889
rb_thread_struct::thread_invoke_type_func
@ thread_invoke_type_func
Definition: vm_core.h:978
rb_obj_method_arity
int rb_obj_method_arity(VALUE, ID)
Definition: proc.c:2652
_Bigint::_next
struct _Bigint * _next
Definition: rb_mjit_min_header-2.7.2.h:942
rb_ary_pattern_info::pre_args
NODE * pre_args
Definition: node.h:455
RB_DEBUG_COUNTER_obj_match_under4
@ RB_DEBUG_COUNTER_obj_match_under4
Definition: rb_mjit_min_header-2.7.2.h:11615
sched_setaffinity
int sched_setaffinity(pid_t, size_t, const cpu_set_t *)
off_t
__off_t off_t
Definition: rb_mjit_min_header-2.7.2.h:1315
BOP_LE
@ BOP_LE
Definition: rb_mjit_min_header-2.7.2.h:9610
posix_memalign
int posix_memalign(void **, size_t, size_t) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__))
rb_iseq_struct
Definition: vm_core.h:456
rb_rational_den
VALUE rb_rational_den(VALUE rat)
Definition: rational.c:1966
ruby_value_type
ruby_value_type
Definition: ruby.h:486
RB_DEBUG_COUNTER_obj_struct_ptr
@ RB_DEBUG_COUNTER_obj_struct_ptr
Definition: rb_mjit_min_header-2.7.2.h:11610
st_table::size_ind
unsigned char size_ind
Definition: st.h:81
round
double round(double)
Definition: numeric.c:80
_wcstoumax_r
uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int)
rb_flt_rationalize_with_prec
VALUE rb_flt_rationalize_with_prec(VALUE, VALUE)
Definition: rational.c:2226
__tm::__tm_min
int __tm_min
Definition: rb_mjit_min_header-2.7.2.h:949
idFdiv
@ idFdiv
Definition: rb_mjit_min_header-2.7.2.h:8700
CALL_FCALL_KW
@ CALL_FCALL_KW
Definition: rb_mjit_min_header-2.7.2.h:17145
rb_method_definition_struct::method_serial
uintptr_t method_serial
Definition: method.h:180
rb_cUnboundMethod
VALUE rb_cUnboundMethod
Definition: ruby.h:2050
rb_class_has_methods
int rb_class_has_methods(VALUE c)
Definition: class.c:2201
MEMO::flags
VALUE flags
Definition: internal.h:1279
__tzrule_type
struct __tzrule_struct __tzrule_type
div_t::rem
int rem
Definition: rb_mjit_min_header-2.7.2.h:2554
rb_str_append
VALUE rb_str_append(VALUE, VALUE)
Definition: string.c:2965
rb_proc_call_kw
VALUE rb_proc_call_kw(VALUE, VALUE, int)
Definition: proc.c:948
rmdir
int rmdir(const char *__path)
fpurge
int char char int int int int int int int int int int int int int int int int int int fpurge(FILE *)
rb_str_intern
VALUE rb_str_intern(VALUE)
Definition: symbol.c:710
int16_t
__int16_t int16_t
Definition: rb_mjit_min_header-2.7.2.h:1169
rb_feature_provided
int rb_feature_provided(const char *, const char **)
Definition: load.c:519
RFloat
Definition: internal.h:798
rb_vm_get_sourceline
int rb_vm_get_sourceline(const rb_control_frame_t *)
Definition: vm_backtrace.c:68
rb_vm_register_special_exception_str
void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg)
Definition: vm.c:2302
rb_thread_struct::arg
void * arg
Definition: vm_core.h:971
__tzrule_struct::n
int n
Definition: rb_mjit_min_header-2.7.2.h:2010
RUBY_IMMEDIATE_MASK
@ RUBY_IMMEDIATE_MASK
Definition: rb_mjit_min_header-2.7.2.h:4294
RB_DEBUG_COUNTER_mjit_length_active_units
@ RB_DEBUG_COUNTER_mjit_length_active_units
Definition: rb_mjit_min_header-2.7.2.h:11666
CLD_STOPPED
#define CLD_STOPPED
Definition: rb_mjit_min_header-2.7.2.h:2218
erand48
double erand48(unsigned short[3])
_pthread_cleanup_pop
void _pthread_cleanup_pop(int execute)
RB_DEBUG_COUNTER_mjit_frame_VM2JT
@ RB_DEBUG_COUNTER_mjit_frame_VM2JT
Definition: rb_mjit_min_header-2.7.2.h:11657
RUBY_TAG_NONE
@ RUBY_TAG_NONE
Definition: rb_mjit_min_header-2.7.2.h:9391
rb_gc_register_mark_object
void rb_gc_register_mark_object(VALUE)
Definition: gc.c:7066
_vscanf_r
int char char int int int int int int int int int int int _vscanf_r(struct _reent *, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
YARVINSN_trace_tostring
@ YARVINSN_trace_tostring
Definition: rb_mjit_min_header-2.7.2.h:12063
rintf
float rintf(float)
ruby_malloc_size_overflow
void ruby_malloc_size_overflow(size_t count, size_t elsize)
Definition: gc.c:10094
rb_Hash
VALUE rb_Hash(VALUE)
Equivalent to Kernel#Hash in Ruby.
Definition: object.c:3727
rb_iterate
VALUE rb_iterate(VALUE(*)(VALUE), VALUE, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1444
rb_iseq_struct::global_trace_events
rb_event_flag_t global_trace_events
Definition: vm_core.h:472
idNUMPARAM_9
@ idNUMPARAM_9
Definition: rb_mjit_min_header-2.7.2.h:8713
cfp
rb_control_frame_t * cfp
Definition: rb_mjit_min_header-2.7.2.h:14524
tanhf
float tanhf(float)
j1f
float j1f(float)
rb_define_module_under
VALUE rb_define_module_under(VALUE, const char *)
Definition: class.c:797
rb_thread_struct::calling
struct rb_calling_info * calling
Definition: vm_core.h:920
rb_warning_category_t
rb_warning_category_t
Definition: rb_mjit_min_header-2.7.2.h:7296
basename
#define basename
Definition: rb_mjit_min_header-2.7.2.h:2821
RB_DEBUG_COUNTER_heap_xrealloc
@ RB_DEBUG_COUNTER_heap_xrealloc
Definition: rb_mjit_min_header-2.7.2.h:11645
pthread_mutexattr_setpshared
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int)
rb_method_cfunc_struct::invoker
VALUE(* invoker)(VALUE recv, int argc, const VALUE *argv, VALUE(*func)(ANYARGS))
Definition: method.h:133
rb_gc_mark_vm_stack_values
void rb_gc_mark_vm_stack_values(long n, const VALUE *values)
Definition: gc.c:4742
RBignum::len
size_t len
Definition: internal.h:753
_fdopen_r
FILE * _fdopen_r(struct _reent *, int, const char *)
ILL_BADSTK
#define ILL_BADSTK
Definition: rb_mjit_min_header-2.7.2.h:2200
calling
rb_control_frame_t struct rb_calling_info * calling
Definition: rb_mjit_min_header-2.7.2.h:14524
rb_yield_1
VALUE rb_yield_1(VALUE val)
Definition: vm_eval.c:1231
RBignum::basic
struct RBasic basic
Definition: internal.h:750
rb_iseq_new_with_callback_callback_func
Definition: vm_core.h:1018
rb_file_expand_path_internal
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE)
Definition: file.c:3646
sigevent_t
struct sigevent sigevent_t
VM_CHECKMATCH_TYPE_RESCUE
@ VM_CHECKMATCH_TYPE_RESCUE
Definition: rb_mjit_min_header-2.7.2.h:9968
idERROR_INFO
@ idERROR_INFO
Definition: rb_mjit_min_header-2.7.2.h:8718
ruby_show_version
void ruby_show_version(void)
Prints the version information of the CRuby interpreter to stdout.
Definition: version.c:119
rb_objspace_gc_enable
VALUE rb_objspace_gc_enable(struct rb_objspace *)
Definition: gc.c:9219
rb_classext_struct::subclasses
rb_subclass_entry_t * subclasses
Definition: internal.h:1028
rb_const_defined_at
int rb_const_defined_at(VALUE, ID)
Definition: variable.c:2692
rb_reg_match
VALUE rb_reg_match(VALUE, VALUE)
Definition: re.c:3180
tm::tm_min
int tm_min
Definition: rb_mjit_min_header-2.7.2.h:1966
ffs
int ffs(int) __attribute__((__const__))
Definition: ffs.c:6
viprintf
int int int int int int int int char char int int int int int int int int int char char int int int int viprintf(const char *, __gnuc_va_list) __attribute__((__format__(__printf__
YARVINSN_freezestring
@ YARVINSN_freezestring
Definition: rb_mjit_min_header-2.7.2.h:11961
rb_vm_proc_local_ep
const VALUE * rb_vm_proc_local_ep(VALUE proc)
Definition: thread.c:653
YARVINSN_trace_branchunless
@ YARVINSN_trace_branchunless
Definition: rb_mjit_min_header-2.7.2.h:12104
YARVINSN_setlocal
@ YARVINSN_setlocal
Definition: rb_mjit_min_header-2.7.2.h:11940
ruby_posix_signal
void(*)(int) ruby_posix_signal(int, void(*)(int))
Definition: rb_mjit_min_header-2.7.2.h:6019
YARVINSN_setlocal_WC_0
@ YARVINSN_setlocal_WC_0
Definition: rb_mjit_min_header-2.7.2.h:12037
s2
const char * s2
Definition: rb_mjit_min_header-2.7.2.h:5450
rb_warn
void rb_warn(const char *fmt,...)
Definition: error.c:315
__cygwin_lock_unlock
void __cygwin_lock_unlock(_LOCK_T *)
iseq_compile_data_storage::buff
char buff[FLEX_ARY_LEN]
Definition: iseq.h:278
NODE_CASE
@ NODE_CASE
Definition: rb_mjit_min_header-2.7.2.h:8048
idTo_hash
@ idTo_hash
Definition: rb_mjit_min_header-2.7.2.h:8681
rb_struct_s_keyword_init
VALUE rb_struct_s_keyword_init(VALUE klass)
Definition: struct.c:52
DEFINED_EXPR
@ DEFINED_EXPR
Definition: rb_mjit_min_header-2.7.2.h:10862
rb_big_and
VALUE rb_big_and(VALUE, VALUE)
Definition: bignum.c:6360
YARVINSN_trace_opt_newarray_min
@ YARVINSN_trace_opt_newarray_min
Definition: rb_mjit_min_header-2.7.2.h:12097
pthread_equal
int pthread_equal(pthread_t, pthread_t)
RUBY_NUM_ROUND_HALF_UP
@ RUBY_NUM_ROUND_HALF_UP
Definition: rb_mjit_min_header-2.7.2.h:7430
RComplex::basic
struct RBasic basic
Definition: internal.h:806
YARVINSN_checkmatch
@ YARVINSN_checkmatch
Definition: rb_mjit_min_header-2.7.2.h:11982
rb_marshal_load
VALUE rb_marshal_load(VALUE)
Definition: marshal.c:2360
floorl
long double floorl(long double)
RB_DEBUG_COUNTER_obj_hash_g8
@ RB_DEBUG_COUNTER_obj_hash_g8
Definition: rb_mjit_min_header-2.7.2.h:11602
ruby_exec_node
int ruby_exec_node(void *n)
Runs the given compiled source.
Definition: eval.c:341
rb_block_given_p
int rb_block_given_p(void)
Determines if the current method is given a block.
Definition: eval.c:898
sigevent::sigev_signo
int sigev_signo
Definition: rb_mjit_min_header-2.7.2.h:2094
tUScore
@ tUScore
Definition: rb_mjit_min_header-2.7.2.h:8623
killpg
int killpg(pid_t, int)
RUBY_FL_FREEZE
@ RUBY_FL_FREEZE
Definition: ruby.h:851
rb_thread_shield_wait
VALUE rb_thread_shield_wait(VALUE self)
Definition: thread.c:4806
_strerror_r
char * _strerror_r(struct _reent *, int, int, int *)
rb_bug_reporter_add
int rb_bug_reporter_add(void(*func)(FILE *, void *), void *data)
Definition: error.c:457
__cygwin_lock_trylock
int __cygwin_lock_trylock(_LOCK_T *)
NODE_IVAR
@ NODE_IVAR
Definition: rb_mjit_min_header-2.7.2.h:8097
tmpnam
char * tmpnam(char *)
rb_global_entry::var
struct rb_global_variable * var
Definition: internal.h:1351
rb_reg_compile
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
Definition: re.c:2953
rb_iseq_constant_body::insns_info
struct rb_iseq_constant_body::iseq_insn_info insns_info
RUBY_FL_USHIFT
@ RUBY_FL_USHIFT
Definition: ruby.h:853
idLocals
@ idLocals
Definition: rb_mjit_min_header-2.7.2.h:8694
wcstombs
size_t wcstombs(char *__restrict, const wchar_t *__restrict, size_t)
NODE_COLON2
@ NODE_COLON2
Definition: rb_mjit_min_header-2.7.2.h:8130
VM_CALL_ARGS_BLOCKARG_bit
@ VM_CALL_ARGS_BLOCKARG_bit
Definition: rb_mjit_min_header-2.7.2.h:9974
rb_st_init_strcasetable_with_size
st_table * rb_st_init_strcasetable_with_size(st_index_t)
rb_exc_new_cstr
#define rb_exc_new_cstr(klass, ptr)
Definition: rb_mjit_min_header-2.7.2.h:6123
rb_current_receiver
VALUE rb_current_receiver(void)
Definition: vm_eval.c:314
RB_DEBUG_COUNTER_heap_xmalloc
@ RB_DEBUG_COUNTER_heap_xmalloc
Definition: rb_mjit_min_header-2.7.2.h:11644
rb_iv_tbl_copy
void rb_iv_tbl_copy(VALUE dst, VALUE src)
Definition: variable.c:3343
rb_wb_protected_newobj_of
VALUE rb_wb_protected_newobj_of(VALUE, VALUE)
Definition: gc.c:2281
sqrtf
float sqrtf(float)
rb_complex_polar
VALUE rb_complex_polar(VALUE x, VALUE y)
Definition: complex.c:1539
rb_mjit_unit
Definition: mjit_worker.c:126
siginfo_t::si_errno
int si_errno
Definition: rb_mjit_min_header-2.7.2.h:2123
idMesg
@ idMesg
Definition: rb_mjit_min_header-2.7.2.h:8692
_fflush_r
int _fflush_r(struct _reent *, FILE *)
siginfo_t
Definition: rb_mjit_min_header-2.7.2.h:2118
DEFINED_ASGN
@ DEFINED_ASGN
Definition: rb_mjit_min_header-2.7.2.h:10861
rb_locale_str_new_cstr
#define rb_locale_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6120
rb_data_type_struct::dmark
void(* dmark)(void *)
Definition: ruby.h:1151
rb_immutable_obj_clone
VALUE rb_immutable_obj_clone(int, VALUE *, VALUE)
Definition: object.c:346
memalign
void * memalign(size_t, size_t)
rb_method_definition_struct::attr
rb_method_attr_t attr
Definition: method.h:171
NODE_SUPER
@ NODE_SUPER
Definition: rb_mjit_min_header-2.7.2.h:8086
sinf
float sinf(float)
rb_math_sinh
VALUE rb_math_sinh(VALUE)
rb_vm_struct::redefined_flag
short redefined_flag[BOP_LAST_]
Definition: vm_core.h:669
rb_nativethread_id_t
pthread_t rb_nativethread_id_t
Definition: rb_mjit_min_header-2.7.2.h:9313
rb_parser_set_options
void rb_parser_set_options(VALUE, int, int, int, int)
Definition: ripper.c:19018
getcwd
char * getcwd(char *__buf, size_t __size)
rb_objspace_reachable_objects_from_root
void rb_objspace_reachable_objects_from_root(void(func)(const char *category, VALUE, void *), void *data)
Definition: gc.c:9496
rb_str_upto_endless_each
VALUE rb_str_upto_endless_each(VALUE, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4345
floor
double floor(double)
rb_big_cmp
VALUE rb_big_cmp(VALUE, VALUE)
Definition: bignum.c:5419
rb_singleton_class_internal_p
int rb_singleton_class_internal_p(VALUE sklass)
Definition: class.c:455
mkostemp
int mkostemp(char *, int)
rb_mGC
VALUE rb_mGC
Definition: gc.c:1000
rb_iseq_init_trace
void rb_iseq_init_trace(rb_iseq_t *iseq)
Definition: iseq.c:623
rb_hash_size_num
size_t rb_hash_size_num(VALUE hash)
Definition: hash.c:2945
acosf
float acosf(float)
RUBY_TAG_FATAL
@ RUBY_TAG_FATAL
Definition: rb_mjit_min_header-2.7.2.h:9399
pthread_tryjoin_np
int pthread_tryjoin_np(pthread_t, void **)
rb_reg_new_str
VALUE rb_reg_new_str(VALUE, int)
Definition: re.c:2895
NODE_DXSTR
@ NODE_DXSTR
Definition: rb_mjit_min_header-2.7.2.h:8109
ruby_check_sizeof_long_long
char ruby_check_sizeof_long_long[8==sizeof(long long) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.2.h:4000
getdtablesize
int getdtablesize(void)
__sa_family_t
__uint16_t __sa_family_t
Definition: rb_mjit_min_header-2.7.2.h:870
feof
#define feof(p)
Definition: rb_mjit_min_header-2.7.2.h:1860
__tzinfo_struct::__tzyear
int __tzyear
Definition: rb_mjit_min_header-2.7.2.h:2019
imemo_memo
@ imemo_memo
Definition: rb_mjit_min_header-2.7.2.h:7034
rb_classext_struct::iv_tbl
struct st_table * iv_tbl
Definition: internal.h:1022
rb_cNumeric
VALUE rb_cNumeric
Definition: ruby.h:2037
CDHASH
VALUE CDHASH
Definition: rb_mjit_min_header-2.7.2.h:10016
rb_output_fs
VALUE rb_output_fs
Definition: intern.h:584
ruby_rvalue_flags
ruby_rvalue_flags
Definition: ruby.h:909
atan2l
long double atan2l(long double, long double)
int
#define int
Definition: rb_mjit_min_header-2.7.2.h:2888
rb_raw_obj_info
const char * rb_raw_obj_info(char *buff, const int buff_size, VALUE obj)
Definition: gc.c:11447
rb_dir_getwd_ospath
void VALUE rb_dir_getwd_ospath(void)
Definition: dir.c:1117
rb_complex_conjugate
VALUE rb_complex_conjugate(VALUE z)
Definition: complex.c:1254
rb_execution_context_struct::local_storage
st_table * local_storage
Definition: vm_core.h:860
RUBY_FLONUM_MASK
@ RUBY_FLONUM_MASK
Definition: rb_mjit_min_header-2.7.2.h:4296
VM_DEFINECLASS_TYPE_MASK
@ VM_DEFINECLASS_TYPE_MASK
Definition: rb_mjit_min_header-2.7.2.h:9903
rb_parser_end_seen_p
VALUE rb_parser_end_seen_p(VALUE)
Definition: ripper.c:19264
rb_funcallv_kw
VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:962
u_register_t
__uintptr_t u_register_t
Definition: rb_mjit_min_header-2.7.2.h:1284
rb_atomic_t
unsigned int rb_atomic_t
Definition: rb_mjit_min_header-2.7.2.h:8892
rb_iseq_constant_body::has_lead
unsigned int has_lead
Definition: vm_core.h:352
pthread_rwlock_tryrdlock
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock)
NODE_LIST
@ NODE_LIST
Definition: rb_mjit_min_header-2.7.2.h:8088
st_compare_func
int st_compare_func(st_data_t, st_data_t)
Definition: rb_mjit_min_header-2.7.2.h:5364
stpncpy
#define stpncpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2858
rb_define_attr
void rb_define_attr(VALUE, const char *, int, int)
Defines (a) public accessor method(s) for an attribute.
Definition: class.c:1813
rb_method_iseq_struct::cref
rb_cref_t * cref
class reference, should be marked
Definition: method.h:128
rb_sourceline
int rb_sourceline(void)
Definition: vm.c:1346
fabsl
long double fabsl(long double)
memcmp
int memcmp(const void *, const void *, size_t)
Definition: memcmp.c:7
YARVINSN_duparray
@ YARVINSN_duparray
Definition: rb_mjit_min_header-2.7.2.h:11966
_putchar_unlocked_r
int _putchar_unlocked_r(struct _reent *, int)
__sFILE::_write
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
Definition: rb_mjit_min_header-2.7.2.h:989
rb_yield_values_kw
VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat)
Definition: vm_eval.c:1277
tLAST_OP_ID
@ tLAST_OP_ID
Definition: rb_mjit_min_header-2.7.2.h:8722
rb_search_class_path
VALUE rb_search_class_path(VALUE)
Definition: variable.c:175
NODE_OP_ASGN_OR
@ NODE_OP_ASGN_OR
Definition: rb_mjit_min_header-2.7.2.h:8079
_atoll_r
long long _atoll_r(struct _reent *, const char *__nptr)
pread
ssize_t pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
rb_define_module_function
void rb_define_module_function(VALUE, const char *, VALUE(*)(), int)
__int_least8_t
signed char __int_least8_t
Definition: rb_mjit_min_header-2.7.2.h:629
div_t
Definition: rb_mjit_min_header-2.7.2.h:2552
rb_str_succ
VALUE rb_str_succ(VALUE)
Definition: string.c:4090
__fpclassifyf
int __fpclassifyf(float x)
rb_iseq_constant_body::table
const ID * table
Definition: vm_core.h:394
rb_vm_cref_new_toplevel
rb_cref_t * rb_vm_cref_new_toplevel(void)
Definition: rb_mjit_min_header-2.7.2.h:11453
rb_fdset_t::fdset
fd_set * fdset
Definition: rb_mjit_min_header-2.7.2.h:5703
__ssp_real_wcstombs
size_t __ssp_real_wcstombs(char *__buf, const wchar_t *__src, size_t __len) __asm__("_" "wcstombs")
FILE
__FILE FILE
Definition: rb_mjit_min_header-2.7.2.h:1472
rb_vm_encoded_insn_data_table_init
void rb_vm_encoded_insn_data_table_init(void)
Definition: iseq.c:3085
rb_fix2short
short rb_fix2short(VALUE)
Definition: numeric.c:3050
ruby_vm_global_constant_state
rb_serial_t ruby_vm_global_constant_state
Definition: vm.c:380
rb_get_coverages
VALUE rb_get_coverages(void)
Definition: thread.c:5477
rb_eStopIteration
VALUE rb_eStopIteration
Definition: enumerator.c:124
rb_ec_reset_raised
int rb_ec_reset_raised(rb_execution_context_t *ec)
Definition: thread.c:2354
fclose
int fclose(FILE *)
fputc
int fputc(int, FILE *)
idNil
@ idNil
Definition: rb_mjit_min_header-2.7.2.h:8703
rb_sym_to_proc
VALUE rb_sym_to_proc(VALUE sym)
Definition: proc.c:1312
YARVINSN_opt_call_c_function
@ YARVINSN_opt_call_c_function
Definition: rb_mjit_min_header-2.7.2.h:12031
rb_backtrace_to_str_ary
VALUE rb_backtrace_to_str_ary(VALUE obj)
Definition: vm_backtrace.c:620
rb_data_type_struct::reserved
void * reserved[1]
Definition: ruby.h:1155
__sFILE::_lock
_flock_t _lock
Definition: rb_mjit_min_header-2.7.2.h:1003
ruby_signal_name
const char * ruby_signal_name(int)
Definition: signal.c:310
RRational::num
VALUE num
Definition: internal.h:790
imemo_type
imemo_type
Definition: rb_mjit_min_header-2.7.2.h:7028
rb_objspace_free
void rb_objspace_free(struct rb_objspace *)
Definition: gc.c:1602
__eprintf
void __eprintf(const char *, const char *, unsigned int, const char *)
rb_vm_struct::thread_machine_stack_size
size_t thread_machine_stack_size
Definition: vm_core.h:664
iseq_insn_info_entry
Definition: iseq.h:220
rb_hash_compare_by_id_p
VALUE rb_hash_compare_by_id_p(VALUE hash)
Definition: hash.c:4267
rb_big_lt
VALUE rb_big_lt(VALUE x, VALUE y)
Definition: bignum.c:5501
rb_file_s_expand_path
VALUE rb_file_s_expand_path(int, const VALUE *)
Definition: file.c:4031
_reent::_atexit
struct _atexit * _atexit
Definition: rb_mjit_min_header-2.7.2.h:1106
rb_mutex_trylock
VALUE rb_mutex_trylock(VALUE mutex)
Definition: thread_sync.c:203
sig
int sig
Definition: rb_mjit_min_header-2.7.2.h:10390
rb_yield_refine_block
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements)
Definition: vm_eval.c:1885
RUBY_FL_UNTRUSTED
@ RUBY_FL_UNTRUSTED
Definition: ruby.h:848
sigaction
Definition: rb_mjit_min_header-2.7.2.h:2231
ruby_rstring_flags
ruby_rstring_flags
Definition: ruby.h:977
rb_iseq_constant_body::iseq_insn_info::succ_index_table
struct succ_index_table * succ_index_table
Definition: vm_core.h:407
MEMO::v1
const VALUE v1
Definition: internal.h:1281
rb_mComparable
VALUE rb_mComparable
Definition: compar.c:16
stat::st_uid
uid_t st_uid
Definition: rb_mjit_min_header-2.7.2.h:2396
tTo_int
@ tTo_int
Definition: rb_mjit_min_header-2.7.2.h:8596
__sFILE::_w
size_t _w
Definition: vsnprintf.c:174
ruby_initial_load_paths
const char ruby_initial_load_paths[]
Definition: loadpath.c:62
rb_to_symbol
VALUE rb_to_symbol(VALUE name)
Definition: string.c:11156
rb_rational_abs
VALUE rb_rational_abs(VALUE self)
Definition: rational.c:1255
isnanl
int isnanl(long double)
rb_iseq_constant_body::jit_unit
struct rb_mjit_unit * jit_unit
Definition: rb_mjit_min_header-2.7.2.h:9563
f_var
const VALUE int int int int f_var
Definition: rb_mjit_min_header-2.7.2.h:6458
rb_hash_rehash
VALUE rb_hash_rehash(VALUE hash)
Definition: hash.c:1958
__mcontext::oldmask
__uint32_t oldmask
Definition: rb_mjit_min_header-2.7.2.h:2082
RNode::node
struct RNode * node
Definition: node.h:152
RB_DEBUG_COUNTER_theap_evacuate
@ RB_DEBUG_COUNTER_theap_evacuate
Definition: rb_mjit_min_header-2.7.2.h:11649
rb_call_info_kw_arg::keywords
VALUE keywords[1]
Definition: vm_core.h:242
clock_getcpuclockid
int clock_getcpuclockid(pid_t pid, clockid_t *clock_id)
iseq_inline_iv_cache_entry
Definition: vm_core.h:226
__sched_getaffinity_sys
int __sched_getaffinity_sys(pid_t, size_t, cpu_set_t *)
rb_mutex_lock
VALUE rb_mutex_lock(VALUE mutex)
Definition: thread_sync.c:333
YARVINSN_opt_aset_with
@ YARVINSN_opt_aset_with
Definition: rb_mjit_min_header-2.7.2.h:12023
GENTRY
VALUE GENTRY
Definition: rb_mjit_min_header-2.7.2.h:11910
u_long
unsigned long u_long
Definition: rb_mjit_min_header-2.7.2.h:1291
getuid
uid_t getuid(void)
Definition: win32.c:2765
rb_str_tmp_frozen_acquire
VALUE rb_str_tmp_frozen_acquire(VALUE str)
Definition: string.c:1210
f_block
const VALUE int int int int int int f_block
Definition: rb_mjit_min_header-2.7.2.h:6458
iseq_catch_table_entry::CATCH_TYPE_RESCUE
@ CATCH_TYPE_RESCUE
Definition: iseq.h:227
rb_during_gc
int rb_during_gc(void)
Definition: gc.c:8690
RObject
Definition: ruby.h:922
idANDDOT
@ idANDDOT
Definition: rb_mjit_min_header-2.7.2.h:8546
rb_int_parse_cstr
VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags)
Definition: bignum.c:4041
Init_heap
void Init_heap(void)
Definition: gc.c:2911
rb_print_undef
void rb_print_undef(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:383
rb_thread_kill
VALUE rb_thread_kill(VALUE)
Definition: thread.c:2446
gid_t
__gid_t gid_t
Definition: rb_mjit_min_header-2.7.2.h:1321
flock::l_whence
short l_whence
Definition: rb_mjit_min_header-2.7.2.h:1434
__socklen_t
int __socklen_t
Definition: rb_mjit_min_header-2.7.2.h:872
rb_f_abort
VALUE rb_f_abort(int argc, const VALUE *argv)
Definition: process.c:4284
rb_call_cache::me
const struct rb_callable_method_entry_struct * me
Definition: internal.h:2379
nextafter
double nextafter(double, double)
Definition: nextafter.c:9
rb_vm_gvl_destroy
void rb_vm_gvl_destroy(rb_vm_t *vm)
Definition: thread.c:421
rb_tainted_str_new_cstr
#define rb_tainted_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6116
strncasecmp_l
int strncasecmp_l(const char *, const char *, size_t, locale_t)
__assert_func
void __assert_func(const char *, int, const char *, const char *) __attribute__((__noreturn__))
ferror
#define ferror(p)
Definition: rb_mjit_min_header-2.7.2.h:1861
sigemptyset
int sigemptyset(sigset_t *)
pthread_getconcurrency
int pthread_getconcurrency(void)
rb_catch_protect
VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr)
Definition: vm_eval.c:2326
pthread_testcancel
void pthread_testcancel(void)
ruby_vm_at_exit
void ruby_vm_at_exit(void(*func)(ruby_vm_t *))
rb_load_file_str
void * rb_load_file_str(VALUE)
Definition: ruby.c:2199
uint
unsigned int uint
Definition: rb_mjit_min_header-2.7.2.h:1295
rb_id_attrset
ID rb_id_attrset(ID)
Definition: symbol.c:98
NODE_NTH_REF
@ NODE_NTH_REF
Definition: rb_mjit_min_header-2.7.2.h:8100
lrint
long int lrint(double)
__mcontext::ebp
__uint32_t ebp
Definition: rb_mjit_min_header-2.7.2.h:2075
vm_ifunc::data
const void * data
Definition: internal.h:1219
__blkcnt_t
__int64_t __blkcnt_t
Definition: rb_mjit_min_header-2.7.2.h:852
YARVINSN_trace_opt_nil_p
@ YARVINSN_trace_opt_nil_p
Definition: rb_mjit_min_header-2.7.2.h:12094
_putc_unlocked_r
int _putc_unlocked_r(struct _reent *, int, FILE *)
RB_DEBUG_COUNTER_obj_class_ptr
@ RB_DEBUG_COUNTER_obj_class_ptr
Definition: rb_mjit_min_header-2.7.2.h:11620
VM_SVAR_LASTLINE
@ VM_SVAR_LASTLINE
Definition: rb_mjit_min_header-2.7.2.h:10005
rb_ast_delete_node
void rb_ast_delete_node(rb_ast_t *, NODE *n)
Definition: node.c:1227
cosf
float cosf(float)
tzset
void tzset(void)
RHash::ifnone
const VALUE ifnone
Definition: internal.h:893
RB_DEBUG_COUNTER_mjit_exec_call_func
@ RB_DEBUG_COUNTER_mjit_exec_call_func
Definition: rb_mjit_min_header-2.7.2.h:11655
_mbstate_t::__count
int __count
Definition: rb_mjit_min_header-2.7.2.h:890
rb_execarg_addopt
int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val)
Definition: process.c:2013
DEFINED_CONST_FROM
@ DEFINED_CONST_FROM
Definition: rb_mjit_min_header-2.7.2.h:10866
NODE_CDECL
@ NODE_CDECL
Definition: rb_mjit_min_header-2.7.2.h:8074
futimens
int futimens(int, const struct timespec *)
NODE_ENSURE
@ NODE_ENSURE
Definition: rb_mjit_min_header-2.7.2.h:8065
rb_vm_opt_struct_aset
rb_control_frame_t *FUNC_FASTCALL() rb_vm_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
Definition: vm_insnhelper.c:3474
acosl
long double acosl(long double)
ruby_set_debug_option
void ruby_set_debug_option(const char *str)
Definition: debug.c:226
rb_block::captured
struct rb_captured_block captured
Definition: vm_core.h:753
asniprintf
int int int int int int int int char * asniprintf(char *, size_t *, const char *,...) __attribute__((__format__(__printf__
__sFILE64::_file
short _file
Definition: rb_mjit_min_header-2.7.2.h:1012
__len
__inline__ int __len
Definition: rb_mjit_min_header-2.7.2.h:1922
rb_thread_to_be_killed
int rb_thread_to_be_killed(VALUE thread)
Definition: thread.c:2472
rb_dbl_cmp
VALUE rb_dbl_cmp(double a, double b)
Definition: numeric.c:1431
rb_hash_lookup
VALUE rb_hash_lookup(VALUE, VALUE)
Definition: hash.c:2063
rb_gvar_defined
VALUE rb_gvar_defined(struct rb_global_entry *)
Definition: variable.c:695
rb_execarg::unsetenv_others_do
unsigned unsetenv_others_do
Definition: internal.h:2045
rb_num_t
unsigned long rb_num_t
Definition: vm_core.h:181
idNilP
@ idNilP
Definition: rb_mjit_min_header-2.7.2.h:8548
rb_thread_check_trap_pending
int rb_thread_check_trap_pending(void)
Definition: thread.c:1372
idDot2
@ idDot2
Definition: rb_mjit_min_header-2.7.2.h:8515
vm_ifunc::func
rb_block_call_func_t func
Definition: internal.h:1218
sigval::sival_ptr
void * sival_ptr
Definition: rb_mjit_min_header-2.7.2.h:2089
iseq_compile_data::storage_head
struct iseq_compile_data_storage * storage_head
Definition: iseq.h:104
rb_vm_cframe_keyword_p
int rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.2.h:11345
rb_class_remove_from_module_subclasses
void rb_class_remove_from_module_subclasses(VALUE)
Definition: class.c:94
rb_vm_struct::coverage_mode
int coverage_mode
Definition: vm_core.h:647
timeval::tv_usec
suseconds_t tv_usec
Definition: rb_mjit_min_header-2.7.2.h:1241
iseq_catch_table_entry::cont
unsigned int cont
Definition: iseq.h:251
rb_warning_category_enabled_p
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
Definition: error.c:166
__cygwin_lock_init
void __cygwin_lock_init(_LOCK_T *)
rb_str_scrub
VALUE rb_str_scrub(VALUE, VALUE)
Definition: string.c:10248
fd_set
Definition: rb_mjit_min_header-2.7.2.h:1264
rb_ast_memsize
size_t rb_ast_memsize(const rb_ast_t *)
Definition: node.c:1373
strchr
char * strchr(const char *, int)
Definition: strchr.c:8
ruby_current_vm_ptr
rb_vm_t * ruby_current_vm_ptr
Definition: vm.c:372
rb_backtrace_each
void rb_backtrace_each(VALUE(*iter)(VALUE recv, VALUE str), VALUE output)
Definition: vm_backtrace.c:855
abs
int abs(int)
YARVINSN_putself
@ YARVINSN_putself
Definition: rb_mjit_min_header-2.7.2.h:11955
i
uint32_t i
Definition: rb_mjit_min_header-2.7.2.h:5460
rb_hash_bulk_insert_into_st_table
void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE)
Definition: st.c:2380
system
int system(const char *__string)
funopen
FILE * funopen(const void *__cookie, int(*__readfn)(void *__c, char *__buf, size_t __n), int(*__writefn)(void *__c, const char *__buf, size_t __n), _fpos64_t(*__seekfn)(void *__c, _fpos64_t __off, int __whence), int(*__closefn)(void *__c))
rb_fiber_new
VALUE rb_fiber_new(rb_block_call_func_t, VALUE)
Definition: cont.c:1795
rb_reg_match_post
VALUE rb_reg_match_post(VALUE)
Definition: re.c:1775
rb_ary_set_len
void rb_ary_set_len(VALUE, long)
Definition: array.c:1932
rb_binding_add_dynavars
const VALUE * rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars)
Definition: vm.c:984
ceilf
float ceilf(float)
atoff
float atoff(const char *__nptr)
rb_cv_get
VALUE rb_cv_get(VALUE, const char *)
Definition: variable.c:3149
rb_iseq_constant_body::default_values
VALUE * default_values
Definition: vm_core.h:395
rb_proc_get_iseq
const rb_iseq_t * rb_proc_get_iseq(VALUE proc, int *is_proc)
Definition: proc.c:1194
rb_empty_keyword_given_p
int rb_empty_keyword_given_p(void)
Definition: eval.c:919
rb_str_quote_unprintable
VALUE rb_str_quote_unprintable(VALUE)
Definition: string.c:10714
l64a
char * l64a(long __input)
RB_DEBUG_COUNTER_mjit_frame_VM2VM
@ RB_DEBUG_COUNTER_mjit_frame_VM2VM
Definition: rb_mjit_min_header-2.7.2.h:11656
idEmptyP
@ idEmptyP
Definition: rb_mjit_min_header-2.7.2.h:8550
RB_DEBUG_COUNTER_ccf_ivar
@ RB_DEBUG_COUNTER_ccf_ivar
Definition: rb_mjit_min_header-2.7.2.h:11519
rb_thread_struct::top_wrapper
VALUE top_wrapper
Definition: vm_core.h:924
NODE_GASGN
@ NODE_GASGN
Definition: rb_mjit_min_header-2.7.2.h:8072
rb_str_cat_cstr
#define rb_str_cat_cstr(str, ptr)
Definition: rb_mjit_min_header-2.7.2.h:6122
_Bigint::_sign
int _sign
Definition: rb_mjit_min_header-2.7.2.h:943
rb_cComplex
VALUE rb_cComplex
Definition: complex.c:33
rb_callable_method_entry_struct::owner
const VALUE owner
Definition: method.h:64
rb_call_cache::method_missing_reason
enum method_missing_reason method_missing_reason
Definition: internal.h:2389
fmod
double fmod(double, double)
rb_check_to_array
VALUE rb_check_to_array(VALUE ary)
Definition: array.c:915
rb_bug_errno
void rb_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:669
RB_DEBUG_COUNTER_ivar_set_ic_miss_unset
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_unset
Definition: rb_mjit_min_header-2.7.2.h:11550
NODE_DEFINED
@ NODE_DEFINED
Definition: rb_mjit_min_header-2.7.2.h:8141
YARVINSN_trace_opt_regexpmatch2
@ YARVINSN_trace_opt_regexpmatch2
Definition: rb_mjit_min_header-2.7.2.h:12133
NODE_IF
@ NODE_IF
Definition: rb_mjit_min_header-2.7.2.h:8046
__tzrule_struct::change
time_t change
Definition: rb_mjit_min_header-2.7.2.h:2013
fd_mask
__fd_mask fd_mask
Definition: rb_mjit_min_header-2.7.2.h:1260
rb_io_fptr_finalize_internal
void rb_io_fptr_finalize_internal(void *ptr)
Definition: io.c:4730
pthread_key_create
int pthread_key_create(pthread_key_t *, void(*)(void *))
idTo_f
@ idTo_f
Definition: rb_mjit_min_header-2.7.2.h:8687
rb_check_string_type
VALUE rb_check_string_type(VALUE)
Definition: string.c:2314
__pthread_spinlock_t
Definition: rb_mjit_min_header-2.7.2.h:1392
pthread_attr_setstacksize
int pthread_attr_setstacksize(pthread_attr_t *, size_t)
_getenv_r
char * _getenv_r(struct _reent *, const char *__string)
rb_iseq_constant_body::has_kwrest
unsigned int has_kwrest
Definition: vm_core.h:357
YARVINSN_opt_aref_with
@ YARVINSN_opt_aref_with
Definition: rb_mjit_min_header-2.7.2.h:12024
pthread_join
int pthread_join(pthread_t, void **)
YARVINSN_setn
@ YARVINSN_setn
Definition: rb_mjit_min_header-2.7.2.h:11979
rb_st_cleanup_safe
void rb_st_cleanup_safe(st_table *, st_data_t)
rb_iseq_constant_body::coverage
VALUE coverage
Definition: vm_core.h:430
rb_hash_clear
VALUE rb_hash_clear(VALUE)
Definition: hash.c:2769
RUBY_T_HASH
@ RUBY_T_HASH
Definition: rb_mjit_min_header-2.7.2.h:4326
BOP_GT
@ BOP_GT
Definition: rb_mjit_min_header-2.7.2.h:9619
rb_fiber_resume
VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv)
Definition: cont.c:2117
rb_st_init_strcasetable
st_table * rb_st_init_strcasetable(void)
rb_data_type_struct::parent
const rb_data_type_t * parent
Definition: ruby.h:1158
SIGEV_SIGNAL
#define SIGEV_SIGNAL
Definition: rb_mjit_min_header-2.7.2.h:2226
__mcontext::reserved
__uint32_t reserved[128]
Definition: rb_mjit_min_header-2.7.2.h:2081
NODE_DOT2
@ NODE_DOT2
Definition: rb_mjit_min_header-2.7.2.h:8132
native_thread_data_struct::intr
rb_nativethread_cond_t intr
Definition: thread_pthread.h:38
rb_int2big
VALUE rb_int2big(intptr_t n)
Definition: bignum.c:3180
rb_mod_deprecate_constant
VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:3022
NODE_BACK_REF
@ NODE_BACK_REF
Definition: rb_mjit_min_header-2.7.2.h:8101
VM_CALL_ARGS_SIMPLE_bit
@ VM_CALL_ARGS_SIMPLE_bit
Definition: rb_mjit_min_header-2.7.2.h:9977
rb_gvar_set
VALUE rb_gvar_set(struct rb_global_entry *, VALUE)
Definition: variable.c:654
mjit_child_after_fork
void mjit_child_after_fork(void)
rb_method_name_error
void rb_method_name_error(VALUE klass, VALUE str)
Definition: proc.c:1778
sleep
unsigned sleep(unsigned int __seconds)
ci
rb_control_frame_t struct rb_calling_info const struct rb_call_info * ci
Definition: rb_mjit_min_header-2.7.2.h:15126
rb_class_superclass
VALUE rb_class_superclass(VALUE)
Returns the superclass of klass.
Definition: object.c:1976
rb_const_entry_struct::line
int line
Definition: constant.h:33
YARVINSN_topn
@ YARVINSN_topn
Definition: rb_mjit_min_header-2.7.2.h:11978
rb_clear_constant_cache
void rb_clear_constant_cache(void)
Definition: vm_method.c:87
rb_objspace
Definition: gc.c:676
rb_ary_memsize
size_t rb_ary_memsize(VALUE)
Definition: array.c:816
vm_throw_data::catch_frame
const struct rb_control_frame_struct * catch_frame
Definition: internal.h:1197
ruby_safe_level_2_warning
#define ruby_safe_level_2_warning()
flock::l_pid
pid_t l_pid
Definition: rb_mjit_min_header-2.7.2.h:1437
VM_FRAME_FLAG_CFRAME_EMPTY_KW
@ VM_FRAME_FLAG_CFRAME_EMPTY_KW
Definition: rb_mjit_min_header-2.7.2.h:10042
RFloat::basic
struct RBasic basic
Definition: internal.h:799
rb_thread_execute_interrupts
void rb_thread_execute_interrupts(VALUE th)
Definition: thread.c:2284
rb_class_new_instance_kw
VALUE rb_class_new_instance_kw(int, const VALUE *, VALUE, int)
Definition: object.c:1931
rb_iseq_constant_body::rest_start
int rest_start
Definition: vm_core.h:369
rb_throw_obj
void rb_throw_obj(VALUE tag, VALUE value)
Definition: vm_eval.c:2195
rb_method_attr_struct::id
ID id
Definition: method.h:138
rb_objspace_markable_object_p
int rb_objspace_markable_object_p(VALUE obj)
Definition: gc.c:3600
dup3
int dup3(int __fildes, int __fildes2, int flags)
rb_write_error2
void rb_write_error2(const char *, long)
Definition: io.c:7911
isinfl
int isinfl(long double)
mknod
int mknod(const char *__path, mode_t __mode, dev_t __dev)
YARVINSN_trace_opt_eq
@ YARVINSN_trace_opt_eq
Definition: rb_mjit_min_header-2.7.2.h:12115
tTo_s
@ tTo_s
Definition: rb_mjit_min_header-2.7.2.h:8604
pthread_barrier_wait
int pthread_barrier_wait(pthread_barrier_t *)
strncpy
#define strncpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2861
RB_DEBUG_COUNTER_theap_alloc_fail
@ RB_DEBUG_COUNTER_theap_alloc_fail
Definition: rb_mjit_min_header-2.7.2.h:11648
rb_cstr_to_dbl
double rb_cstr_to_dbl(const char *, int)
Parses a string representation of a floating point number.
Definition: object.c:3319
rb_path_to_class
VALUE rb_path_to_class(VALUE)
Definition: variable.c:226
pthread_spin_unlock
int pthread_spin_unlock(pthread_spinlock_t *)
rb_ary_cat
VALUE rb_ary_cat(VALUE, const VALUE *, long)
Definition: array.c:1208
RB_INT_PARSE_UNDERSCORE
@ RB_INT_PARSE_UNDERSCORE
Definition: rb_mjit_min_header-2.7.2.h:7898
ruby_mimmalloc
void * ruby_mimmalloc(size_t size) __attribute__((__malloc__))
Definition: gc.c:10207
pthread_attr_setinheritsched
int pthread_attr_setinheritsched(pthread_attr_t *, int)
rb_iseq_constant_body::ISEQ_TYPE_CLASS
@ ISEQ_TYPE_CLASS
Definition: vm_core.h:316
rb_warning
const char *void rb_warning(const char *,...) __attribute__((format(printf
tSingleton_method_undefined
@ tSingleton_method_undefined
Definition: rb_mjit_min_header-2.7.2.h:8581
_strdup_r
char * _strdup_r(struct _reent *, const char *)
_fpstate::datasel
__uint32_t datasel
Definition: rb_mjit_min_header-2.7.2.h:2051
rb_iseq_constant_body_alloc
struct rb_iseq_constant_body * rb_iseq_constant_body_alloc(void)
Definition: iseq.c:433
RUBY_T_NONE
@ RUBY_T_NONE
Definition: rb_mjit_min_header-2.7.2.h:4318
rb_hash_free
void rb_hash_free(VALUE)
rb_struct_define_without_accessor_under
VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc,...)
Definition: struct.c:405
Init_enc
void Init_enc(void)
Definition: dmyenc.c:5
pthread_barrierattr_setpshared
int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int)
RB_DEBUG_COUNTER_obj_hash_transient
@ RB_DEBUG_COUNTER_obj_hash_transient
Definition: rb_mjit_min_header-2.7.2.h:11606
rb_arithmetic_sequence_extract
int rb_arithmetic_sequence_extract(VALUE, rb_arithmetic_sequence_components_t *)
Definition: enumerator.c:3374
_reent::_nextf
unsigned char * _nextf[30]
Definition: rb_mjit_min_header-2.7.2.h:1102
strftime
size_t strftime(char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t)
__uint_least64_t
long long unsigned int __uint_least64_t
Definition: rb_mjit_min_header-2.7.2.h:639
rb_singleton_class_clone
VALUE rb_singleton_class_clone(VALUE)
Definition: class.c:370
iseq_compile_data::ensure_node_stack
struct iseq_compile_data_ensure_node_stack * ensure_node_stack
Definition: iseq.h:102
cookie_io_functions_t::write
cookie_write_function_t * write
Definition: rb_mjit_min_header-2.7.2.h:1825
rb_hash_values
VALUE rb_hash_values(VALUE hash)
Definition: hash.c:3456
rb_sym_interned_p
int rb_sym_interned_p(VALUE)
rb_iseq_realpath
VALUE rb_iseq_realpath(const rb_iseq_t *iseq)
Definition: iseq.c:1033
setvbuf
int setvbuf(FILE *__restrict, char *__restrict, int, size_t)
RHash::ar_hint
union RHash::@5 ar_hint
rb_obj_infect
void rb_obj_infect(VALUE victim, VALUE carrier)
Does nothing.
Definition: object.c:1068
__buf
__inline__ char * __buf
Definition: rb_mjit_min_header-2.7.2.h:3603
rb_vm_control_frame_id_and_class
int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp)
Definition: vm.c:2184
setjmp
int setjmp(jmp_buf __jmpb)
rb_callable_method_entry
const rb_callable_method_entry_t * rb_callable_method_entry(VALUE klass, ID id)
Definition: vm_method.c:878
rb_thread_struct::invoke_type
enum rb_thread_struct::@15 invoke_type
tm::tm_wday
int tm_wday
Definition: rb_mjit_min_header-2.7.2.h:1971
rb_int_negative_p
int rb_int_negative_p(VALUE num)
Definition: numeric.c:307
rb_fiber_reset_root_local_storage
void rb_fiber_reset_root_local_storage(struct rb_thread_struct *)
Definition: cont.c:2135
rb_data_type_struct::flags
VALUE flags
Definition: ruby.h:1161
strtoimax
intmax_t strtoimax(const char *__restrict, char **__restrict, int)
RUBY_ID_JUNK
@ RUBY_ID_JUNK
Definition: rb_mjit_min_header-2.7.2.h:8465
VALUE
unsigned long VALUE
Definition: ruby.h:102
_reent::_rand_next
__extension__ unsigned long long _rand_next
Definition: rb_mjit_min_header-2.7.2.h:1084
usleep
int usleep(useconds_t __useconds)
long
#define long
Definition: rb_mjit_min_header-2.7.2.h:2889
rb_serial_t
unsigned long long rb_serial_t
Definition: rb_mjit_min_header-2.7.2.h:6951
RB_DEBUG_COUNTER_mc_cme_complement
@ RB_DEBUG_COUNTER_mc_cme_complement
Definition: rb_mjit_min_header-2.7.2.h:11501
rb_str_cmp
int rb_str_cmp(VALUE, VALUE)
Definition: string.c:3228
rb_is_class_name
int rb_is_class_name(VALUE name)
Definition: symbol.c:1056
_reent::_result
struct _Bigint * _result
Definition: rb_mjit_min_header-2.7.2.h:1069
VM_CALL_ZSUPER_bit
@ VM_CALL_ZSUPER_bit
Definition: rb_mjit_min_header-2.7.2.h:9983
rb_gc_disable
VALUE rb_gc_disable(void)
Definition: gc.c:9249
isnanf
int isnanf(float)
rb_funcallv_public
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE *)
Calls a method.
Definition: vm_eval.c:980
rb_math_cos
VALUE rb_math_cos(VALUE)
__isinff
int __isinff(float x)
rb_module_new
VALUE rb_module_new(void)
Definition: class.c:758
YARVINSN_trace_branchnil
@ YARVINSN_trace_branchnil
Definition: rb_mjit_min_header-2.7.2.h:12105
rb_home_dir_of
VALUE rb_home_dir_of(VALUE user, VALUE result)
Definition: file.c:3536
NODE_POSTARG
@ NODE_POSTARG
Definition: rb_mjit_min_header-2.7.2.h:8117
rb_eArgError
VALUE rb_eArgError
Definition: error.c:925
bcmp
int bcmp(const void *, const void *, size_t) __attribute__((__pure__))
labs
long labs(long)
rb_ast_body_struct
Definition: node.h:394
rb_iseq_location_struct::code_location
rb_code_location_t code_location
Definition: vm_core.h:278
setbuffer
void setbuffer(FILE *, char *, int)
va_list
__gnuc_va_list va_list
Definition: rb_mjit_min_header-2.7.2.h:834
rb_cMethod
VALUE rb_cMethod
Definition: ruby.h:2033
rb_compile_warn
void rb_compile_warn(const char *, int, const char *,...) __attribute__((format(printf
rb_key_err_new
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name)
Definition: error.c:1909
rb_mod_init_copy
VALUE rb_mod_init_copy(VALUE, VALUE)
Definition: class.c:313
rb_get_expanded_load_path
VALUE rb_get_expanded_load_path(void)
Definition: load.c:92
DEFINED_REF
@ DEFINED_REF
Definition: rb_mjit_min_header-2.7.2.h:10864
BOP_MAX
@ BOP_MAX
Definition: rb_mjit_min_header-2.7.2.h:9626
strtoumax
uintmax_t strtoumax(const char *__restrict, char **__restrict, int)
YARVINSN_setblockparam
@ YARVINSN_setblockparam
Definition: rb_mjit_min_header-2.7.2.h:11942
METHOD_VISI_MASK
@ METHOD_VISI_MASK
Definition: rb_mjit_min_header-2.7.2.h:8732
rb_iseq_constant_body::jit_func
VALUE(* jit_func)(struct rb_execution_context_struct *, struct rb_control_frame_struct *)
Definition: rb_mjit_min_header-2.7.2.h:9560
strerror_l
char * strerror_l(int, locale_t)
strspn
size_t strspn(const char *, const char *)
RUBY_FL_PROMOTED
@ RUBY_FL_PROMOTED
Definition: ruby.h:845
intmax_t
__intmax_t intmax_t
Definition: rb_mjit_min_header-2.7.2.h:1184
YARVINSN_opt_setinlinecache
@ YARVINSN_opt_setinlinecache
Definition: rb_mjit_min_header-2.7.2.h:12004
rb_scope_visi_struct::method_visi
rb_method_visibility_t method_visi
Definition: rb_mjit_min_header-2.7.2.h:8735
drem
double drem(double, double)
RB_DEBUG_COUNTER_obj_hash_null
@ RB_DEBUG_COUNTER_obj_hash_null
Definition: rb_mjit_min_header-2.7.2.h:11603
cos
double cos(double)
len
__inline__ const void *__restrict size_t len
Definition: rb_mjit_min_header-2.7.2.h:2842
BOP_NEQ
@ BOP_NEQ
Definition: rb_mjit_min_header-2.7.2.h:9622
__mcontext::dr2
__uint32_t dr2
Definition: rb_mjit_min_header-2.7.2.h:2060
__mcontext::eip
__uint32_t eip
Definition: rb_mjit_min_header-2.7.2.h:2076
cuserid
char * cuserid(char *)
execvpe
int execvpe(const char *__file, char *const __argv[], char *const __envp[])
YARVINSN_setconstant
@ YARVINSN_setconstant
Definition: rb_mjit_min_header-2.7.2.h:11951
rb_eSyntaxError
VALUE rb_eSyntaxError
Definition: error.c:940
rb_classext_struct::class_serial
rb_serial_t class_serial
Definition: rb_mjit_min_header-2.7.2.h:6963
RBignum::digits
unsigned int * digits
Definition: rb_mjit_min_header-2.7.2.h:6798
rb_vm_block_ep_update
void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
Definition: rb_mjit_min_header-2.7.2.h:11467
rb_gvar_var_setter
rb_gvar_setter_t rb_gvar_var_setter
Definition: rb_mjit_min_header-2.7.2.h:5102
remainderf
float remainderf(float, float)
_reent::_reent
struct _reent::@8::@9 _reent
_fpurge_r
int int _fpurge_r(struct _reent *, FILE *)
__sFILE::_ub
struct __sbuf _ub
Definition: rb_mjit_min_header-2.7.2.h:994
stat::st_blocks
blkcnt_t st_blocks
Definition: rb_mjit_min_header-2.7.2.h:2404
YARVINSN_trace_opt_aset_with
@ YARVINSN_trace_opt_aset_with
Definition: rb_mjit_min_header-2.7.2.h:12126
_reent::_unused_rand
unsigned int _unused_rand
Definition: rb_mjit_min_header-2.7.2.h:1079
YARVINSN_getlocal
@ YARVINSN_getlocal
Definition: rb_mjit_min_header-2.7.2.h:11939
BOP_LAST_
@ BOP_LAST_
Definition: rb_mjit_min_header-2.7.2.h:9631
rb_rational_num
VALUE rb_rational_num(VALUE rat)
Definition: rational.c:1960
tMesg
@ tMesg
Definition: rb_mjit_min_header-2.7.2.h:8611
YARVINSN_putobject
@ YARVINSN_putobject
Definition: rb_mjit_min_header-2.7.2.h:11956
rb_iseq_constant_body::keyword
const struct rb_iseq_constant_body::@3::rb_iseq_param_keyword * keyword
int_fast16_t
int int_fast16_t
Definition: rb_mjit_min_header-2.7.2.h:2935
ruby_vm_const_missing_count
VALUE ruby_vm_const_missing_count
Definition: vm.c:371
rb_ary_to_s
VALUE rb_ary_to_s(VALUE)
Definition: array.c:2453
NODE_WHILE
@ NODE_WHILE
Definition: rb_mjit_min_header-2.7.2.h:8053
rb_gc_mark_movable
void rb_gc_mark_movable(VALUE)
Definition: gc.c:5209
MISSING_NOENTRY
@ MISSING_NOENTRY
Definition: rb_mjit_min_header-2.7.2.h:7806
rb_big_eql
VALUE rb_big_eql(VALUE, VALUE)
Definition: bignum.c:5544
rb_vm_struct::trap_list
struct rb_vm_struct::@9 trap_list
rb_iseq_compile_callback
VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func *ifunc)
Definition: compile.c:630
block_handler_type_iseq
@ block_handler_type_iseq
Definition: rb_mjit_min_header-2.7.2.h:9744
rb_st_foreach_with_replace
int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
NODE_FLIP2
@ NODE_FLIP2
Definition: rb_mjit_min_header-2.7.2.h:8134
nlink_t
__nlink_t nlink_t
Definition: rb_mjit_min_header-2.7.2.h:1331
rb_callable_method_entry_struct
Definition: method.h:59
YARVINSN_trace_opt_length
@ YARVINSN_trace_opt_length
Definition: rb_mjit_min_header-2.7.2.h:12128
setlinebuf
int setlinebuf(FILE *)
rb_get_path_check_to_string
VALUE rb_get_path_check_to_string(VALUE)
Definition: file.c:196
sigqueue
int sigqueue(pid_t, int, const union sigval)
RB_DEBUG_COUNTER_obj_str_embed
@ RB_DEBUG_COUNTER_obj_str_embed
Definition: rb_mjit_min_header-2.7.2.h:11585
ruby_reset_leap_second_info
void ruby_reset_leap_second_info(void)
Definition: time.c:1193
obj2
VALUE obj2
Definition: rb_mjit_min_header-2.7.2.h:7546
rb_complex_real
VALUE rb_complex_real(VALUE z)
Definition: complex.c:726
ualarm
useconds_t ualarm(useconds_t __useconds, useconds_t __interval)
rb_remove_method
const VALUE const VALUE *void rb_remove_method(VALUE, const char *)
Definition: vm_method.c:1032
idFreeze
@ idFreeze
Definition: rb_mjit_min_header-2.7.2.h:8651
ruby_run_node
int ruby_run_node(void *n)
Runs the given compiled source and exits this process.
Definition: eval.c:327
rb_thread_struct::proc
VALUE proc
Definition: vm_core.h:965
rb_cModule
VALUE rb_cModule
Module class.
Definition: ruby.h:2034
iseq_catch_table_entry
Definition: iseq.h:225
rb_cTime
VALUE rb_cTime
Definition: ruby.h:2048
rb_cProc
VALUE rb_cProc
Definition: ruby.h:2038
strchrnul
char * strchrnul(const char *, int)
rb_jmpbuf_t
void * rb_jmpbuf_t[5]
Definition: rb_mjit_min_header-2.7.2.h:9784
snprintf
#define snprintf(str, len,...)
Definition: rb_mjit_min_header-2.7.2.h:6585
RB_DEBUG_COUNTER_obj_match_ptr
@ RB_DEBUG_COUNTER_obj_match_ptr
Definition: rb_mjit_min_header-2.7.2.h:11618
NODE_GVAR
@ NODE_GVAR
Definition: rb_mjit_min_header-2.7.2.h:8096
__mcontext::cs
__uint32_t cs
Definition: rb_mjit_min_header-2.7.2.h:2077
rb_iseq_shared_exc_local_tbl
const ID rb_iseq_shared_exc_local_tbl[]
Definition: compile.c:110
pthread_attr_setstack
int pthread_attr_setstack(pthread_attr_t *, void *, size_t)
pipe
int pipe(int __fildes[2])
RB_DEBUG_COUNTER_mjit_exec_not_added_add_iseq
@ RB_DEBUG_COUNTER_mjit_exec_not_added_add_iseq
Definition: rb_mjit_min_header-2.7.2.h:11652
rb_const_entry_struct::value
VALUE value
Definition: constant.h:34
rb_arithmetic_sequence_components_t
Definition: intern.h:281
rresvport
int rresvport(int *__alport)
rb_mod_constants
VALUE rb_mod_constants(int, const VALUE *, VALUE)
Definition: variable.c:2630
RStruct::basic
struct RBasic basic
Definition: internal.h:943
RARRAY_EMBED_LEN_MASK
#define RARRAY_EMBED_LEN_MASK
__sFILE64::_close
int(* _close)(struct _reent *, void *)
Definition: rb_mjit_min_header-2.7.2.h:1023
rb_aligned_malloc
void * rb_aligned_malloc(size_t alignment, size_t size)
Definition: gc.c:9630
rb_f_send
VALUE rb_f_send(int argc, VALUE *argv, VALUE recv)
Definition: vm_eval.c:1188
rb_execarg_setenv
void rb_execarg_setenv(VALUE execarg_obj, VALUE env)
Definition: process.c:2646
rb_f_exit
VALUE rb_f_exit(int argc, const VALUE *argv)
Definition: process.c:4210
_fpstate::tag
__uint32_t tag
Definition: rb_mjit_min_header-2.7.2.h:2047
setprogname
void setprogname(const char *)
rb_name_err_new
VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method)
Definition: error.c:1594
rb_execarg::pgroup_given
unsigned pgroup_given
Definition: internal.h:2042
RObject::basic
struct RBasic basic
Definition: ruby.h:923
rb_args_info::pre_args_num
int pre_args_num
Definition: node.h:436
canonicalize_file_name
char * canonicalize_file_name(const char *)
_tmpnam_r
char * _tmpnam_r(struct _reent *, char *)
rb_iseq_struct::compile_data
struct iseq_compile_data * compile_data
Definition: vm_core.h:463
ruby_float_step
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless)
Definition: numeric.c:2524
RB_DEBUG_COUNTER_mjit_exec_not_added
@ RB_DEBUG_COUNTER_mjit_exec_not_added
Definition: rb_mjit_min_header-2.7.2.h:11651
isinff
int isinff(float)
RUBY_ID_LOCAL
@ RUBY_ID_LOCAL
Definition: rb_mjit_min_header-2.7.2.h:8459
RARRAY_TRANSIENT_FLAG
#define RARRAY_TRANSIENT_FLAG
rb_call_cache::call
VALUE(* call)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
Definition: internal.h:2382
YARVINSN_newrange
@ YARVINSN_newrange
Definition: rb_mjit_min_header-2.7.2.h:11972
_rand48::_mult
unsigned short _mult[3]
Definition: rb_mjit_min_header-2.7.2.h:1053
RUBY_ID_CLASS
@ RUBY_ID_CLASS
Definition: rb_mjit_min_header-2.7.2.h:8464
__signbitd
int __signbitd(double x)
idEqq
@ idEqq
Definition: rb_mjit_min_header-2.7.2.h:8533
YARVINSN_getlocal_WC_1
@ YARVINSN_getlocal_WC_1
Definition: rb_mjit_min_header-2.7.2.h:12036
rb_big_mul
VALUE rb_big_mul(VALUE, VALUE)
Definition: bignum.c:5933
YARVINSN_trace_opt_size
@ YARVINSN_trace_opt_size
Definition: rb_mjit_min_header-2.7.2.h:12129
idInitialize_clone
@ idInitialize_clone
Definition: rb_mjit_min_header-2.7.2.h:8675
rb_st_insert2
int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t(*)(st_data_t))
NODE_ARYPTN
@ NODE_ARYPTN
Definition: rb_mjit_min_header-2.7.2.h:8146
rb_code_position_struct
Definition: node.h:130
DEFINED_SELF
@ DEFINED_SELF
Definition: rb_mjit_min_header-2.7.2.h:10858
rb_method_iseq_t
struct rb_method_iseq_struct rb_method_iseq_t
_fgetpos_r
int _fgetpos_r(struct _reent *, FILE *, fpos_t *)
rb_method_definition_struct::type
rb_method_type_t type
Definition: rb_mjit_min_header-2.7.2.h:8841
pthread_rwlockattr_destroy
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *rwlockattr)
rb_parser_load_file
void * rb_parser_load_file(VALUE parser, VALUE name)
Definition: ruby.c:2205
DEFINED_CVAR
@ DEFINED_CVAR
Definition: rb_mjit_min_header-2.7.2.h:10853
rb_undef_alloc_func
void rb_undef_alloc_func(VALUE)
Definition: vm_method.c:722
__sFILE64::_up
unsigned char * _up
Definition: rb_mjit_min_header-2.7.2.h:1025
rb_int_pow
VALUE rb_int_pow(VALUE x, VALUE y)
Definition: numeric.c:4106
rb_check_convert_type
VALUE rb_check_convert_type(VALUE, int, const char *, const char *)
Tries to convert an object into another type.
Definition: object.c:2941
rb_obj_untrusted
VALUE rb_obj_untrusted(VALUE obj)
call-seq: obj.untrusted? -> false
Definition: object.c:1028
__ssp_real_confstr
size_t __ssp_real_confstr(int __name, char *__buf, size_t __len) __asm__("_" "confstr")
ruby_vm_event_flags
rb_event_flag_t ruby_vm_event_flags
Definition: vm.c:375
RUBY_T_FLOAT
@ RUBY_T_FLOAT
Definition: rb_mjit_min_header-2.7.2.h:4322
rb_iseq_struct::wrapper
VALUE wrapper
Definition: vm_core.h:458
__ssp_real_getlogin_r
int __ssp_real_getlogin_r(char *__buf, size_t __len) __asm__("_" "getlogin_r")
rb_gc_start
VALUE rb_gc_start(void)
Definition: gc.c:8675
rb_iseq_remove_coverage_all
void rb_iseq_remove_coverage_all(void)
Definition: iseq.c:1110
idPLUS
@ idPLUS
Definition: rb_mjit_min_header-2.7.2.h:8521
logbf
float logbf(float)
siglongjmp
#define siglongjmp(env, val)
Definition: rb_mjit_min_header-2.7.2.h:9369
strtof_l
float strtof_l(const char *__restrict, char **__restrict, locale_t)
rb_str_eql
VALUE rb_str_eql(VALUE str1, VALUE str2)
Definition: string.c:3287
rb_cvar_get
VALUE rb_cvar_get(VALUE, ID)
Definition: variable.c:3107
siginfo_t::si_uid
uid_t si_uid
Definition: rb_mjit_min_header-2.7.2.h:2122
rb_check_funcall_hook
void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE)
Definition: rb_mjit_min_header-2.7.2.h:7789
sigpending
int sigpending(sigset_t *)
rb_iseq_constant_body::bits_start
int bits_start
Definition: vm_core.h:392
rb_ary_plus
VALUE rb_ary_plus(VALUE, VALUE)
Definition: array.c:4000
__cygwin_lock_init_recursive
void __cygwin_lock_init_recursive(_LOCK_T *)
st_retval
st_retval
Definition: st.h:99
rb_thread_struct::func
VALUE(* func)(void *)
Definition: vm_core.h:970
RB_DEBUG_COUNTER_lvar_set_slowpath
@ RB_DEBUG_COUNTER_lvar_set_slowpath
Definition: rb_mjit_min_header-2.7.2.h:11559
YARVINSN_trace_opt_mult
@ YARVINSN_trace_opt_mult
Definition: rb_mjit_min_header-2.7.2.h:12112
idLE
@ idLE
Definition: rb_mjit_min_header-2.7.2.h:8529
rb_need_block
void rb_need_block(void)
Declares that the current method needs a block.
Definition: eval.c:932
ptsname
char * ptsname(int)
rb_ensure_list::entry
struct rb_ensure_entry entry
Definition: vm_core.h:836
sigevent::sigev_notify_attributes
pthread_attr_t * sigev_notify_attributes
Definition: rb_mjit_min_header-2.7.2.h:2097
_viscanf_r
int char char int int int int int int int int int _viscanf_r(struct _reent *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
Init_eval_method
void Init_eval_method(void)
Definition: vm_method.c:2281
rb_hash_bulk_insert
void rb_hash_bulk_insert(long, const VALUE *, VALUE)
Definition: hash.c:4590
_rand48::_seed
unsigned short _seed[3]
Definition: rb_mjit_min_header-2.7.2.h:1052
RRational
Definition: internal.h:788
rb_method_entry_set
rb_method_entry_t * rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex)
Definition: vm_method.c:707
iseq_catch_table_entry::end
unsigned int end
Definition: iseq.h:250
rb_secure
#define rb_secure(level)
RB_DEBUG_COUNTER_mjit_frame_JT2JT
@ RB_DEBUG_COUNTER_mjit_frame_JT2JT
Definition: rb_mjit_min_header-2.7.2.h:11658
rb_bool_expected
int rb_bool_expected(VALUE, const char *)
Definition: object.c:3112
rb_args_info::kw_rest_arg
NODE * kw_rest_arg
Definition: node.h:445
rb_assert_failure
MJIT_FUNC_EXPORTED void rb_assert_failure(const char *file, int line, const char *name, const char *expr)
Definition: error.c:718
pthread_mutexattr_getprioceiling
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *)
rb_execarg::waitpid_state
struct waitpid_state * waitpid_state
Definition: internal.h:2055
rb_define_module
VALUE rb_define_module(const char *)
Definition: class.c:772
rb_execarg::new_pgroup_given
unsigned new_pgroup_given
Definition: internal.h:2049
rb_backtrace
void rb_backtrace(void)
Definition: vm_backtrace.c:829
sync
void sync(void)
strnstr
char * strnstr(const char *, const char *, size_t) __attribute__((__pure__))
rb_method_attr_struct
Definition: method.h:137
NODE_TRUE
@ NODE_TRUE
Definition: rb_mjit_min_header-2.7.2.h:8138
pthread_mutexattr_destroy
int pthread_mutexattr_destroy(pthread_mutexattr_t *)
rb_method_entry_struct::def
struct rb_method_definition_struct *const def
Definition: method.h:54
rb_cFloat
VALUE rb_cFloat
Definition: ruby.h:2028
strcat
#define strcat(dst, src)
Definition: rb_mjit_min_header-2.7.2.h:2860
rintl
long double rintl(long double)
rb_mod_remove_const
VALUE rb_mod_remove_const(VALUE, VALUE)
Definition: variable.c:2483
rb_thread_struct::thread_id
rb_nativethread_id_t thread_id
Definition: vm_core.h:927
rb_mod_name
VALUE rb_mod_name(VALUE)
Definition: variable.c:102
rb_complex_uminus
VALUE rb_complex_uminus(VALUE z)
Definition: complex.c:758
clearerr
#define clearerr(p)
Definition: rb_mjit_min_header-2.7.2.h:1862
rb_big_clone
VALUE rb_big_clone(VALUE)
Definition: bignum.c:3020
RUBY_ELTS_SHARED
#define RUBY_ELTS_SHARED
RB_DEBUG_COUNTER_obj_imemo_env
@ RB_DEBUG_COUNTER_obj_imemo_env
Definition: rb_mjit_min_header-2.7.2.h:11632
rb_io_ascii8bit_binmode
VALUE rb_io_ascii8bit_binmode(VALUE)
Definition: io.c:5380
seteuid
int seteuid(uid_t __uid)
rb_global_vm_lock_struct
Definition: thread_pthread.h:48
CALL_INFO
struct rb_call_info * CALL_INFO
Definition: rb_mjit_min_header-2.7.2.h:10013
iseq_compile_data_ensure_node_stack
Definition: compile.c:104
setstate
char * setstate(char *)
__pthread_key_t
Definition: rb_mjit_min_header-2.7.2.h:1379
tNUMPARAM_5
@ tNUMPARAM_5
Definition: rb_mjit_min_header-2.7.2.h:8628
rb_float_gt
VALUE rb_float_gt(VALUE x, VALUE y)
Definition: numeric.c:1503
ctermid
char * ctermid(char *)
rb_hash_set_default_proc
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc)
Definition: hash.c:2242
rb_int_odd_p
VALUE rb_int_odd_p(VALUE num)
Definition: numeric.c:3222
rb_iseq_new_with_callback_callback_func::reserved
VALUE reserved
Definition: vm_core.h:1020
pthread_cond_signal
int pthread_cond_signal(pthread_cond_t *)
issetugid
int issetugid(void)
RB_DEBUG_COUNTER_frame_push
@ RB_DEBUG_COUNTER_frame_push
Definition: rb_mjit_min_header-2.7.2.h:11528
uint_fast16_t
unsigned int uint_fast16_t
Definition: rb_mjit_min_header-2.7.2.h:2936
rb_memhash
st_index_t rb_memhash(const void *ptr, long len)
Definition: random.c:1440
rb_big_abs
VALUE rb_big_abs(VALUE x)
Definition: bignum.c:6762
marker
const VALUE VALUE VALUE marker
Definition: rb_mjit_min_header-2.7.2.h:5738
rb_iseq_original_iseq
VALUE * rb_iseq_original_iseq(const rb_iseq_t *iseq)
Definition: compile.c:778
rb_const_source_location
VALUE rb_const_source_location(VALUE, ID)
Definition: variable.c:2461
truncl
long double truncl(long double)
iseq_compile_data::ci_kw_index
unsigned int ci_kw_index
Definition: iseq.h:116
rb_thread_struct::thread_invoke_type_none
@ thread_invoke_type_none
Definition: vm_core.h:976
MISSING_SUPER
@ MISSING_SUPER
Definition: rb_mjit_min_header-2.7.2.h:7811
rb_vm_frame_block_handler
VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.2.h:11355
YARVINSN_trace_setinstancevariable
@ YARVINSN_trace_setinstancevariable
Definition: rb_mjit_min_header-2.7.2.h:12050
_lrand48_r
long _lrand48_r(struct _reent *)
fpos_t
_fpos64_t fpos_t
Definition: rb_mjit_min_header-2.7.2.h:1474
rb_utf8_str_new_static
VALUE rb_utf8_str_new_static(const char *, long)
Definition: string.c:884
bzero
#define bzero(dst, len)
Definition: rb_mjit_min_header-2.7.2.h:2763
rb_execution_context_struct::ensure_list
rb_ensure_list_t * ensure_list
Definition: vm_core.h:869
lindex_t
unsigned long lindex_t
Definition: rb_mjit_min_header-2.7.2.h:11909
int_least64_t
__int_least64_t int_least64_t
Definition: rb_mjit_min_header-2.7.2.h:2929
stat::st_birthtim
timestruc_t st_birthtim
Definition: rb_mjit_min_header-2.7.2.h:2405
rb_ary_resurrect
VALUE rb_ary_resurrect(VALUE ary)
Definition: array.c:2251
SI_TIMER
#define SI_TIMER
Definition: rb_mjit_min_header-2.7.2.h:2190
YARVINSN_trace_toregexp
@ YARVINSN_trace_toregexp
Definition: rb_mjit_min_header-2.7.2.h:12065
isatty
int isatty(int __fildes)
umask
mode_t umask(mode_t __mask)
alias
const char * alias
Definition: nkf.c:1159
gethostid
long gethostid(void)
rb_iseq_insns_info_encode_positions
void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq)
Definition: iseq.c:595
idMethodMissing
@ idMethodMissing
Definition: rb_mjit_min_header-2.7.2.h:8656
VM_METHOD_TYPE_NOTIMPLEMENTED
@ VM_METHOD_TYPE_NOTIMPLEMENTED
Definition: rb_mjit_min_header-2.7.2.h:8800
stat::st_nlink
nlink_t st_nlink
Definition: rb_mjit_min_header-2.7.2.h:2395
rb_method_definition_create
rb_method_definition_t * rb_method_definition_create(rb_method_type_t type, ID mid)
Definition: vm_method.c:348
rb_iseq_constant_body::ISEQ_TYPE_EVAL
@ ISEQ_TYPE_EVAL
Definition: vm_core.h:319
idRespond_to_missing
@ idRespond_to_missing
Definition: rb_mjit_min_header-2.7.2.h:8553
rb_st_shift
int rb_st_shift(st_table *, st_data_t *, st_data_t *)
idIntern
@ idIntern
Definition: rb_mjit_min_header-2.7.2.h:8653
rb_const_flag_t
rb_const_flag_t
Definition: constant.h:14
rb_call_super
VALUE rb_call_super(int, const VALUE *)
Definition: vm_eval.c:306
NODE_XSTR
@ NODE_XSTR
Definition: rb_mjit_min_header-2.7.2.h:8108
YARVINSN_trace_getblockparam
@ YARVINSN_trace_getblockparam
Definition: rb_mjit_min_header-2.7.2.h:12044
rb_vm_struct::loaded_features
VALUE loaded_features
Definition: vm_core.h:619
rb_thread_fd_select
int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *)
Definition: thread.c:4067
entries
struct iseq_catch_table_entry entries[]
rb_iseq_remove_local_tracepoint_recursively
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval)
Definition: iseq.c:3262
idLAST_OP_ID
@ idLAST_OP_ID
Definition: rb_mjit_min_header-2.7.2.h:8723
tTOKEN_CONST_BEGIN
@ tTOKEN_CONST_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8641
rb_thread_io_blocking_region
VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd)
Definition: thread.c:1595
rb_funcall_passing_block_kw
VALUE rb_funcall_passing_block_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:1039
idNOT
@ idNOT
Definition: rb_mjit_min_header-2.7.2.h:8695
rb_args_info::post_init
NODE * post_init
Definition: node.h:434
RB_DEBUG_COUNTER_mjit_cancel
@ RB_DEBUG_COUNTER_mjit_cancel
Definition: rb_mjit_min_header-2.7.2.h:11660
YARVINSN_trace_opt_setinlinecache
@ YARVINSN_trace_opt_setinlinecache
Definition: rb_mjit_min_header-2.7.2.h:12107
pthread_continue
int pthread_continue(pthread_t)
sig_t
_sig_func_ptr sig_t
Definition: rb_mjit_min_header-2.7.2.h:2344
rb_thread_struct::to_kill
unsigned int to_kill
Definition: vm_core.h:933
rb_execarg::gid_given
unsigned gid_given
Definition: internal.h:2052
CONST_DEPRECATED
@ CONST_DEPRECATED
Definition: rb_mjit_min_header-2.7.2.h:12149
YARVINSN_trace_pop
@ YARVINSN_trace_pop
Definition: rb_mjit_min_header-2.7.2.h:12076
_vfprintf_r
int char char int int int int int int _vfprintf_r(struct _reent *, FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
uint64_t
unsigned long long uint64_t
Definition: sha2.h:102
idBt_locations
@ idBt_locations
Definition: rb_mjit_min_header-2.7.2.h:8690
SI_MESGQ
#define SI_MESGQ
Definition: rb_mjit_min_header-2.7.2.h:2189
rb_global_entry
struct rb_global_entry * rb_global_entry(ID)
Definition: variable.c:326
rb_vm_struct::living_thread_num
int living_thread_num
Definition: vm_core.h:597
RNode::apinfo
struct rb_ary_pattern_info * apinfo
Definition: node.h:169
rb_eSignal
VALUE rb_eSignal
Definition: error.c:919
rb_parser_compile_generic
rb_ast_t * rb_parser_compile_generic(VALUE vparser, VALUE(*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line)
Definition: ripper.c:12913
rb_global_vm_lock_struct::switch_wait_cond
rb_nativethread_cond_t switch_wait_cond
Definition: thread_pthread.h:70
mkstemps
int mkstemps(char *, int)
ruby_dtrace_method_hook_args::name
volatile VALUE name
Definition: probes_helper.h:12
_glue
Definition: rb_mjit_min_header-2.7.2.h:1039
YARVINSN_concatstrings
@ YARVINSN_concatstrings
Definition: rb_mjit_min_header-2.7.2.h:11959
VM_METHOD_TYPE_ISEQ
@ VM_METHOD_TYPE_ISEQ
Definition: rb_mjit_min_header-2.7.2.h:8792
endusershell
void endusershell(void)
_siprintf_r
int int _siprintf_r(struct _reent *, char *, const char *,...) __attribute__((__format__(__printf__
idGets
@ idGets
Definition: rb_mjit_min_header-2.7.2.h:8665
NODE_BLOCK_PASS
@ NODE_BLOCK_PASS
Definition: rb_mjit_min_header-2.7.2.h:8121
rb_iseq_constant_body::location
rb_iseq_location_t location
Definition: vm_core.h:399
rb_vm_search_method_slowpath
MJIT_FUNC_EXPORTED void rb_vm_search_method_slowpath(struct rb_call_data *cd, VALUE klass)
Definition: vm_insnhelper.c:1467
rb_inspect
VALUE rb_inspect(VALUE)
Convenient wrapper of Object::inspect.
Definition: object.c:551
rb_num_get_rounding_option
enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts)
Definition: numeric.c:200
RMODULE_ENUM_END
@ RMODULE_ENUM_END
Definition: ruby.h:959
sincos
void sincos(double, double *, double *)
pthread_attr_getstacksize
int pthread_attr_getstacksize(const pthread_attr_t *, size_t *)
fputs
int fputs(const char *__restrict, FILE *__restrict)
_off64_t
__extension__ typedef long long _off64_t
Definition: rb_mjit_min_header-2.7.2.h:877
rb_code_position_struct::lineno
int lineno
Definition: node.h:131
crypt
char * crypt(const char *__key, const char *__salt)
rb_vm_call_kw
VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc, const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat)
Definition: vm_eval.c:265
RIMemo::v0
VALUE v0
Definition: internal.h:1126
rb_struct_define
VALUE rb_struct_define(const char *,...)
Definition: struct.c:431
VM_FRAME_MAGIC_EVAL
@ VM_FRAME_MAGIC_EVAL
Definition: rb_mjit_min_header-2.7.2.h:10031
rb_obj_method
VALUE rb_obj_method(VALUE, VALUE)
Definition: proc.c:1861
rb_time_timespec_new
VALUE rb_time_timespec_new(const struct timespec *, int)
Returns a time object with UTC/localtime/fixed offset.
Definition: time.c:2530
YARVINSN_trace_opt_str_freeze
@ YARVINSN_trace_opt_str_freeze
Definition: rb_mjit_min_header-2.7.2.h:12093
rb_id_table
Definition: id_table.c:40
ruby_stack_check
int ruby_stack_check(void)
Definition: gc.c:4674
__pthread_cond_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1383
rb_obj_untaint
VALUE rb_obj_untaint(VALUE)
call-seq: obj.untaint -> obj
Definition: object.c:1014
mjit_opts
struct mjit_options mjit_opts
Definition: mjit_worker.c:174
isnan
#define isnan(__x)
Definition: rb_mjit_min_header-2.7.2.h:3687
YARVINSN_opt_ge
@ YARVINSN_opt_ge
Definition: rb_mjit_min_header-2.7.2.h:12017
RUBY_NUM_ROUND_HALF_EVEN
@ RUBY_NUM_ROUND_HALF_EVEN
Definition: rb_mjit_min_header-2.7.2.h:7431
ROBJECT_EMBED_LEN_MAX
#define ROBJECT_EMBED_LEN_MAX
BOP_EQ
@ BOP_EQ
Definition: rb_mjit_min_header-2.7.2.h:9607
rb_iseq_constant_body::local_iseq
struct rb_iseq_struct * local_iseq
Definition: vm_core.h:418
pthread_once
int pthread_once(pthread_once_t *, void(*)(void))
id_core_set_method_alias
@ id_core_set_method_alias
Definition: rb_mjit_min_header-2.7.2.h:8556
VM_FRAME_FLAG_CFRAME
@ VM_FRAME_FLAG_CFRAME
Definition: rb_mjit_min_header-2.7.2.h:10038
__ssp_real_getcwd
char * __ssp_real_getcwd(char *__buf, size_t __len) __asm__("_" "getcwd")
YARVINSN_trace_getblockparamproxy
@ YARVINSN_trace_getblockparamproxy
Definition: rb_mjit_min_header-2.7.2.h:12046
rb_thread_shield_new
VALUE rb_thread_shield_new(void)
Definition: thread.c:4790
rb_execution_context_struct::tag
struct rb_vm_tag * tag
Definition: vm_core.h:849
int_least32_t
__int_least32_t int_least32_t
Definition: rb_mjit_min_header-2.7.2.h:2926
RB_DEBUG_COUNTER_mc_global_hit
@ RB_DEBUG_COUNTER_mc_global_hit
Definition: rb_mjit_min_header-2.7.2.h:11497
pthread_condattr_getclock
int pthread_condattr_getclock(const pthread_condattr_t *, clockid_t *)
rb_str2big_normal
VALUE rb_str2big_normal(VALUE arg, int base, int badcheck)
Definition: bignum.c:4310
id_t
__id_t id_t
Definition: rb_mjit_min_header-2.7.2.h:1311
rb_fiber_init_mjit_cont
void rb_fiber_init_mjit_cont(struct rb_fiber_struct *fiber)
Definition: cont.c:1135
jn
double jn(int, double)
pthread_setcancelstate
int pthread_setcancelstate(int, int *)
rb_stdin
VALUE rb_stdin
Definition: ruby.h:2090
atexit
int atexit(void(*__func)(void))
__int32_t
int __int32_t
Definition: rb_mjit_min_header-2.7.2.h:623
YARVINSN_trace_opt_invokebuiltin_delegate
@ YARVINSN_trace_opt_invokebuiltin_delegate
Definition: rb_mjit_min_header-2.7.2.h:12136
kill
int kill(pid_t, int)
Definition: win32.c:4789
call_type
call_type
Definition: rb_mjit_min_header-2.7.2.h:17140
YARVINSN_trace_putobject_INT2FIX_0_
@ YARVINSN_trace_putobject_INT2FIX_0_
Definition: rb_mjit_min_header-2.7.2.h:12142
rb_f_exec
VALUE rb_f_exec(int argc, const VALUE *argv)
Definition: process.c:2882
RSTRING_EMBED_LEN_SHIFT
#define RSTRING_EMBED_LEN_SHIFT
RStruct::as
union RStruct::@6 as
pthread_mutex_t
struct __pthread_mutex_t * pthread_mutex_t
rb_method_definition_struct::optimize_type
enum method_optimized_type optimize_type
Definition: method.h:176
unlinkat
int unlinkat(int, const char *, int)
vasniprintf
int int int int int int int int char char int int int int int int int int int char * vasniprintf(char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
fill_values_arg::keys
VALUE * keys
Definition: vm_args.c:557
exc
const rb_iseq_t const VALUE exc
Definition: rb_mjit_min_header-2.7.2.h:13469
RNode::tbl
ID * tbl
Definition: node.h:155
RRegexp::ptr
struct re_pattern_buffer * ptr
Definition: ruby.h:1114
rb_eIndexError
VALUE rb_eIndexError
Definition: error.c:926
rb_method_definition_struct::refined
rb_method_refined_t refined
Definition: method.h:173
rb_method_iseq_struct
Definition: method.h:126
rb_frame_method_id_and_class
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp)
Definition: vm.c:2206
rb_const_list
VALUE rb_const_list(void *)
Definition: variable.c:2598
rb_st_insert
int rb_st_insert(st_table *, st_data_t, st_data_t)
nanl
long double nanl(const char *)
rb_ec_initialize_vm_stack
void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
Definition: vm.c:2683
timingsafe_bcmp
int timingsafe_bcmp(const void *, const void *, size_t)
RB_DEBUG_COUNTER_mjit_exec
@ RB_DEBUG_COUNTER_mjit_exec
Definition: rb_mjit_min_header-2.7.2.h:11650
rb_iseq_location_struct::first_lineno
VALUE first_lineno
Definition: vm_core.h:276
rb_file_expand_path
VALUE rb_file_expand_path(VALUE, VALUE)
Definition: file.c:4018
rb_cArithSeq
VALUE rb_cArithSeq
Definition: enumerator.c:180
pthread_condattr_setpshared
int pthread_condattr_setpshared(pthread_condattr_t *, int)
rb_hash_tbl
struct st_table * rb_hash_tbl(VALUE, const char *file, int line)
Definition: hash.c:1601
rb_method_visibility_t
rb_method_visibility_t
Definition: method.h:26
rb_hash_lookup2
VALUE rb_hash_lookup2(VALUE, VALUE, VALUE)
Definition: hash.c:2050
rb_big_comp
VALUE rb_big_comp(VALUE x)
Definition: bignum.c:5564
NODE_MATCH2
@ NODE_MATCH2
Definition: rb_mjit_min_header-2.7.2.h:8103
rb_is_attrset_sym
int rb_is_attrset_sym(VALUE sym)
Definition: symbol.c:902
rb_ensure_entry::marker
VALUE marker
Definition: vm_core.h:829
rb_float_equal
VALUE rb_float_equal(VALUE x, VALUE y)
Definition: numeric.c:1383
builtin_binary::bin
const unsigned char * bin
Definition: builtin.h:74
NODE_OP_ASGN2
@ NODE_OP_ASGN2
Definition: rb_mjit_min_header-2.7.2.h:8077
rb_iseq_absolute_path
VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq)
Definition: iseq.c:1039
ruby_init_stack
void ruby_init_stack(volatile VALUE *)
ungetc
int ungetc(int, FILE *)
rb_free_generic_ivar
void rb_free_generic_ivar(VALUE)
Definition: variable.c:993
rb_Float
VALUE rb_Float(VALUE)
Equivalent to Kernel#Float in Ruby.
Definition: object.c:3493
__mcontext::ss
__uint32_t ss
Definition: rb_mjit_min_header-2.7.2.h:2080
rb_gvar_val_getter
rb_gvar_getter_t rb_gvar_val_getter
Definition: rb_mjit_min_header-2.7.2.h:5098
YARVINSN_trace_opt_succ
@ YARVINSN_trace_opt_succ
Definition: rb_mjit_min_header-2.7.2.h:12131
ruby_error_nomemory
@ ruby_error_nomemory
Definition: rb_mjit_min_header-2.7.2.h:9595
rb_find_file_ext
int rb_find_file_ext(VALUE *, const char *const *)
Definition: file.c:6270
rb_define_readonly_variable
void rb_define_readonly_variable(const char *, const VALUE *)
Definition: variable.c:505
__strncat_chk
char * __strncat_chk(char *, const char *, size_t, size_t)
__uint64_t
long long unsigned int __uint64_t
Definition: rb_mjit_min_header-2.7.2.h:627
rb_class_detach_module_subclasses
void rb_class_detach_module_subclasses(VALUE)
Definition: class.c:145
vm_svar::backref
const VALUE backref
Definition: internal.h:1185
wctomb
int wctomb(char *, wchar_t)
mkdir
int mkdir(const char *_path, mode_t __mode)
rb_vm_block_copy
void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src)
Definition: vm.c:885
rb_vm_tag::prev
struct rb_vm_tag * prev
Definition: vm_core.h:803
rb_st_copy
st_table * rb_st_copy(st_table *)
rb_method_refined_struct::orig_me
struct rb_method_entry_struct * orig_me
Definition: method.h:147
RHASH_TRANSIENT_FLAG
@ RHASH_TRANSIENT_FLAG
Definition: rb_mjit_min_header-2.7.2.h:6847
ruby_error_sysstack
@ ruby_error_sysstack
Definition: rb_mjit_min_header-2.7.2.h:9596
rb_code_position_t
struct rb_code_position_struct rb_code_position_t
getprogname
const char * getprogname(void)
rb_iseq_pathobj_new
VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath)
Definition: iseq.c:450
rb_mWaitReadable
VALUE rb_mWaitReadable
Definition: ruby.h:2006
YARVINSN_opt_le
@ YARVINSN_opt_le
Definition: rb_mjit_min_header-2.7.2.h:12015
rb_iseq_struct::index
int index
Definition: vm_core.h:467
rb_str_new_shared
VALUE rb_str_new_shared(VALUE)
Definition: string.c:1197
YARVINSN_opt_case_dispatch
@ YARVINSN_opt_case_dispatch
Definition: rb_mjit_min_header-2.7.2.h:12006
RB_DEBUG_COUNTER_obj_struct_transient
@ RB_DEBUG_COUNTER_obj_struct_transient
Definition: rb_mjit_min_header-2.7.2.h:11609
pthread_once_t::state
int state
Definition: rb_mjit_min_header-2.7.2.h:1389
rb_mod_syserr_fail
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
Definition: error.c:2851
VM_CALL_KW_SPLAT_bit
@ VM_CALL_KW_SPLAT_bit
Definition: rb_mjit_min_header-2.7.2.h:9980
rb_register_sigaltstack
void * rb_register_sigaltstack(void)
idSingleton_method_added
@ idSingleton_method_added
Definition: rb_mjit_min_header-2.7.2.h:8658
rb_obj_is_thread
VALUE rb_obj_is_thread(VALUE obj)
Definition: vm.c:2655
mode_t
__mode_t mode_t
Definition: rb_mjit_min_header-2.7.2.h:1329
rb_str_resurrect
VALUE rb_str_resurrect(VALUE str)
Definition: string.c:1522
__pthread_barrier_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1385
rb_catch_obj
VALUE rb_catch_obj(VALUE, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2332
max_argc
const rb_iseq_t const int const int const int max_argc
Definition: rb_mjit_min_header-2.7.2.h:13470
Init_newline
void Init_newline(void)
rb_ruby_debug_ptr
VALUE * rb_ruby_debug_ptr(void)
Definition: vm.c:3381
list_node::prev
struct list_node * prev
Definition: rb_mjit_min_header-2.7.2.h:8937
rb_reg_new
VALUE rb_reg_new(const char *, long, int)
Definition: re.c:2947
rb_external_str_new_cstr
#define rb_external_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6119
cookie_close_function_t
int cookie_close_function_t(void *__cookie)
Definition: rb_mjit_min_header-2.7.2.h:1821
rb_dtrace_setup
MJIT_FUNC_EXPORTED int rb_dtrace_setup(rb_execution_context_t *ec, VALUE klass, ID id, struct ruby_dtrace_method_hook_args *args)
Definition: vm.c:392
ruby_digit36_to_number_table
const signed char ruby_digit36_to_number_table[]
Definition: escape.c:6
rb_big_div
VALUE rb_big_div(VALUE, VALUE)
Definition: bignum.c:6091
rb_captured_block::self
VALUE self
Definition: vm_core.h:728
tNUMPARAM_1
@ tNUMPARAM_1
Definition: rb_mjit_min_header-2.7.2.h:8624
tm::tm_sec
int tm_sec
Definition: rb_mjit_min_header-2.7.2.h:1965
fileno
int fileno(FILE *)
MEMO::reserved
VALUE reserved
Definition: internal.h:1280
rb_usascii_str_new
#define rb_usascii_str_new(str, len)
Definition: rb_mjit_min_header-2.7.2.h:6114
sbrk
void * sbrk(ptrdiff_t __incr)
rb_vm_bh_to_procval
MJIT_STATIC VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
Definition: rb_mjit_min_header-2.7.2.h:12321
rb_make_exception
VALUE rb_make_exception(int, const VALUE *)
Make an Exception object from the list of arguments in a manner similar to Kernel#raise.
Definition: eval.c:851
NOT_READY_JIT_ISEQ_FUNC
@ NOT_READY_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.2.h:11688
RUBY_TAG_RETRY
@ RUBY_TAG_RETRY
Definition: rb_mjit_min_header-2.7.2.h:9395
tERROR_INFO
@ tERROR_INFO
Definition: rb_mjit_min_header-2.7.2.h:8639
ruby_id_types
ruby_id_types
Definition: id.h:16
rb_gets
VALUE rb_gets(void)
Definition: io.c:8902
vdiprintf
int int int int int int int int char char int int int int int int int int int char char int vdiprintf(int, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_str_to_dbl
double rb_str_to_dbl(VALUE, int)
Parses a string representation of a floating point number.
Definition: object.c:3371
CDHASH
VALUE CDHASH
Definition: vm_core.h:1136
rb_singleton_class_get
VALUE rb_singleton_class_get(VALUE obj)
Returns the singleton class of obj, or nil if obj is not a singleton object.
Definition: class.c:1694
ruby_enable_coredump
int ruby_enable_coredump
Definition: signal.c:1481
tTOKEN_INSTANCE_END
@ tTOKEN_INSTANCE_END
Definition: rb_mjit_min_header-2.7.2.h:8635
rb_mjit_compile_info::disable_inlining
_Bool disable_inlining
Definition: rb_mjit_min_header-2.7.2.h:11706
mknodat
int mknodat(int, const char *, mode_t, dev_t)
rb_vm_trap_exit
void rb_vm_trap_exit(rb_vm_t *vm)
Definition: signal.c:1060
pow
double pow(double, double)
idInspect
@ idInspect
Definition: rb_mjit_min_header-2.7.2.h:8652
rb_obj_copy_ivar
void rb_obj_copy_ivar(VALUE dest, VALUE obj)
Definition: object.c:247
dprintf
int dprintf(int, const char *__restrict,...) __attribute__((__format__(__printf__
rb_eNameError
VALUE rb_eNameError
Definition: error.c:929
fchownat
int fchownat(int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags)
log1pf
float log1pf(float)
RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject
Definition: rb_mjit_min_header-2.7.2.h:11552
rb_signal_exec
int rb_signal_exec(rb_thread_t *th, int sig)
Definition: signal.c:1082
rb_reserved_fd_p
int rb_reserved_fd_p(int fd)
rb_int_lshift
VALUE rb_int_lshift(VALUE x, VALUE y)
Definition: numeric.c:4583
rb_eIOError
VALUE rb_eIOError
Definition: ruby.h:2064
rb_ary_each
VALUE rb_ary_each(VALUE)
Definition: array.c:2129
rb_call_cache::method_serial
uintptr_t method_serial
Definition: internal.h:2380
pthread_cond_init
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *)
rb_vm_make_binding
VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp)
Definition: vm.c:953
iseq_inline_storage_entry::cache
struct iseq_inline_cache_entry cache
Definition: vm_core.h:236
NODE_MATCH3
@ NODE_MATCH3
Definition: rb_mjit_min_header-2.7.2.h:8104
RData::data
void * data
Definition: ruby.h:1143
timer_settime
int timer_settime(timer_t timerid, int flags, const struct itimerspec *__restrict value, struct itimerspec *__restrict ovalue)
memset
#define memset(dst, val, len)
Definition: rb_mjit_min_header-2.7.2.h:2856
YARVINSN_trace_opt_getinlinecache
@ YARVINSN_trace_opt_getinlinecache
Definition: rb_mjit_min_header-2.7.2.h:12106
rb_iseq_constant_body::accepts_no_kwarg
unsigned int accepts_no_kwarg
Definition: vm_core.h:361
rb_complex_plus
VALUE rb_complex_plus(VALUE x, VALUE y)
Definition: complex.c:778
rb_freeze_singleton_class
void rb_freeze_singleton_class(VALUE x)
Definition: class.c:1674
RString::shared
VALUE shared
Definition: ruby.h:996
rb_calling_info
Definition: vm_core.h:250
erf
double erf(double)
Definition: erf.c:71
ptr
struct RIMemo * ptr
Definition: debug.c:65
rewind
void rewind(FILE *)
RB_DEBUG_COUNTER_obj_ary_extracapa
@ RB_DEBUG_COUNTER_obj_ary_extracapa
Definition: rb_mjit_min_header-2.7.2.h:11592
__pthread_cleanup_handler
struct _pthread_cleanup_handler __pthread_cleanup_handler
vfiscanf
int int int int int int int int char char int int int int int int int int int char char int int int vfiscanf(FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_str_buf_new_cstr
#define rb_str_buf_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6121
rb_threadptr_check_signal
void rb_threadptr_check_signal(rb_thread_t *mth)
Definition: thread.c:4318
rb_usascii_str_new_static
VALUE rb_usascii_str_new_static(const char *, long)
Definition: string.c:878
rb_last_status_set
void rb_last_status_set(int status, pid_t pid)
rb_call_cache::method_state
rb_serial_t method_state
Definition: internal.h:2363
vm_ifunc
IFUNC (Internal FUNCtion)
Definition: internal.h:1215
iseq_inline_cache_entry::value
VALUE value
Definition: vm_core.h:223
rb_gc_mark_machine_stack
void rb_gc_mark_machine_stack(const rb_execution_context_t *ec)
Definition: gc.c:4984
sched_getparam
int sched_getparam(pid_t __pid, struct sched_param *__param)
stat::st_dev
dev_t st_dev
Definition: rb_mjit_min_header-2.7.2.h:2392
__isnanf
int __isnanf(float x)
_fpos64_t
_off64_t _fpos64_t
Definition: rb_mjit_min_header-2.7.2.h:881
ILL_PRVREG
#define ILL_PRVREG
Definition: rb_mjit_min_header-2.7.2.h:2198
rb_class_subclass_add
void rb_class_subclass_add(VALUE super, VALUE klass)
Definition: class.c:36
rb_struct_s_members
VALUE rb_struct_s_members(VALUE)
Definition: struct.c:58
rb_thread_struct::invoke_arg
union rb_thread_struct::@14 invoke_arg
VM_METHOD_TYPE_ALIAS
@ VM_METHOD_TYPE_ALIAS
Definition: rb_mjit_min_header-2.7.2.h:8798
DEFINED_FUNC
@ DEFINED_FUNC
Definition: rb_mjit_min_header-2.7.2.h:10865
VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM
@ VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM
Definition: rb_mjit_min_header-2.7.2.h:10040
__tzrule_struct::s
int s
Definition: rb_mjit_min_header-2.7.2.h:2012
RHASH_PASS_AS_KEYWORDS
@ RHASH_PASS_AS_KEYWORDS
Definition: rb_mjit_min_header-2.7.2.h:6838
rb_rational_raw
VALUE rb_rational_raw(VALUE, VALUE)
Definition: rational.c:1939
NODE_CONST
@ NODE_CONST
Definition: rb_mjit_min_header-2.7.2.h:8098
rb_autoload_p
VALUE rb_autoload_p(VALUE, ID)
Definition: variable.c:2285
rb_st_locale_insensitive_strncasecmp
int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)
rb_method_entry_at
const rb_method_entry_t * rb_method_entry_at(VALUE obj, ID id)
Definition: vm_method.c:756
rb_float_value
#define rb_float_value(v)
Definition: rb_mjit_min_header-2.7.2.h:7543
_vasiprintf_r
int _vasiprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
__sFILE64::_ur
int _ur
Definition: rb_mjit_min_header-2.7.2.h:1026
rb_Integer
VALUE rb_Integer(VALUE)
Equivalent to Kernel#Integer in Ruby.
Definition: object.c:3106
rb_method_iseq_struct::iseqptr
rb_iseq_t * iseqptr
iseq pointer, should be separated from iseqval
Definition: method.h:127
cmp_opt_data::opt_inited
unsigned int opt_inited
Definition: internal.h:1324
tTOKEN_GLOBAL_END
@ tTOKEN_GLOBAL_END
Definition: rb_mjit_min_header-2.7.2.h:8640
rb_call_info_kw_arg::keyword_len
int keyword_len
Definition: vm_core.h:241
rb_loaderror
void rb_loaderror(const char *fmt,...)
Definition: error.c:2690
__sFILE::_flags
short _flags
Definition: vsnprintf.c:175
rb_str_buf_append
VALUE rb_str_buf_append(VALUE, VALUE)
Definition: string.c:2950
rb_spawn
pid_t rb_spawn(int, const VALUE *)
Definition: process.c:4448
rb_fd_isset
int rb_fd_isset(int, const rb_fdset_t *)
rb_hash_tbl_raw
struct st_table * rb_hash_tbl_raw(VALUE hash)
Definition: hash.c:1594
_rand48
Definition: rb_mjit_min_header-2.7.2.h:1051
rb_fiber_yield_kw
VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2123
__memcpy_chk
void * __memcpy_chk(void *, const void *, size_t, size_t)
_mbtowc_r
int _mbtowc_r(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *)
tNOT
@ tNOT
Definition: rb_mjit_min_header-2.7.2.h:8614
ruby_vm_destruct
int ruby_vm_destruct(ruby_vm_t *vm)
RObject::as
union RObject::@0 as
VM_SVAR_BACKREF
@ VM_SVAR_BACKREF
Definition: rb_mjit_min_header-2.7.2.h:10006
rb_cloexec_dup
int rb_cloexec_dup(int oldfd)
Definition: io.c:318
ruby_vm_event_local_num
unsigned int ruby_vm_event_local_num
Definition: vm.c:377
SI_KERNEL
#define SI_KERNEL
Definition: rb_mjit_min_header-2.7.2.h:2192
rb_execarg::unsetenv_others_given
unsigned unsetenv_others_given
Definition: internal.h:2044
rb_ary_reverse
VALUE rb_ary_reverse(VALUE)
Definition: array.c:2544
rb_num2long
long rb_num2long(VALUE)
Definition: numeric.c:2849
__locale_mb_cur_max
int __locale_mb_cur_max(void)
rb_cstr2inum
VALUE rb_cstr2inum(const char *, int)
Definition: bignum.c:4538
uintptr_t
unsigned int uintptr_t
Definition: win32.h:106
ruby_hdtoa
char * ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve)
rb_iseq_constant_body::param
struct rb_iseq_constant_body::@3 param
parameter information
RTypedData::data
void * data
Definition: ruby.h:1172
OFFSET
long OFFSET
Definition: vm_exec.h:15
BOP_GE
@ BOP_GE
Definition: rb_mjit_min_header-2.7.2.h:9620
unlink
int unlink(const char *__path)
rb_memory_id
VALUE rb_memory_id(VALUE)
Definition: gc.c:3740
pthread_rwlock_t
struct __pthread_rwlock_t * pthread_rwlock_t
YARVINSN_trace_leave
@ YARVINSN_trace_leave
Definition: rb_mjit_min_header-2.7.2.h:12100
RB_DEBUG_COUNTER_mjit_length_unit_queue
@ RB_DEBUG_COUNTER_mjit_length_unit_queue
Definition: rb_mjit_min_header-2.7.2.h:11665
nanosleep
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
RHash::st
st_table * st
Definition: internal.h:890
__useconds_t
unsigned long __useconds_t
Definition: rb_mjit_min_header-2.7.2.h:909
rb_const_source_location_at
VALUE rb_const_source_location_at(VALUE, ID)
Definition: variable.c:2467
_seed48_r
unsigned short * _seed48_r(struct _reent *, unsigned short[3])
VM_FRAME_MAGIC_DUMMY
@ VM_FRAME_MAGIC_DUMMY
Definition: rb_mjit_min_header-2.7.2.h:10033
rb_execarg::argv_buf
VALUE argv_buf
Definition: internal.h:2034
rb_cClass
VALUE rb_cClass
Class class.
Definition: ruby.h:2016
RObject::ary
VALUE ary[ROBJECT_EMBED_LEN_MAX]
Definition: ruby.h:930
tTOKEN_CLASS_END
@ tTOKEN_CLASS_END
Definition: rb_mjit_min_header-2.7.2.h:8644
RNode::flags
VALUE flags
Definition: node.h:150
open_memstream
FILE * open_memstream(char **, size_t *)
rb_method_entry_struct::owner
VALUE owner
Definition: method.h:56
cmp_optimizable_count
@ cmp_optimizable_count
Definition: rb_mjit_min_header-2.7.2.h:7162
rb_unnamed_parameters
VALUE rb_unnamed_parameters(int arity)
Definition: proc.c:1262
sigsuspend
int sigsuspend(const sigset_t *)
rb_name_error
void rb_name_error(ID id, const char *fmt,...)
Definition: error.c:1515
NODE_HSHPTN
@ NODE_HSHPTN
Definition: rb_mjit_min_header-2.7.2.h:8147
siginfo_t::si_value
sigval_t si_value
Definition: rb_mjit_min_header-2.7.2.h:2133
_reallocf_r
void * _reallocf_r(struct _reent *, void *, size_t)
__pthread_attr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1380
RB_DEBUG_COUNTER_gc_isptr_align
@ RB_DEBUG_COUNTER_gc_isptr_align
Definition: rb_mjit_min_header-2.7.2.h:11573
OPTIMIZED_METHOD_TYPE__MAX
@ OPTIMIZED_METHOD_TYPE__MAX
Definition: rb_mjit_min_header-2.7.2.h:8838
id
VALUE ID id
Definition: rb_mjit_min_header-2.7.2.h:16113
rb_vm_struct::at_exit
rb_at_exit_list * at_exit
Definition: vm_core.h:653
cookie_io_functions_t::close
cookie_close_function_t * close
Definition: rb_mjit_min_header-2.7.2.h:1827
RFloat::float_value
double float_value
Definition: internal.h:800
rb_method_definition_struct::alias_count
int alias_count
Definition: method.h:165
RB_DEBUG_COUNTER_obj_hash_force_convert
@ RB_DEBUG_COUNTER_obj_hash_force_convert
Definition: rb_mjit_min_header-2.7.2.h:11607
rb_global_vm_lock_struct::owner
const struct rb_thread_struct * owner
Definition: thread_pthread.h:50
rb_cRational
VALUE rb_cRational
Definition: ruby.h:2041
tcsetpgrp
int tcsetpgrp(int __fildes, pid_t __pgrp_id)
rb_mutex_allow_trap
void rb_mutex_allow_trap(VALUE self, int val)
Definition: thread_sync.c:545
__pthread_mutex_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1378
rb_ec_backtrace_location_ary
VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n)
Definition: vm_backtrace.c:720
siginfo_t::si_signo
int si_signo
Definition: rb_mjit_min_header-2.7.2.h:2119
lldiv_t
Definition: rb_mjit_min_header-2.7.2.h:2562
utimensat
int utimensat(int, const char *, const struct timespec *, int)
_ftello_r
_off_t _ftello_r(struct _reent *, FILE *)
__nl_item
int __nl_item
Definition: rb_mjit_min_header-2.7.2.h:906
rb_str_update
void rb_str_update(VALUE, long, long, VALUE)
Definition: string.c:4643
RB_DEBUG_COUNTER_obj_promote
@ RB_DEBUG_COUNTER_obj_promote
Definition: rb_mjit_min_header-2.7.2.h:11579
rb_str_concat
VALUE rb_str_concat(VALUE, VALUE)
Definition: string.c:3065
rb_vm_check_redefinition_by_prepend
void rb_vm_check_redefinition_by_prepend(VALUE klass)
Definition: vm.c:1631
rb_vm_struct::expanded_load_path
VALUE expanded_load_path
Definition: vm_core.h:618
idSingleton_method_undefined
@ idSingleton_method_undefined
Definition: rb_mjit_min_header-2.7.2.h:8662
rb_ast_mark
void rb_ast_mark(rb_ast_t *)
Definition: node.c:1340
rb_fiber_alive_p
VALUE rb_fiber_alive_p(VALUE)
Definition: cont.c:2152
YARVINSN_newhash
@ YARVINSN_newhash
Definition: rb_mjit_min_header-2.7.2.h:11971
rb_builtin_function::index
const int index
Definition: builtin.h:12
rb_check_funcall_kw
VALUE rb_check_funcall_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:499
rb_iseq_constant_body::parent_iseq
const struct rb_iseq_struct * parent_iseq
Definition: vm_core.h:417
VM_INSTRUCTION_SIZE
@ VM_INSTRUCTION_SIZE
Definition: rb_mjit_min_header-2.7.2.h:12144
expm1
double expm1(double)
rb_yield_values
#define rb_yield_values(argc,...)
Definition: rb_mjit_min_header-2.7.2.h:6580
rb_hash_delete_if
VALUE rb_hash_delete_if(VALUE)
Definition: hash.c:2493
rb_cInteger
VALUE rb_cInteger
Definition: ruby.h:2031
__mcontext::dr1
__uint32_t dr1
Definition: rb_mjit_min_header-2.7.2.h:2059
__sFILE::_lb
struct __sbuf _lb
Definition: rb_mjit_min_header-2.7.2.h:999
idTo_io
@ idTo_io
Definition: rb_mjit_min_header-2.7.2.h:8683
__ssize_t
_ssize_t __ssize_t
Definition: rb_mjit_min_header-2.7.2.h:887
rb_vm_struct::waiting_fds
struct list_head waiting_fds
Definition: vm_core.h:594
builtin_binary::bin_size
size_t bin_size
Definition: builtin.h:75
_fpstate::cssel
__uint32_t cssel
Definition: rb_mjit_min_header-2.7.2.h:2049
NODE_OP_ASGN1
@ NODE_OP_ASGN1
Definition: rb_mjit_min_header-2.7.2.h:8076
OPTIMIZED_METHOD_TYPE_BLOCK_CALL
@ OPTIMIZED_METHOD_TYPE_BLOCK_CALL
Definition: rb_mjit_min_header-2.7.2.h:8837
strtoul_l
unsigned long strtoul_l(const char *__restrict, char **__restrict, int, locale_t __loc)
pthread_rwlock_init
int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr)
YARVINSN_tostring
@ YARVINSN_tostring
Definition: rb_mjit_min_header-2.7.2.h:11960
BOP_EMPTY_P
@ BOP_EMPTY_P
Definition: rb_mjit_min_header-2.7.2.h:9616
int8_t
__int8_t int8_t
Definition: rb_mjit_min_header-2.7.2.h:1164
RB_DEBUG_COUNTER_ccf_zsuper
@ RB_DEBUG_COUNTER_ccf_zsuper
Definition: rb_mjit_min_header-2.7.2.h:11522
rb_local_defined
int rb_local_defined(ID, const struct rb_iseq_struct *)
rb_str_memsize
size_t rb_str_memsize(VALUE)
Definition: string.c:1371
RB_DEBUG_COUNTER_mjit_compile_failures
@ RB_DEBUG_COUNTER_mjit_compile_failures
Definition: rb_mjit_min_header-2.7.2.h:11669
rb_ivar_lookup
VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef)
Definition: variable.c:1035
in_port_t
__uint16_t in_port_t
Definition: rb_mjit_min_header-2.7.2.h:1282
asinhl
long double asinhl(long double)
YARVINSN_opt_succ
@ YARVINSN_opt_succ
Definition: rb_mjit_min_header-2.7.2.h:12028
rb_scan_args_kw
int rb_scan_args_kw(int, int, const VALUE *, const char *,...)
Definition: class.c:2180
mjit_options::warnings
char warnings
Definition: rb_mjit_min_header-2.7.2.h:11695
getenv
char * getenv(const char *__string)
RIMemo::flags
VALUE flags
Definition: internal.h:1125
ruby_finalize
void ruby_finalize(void)
Runs the VM finalization processes.
Definition: eval.c:163
rb_undef
void rb_undef(VALUE, ID)
Definition: vm_method.c:1200
YARVINSN_trace_putstring
@ YARVINSN_trace_putstring
Definition: rb_mjit_min_header-2.7.2.h:12061
ruby_setup
int ruby_setup(void)
Initializes the VM and builtin libraries.
Definition: eval.c:56
nextafterf
float nextafterf(float, float)
RARRAY_EMBED_LEN_MAX
#define RARRAY_EMBED_LEN_MAX
rb_load_file
void * rb_load_file(const char *)
Definition: ruby.c:2192
RBignum::heap
struct RBignum::@2::@3 heap
sniprintf
int int int int int int int int char char int int int int int int int int sniprintf(char *, size_t, const char *,...) __attribute__((__format__(__printf__
NODE_DSTR
@ NODE_DSTR
Definition: rb_mjit_min_header-2.7.2.h:8107
RIMemo
Definition: internal.h:1124
rb_block_lambda
VALUE rb_block_lambda(void)
Definition: proc.c:856
fminl
long double fminl(long double, long double)
rb_reg_check_preprocess
VALUE rb_reg_check_preprocess(VALUE)
Definition: re.c:2707
ruby_xrealloc
void void void * ruby_xrealloc(void *, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2)))
Definition: gc.c:12008
tm::tm_mon
int tm_mon
Definition: rb_mjit_min_header-2.7.2.h:1969
arg_setup_block
@ arg_setup_block
Definition: rb_mjit_min_header-2.7.2.h:13488
rb_load
void rb_load(VALUE, int)
Definition: load.c:649
ftell
long ftell(FILE *)
iseq_catch_table_entry::CATCH_TYPE_REDO
@ CATCH_TYPE_REDO
Definition: iseq.h:231
Init_vm_stack_canary
void Init_vm_stack_canary(void)
Definition: rb_mjit_min_header-2.7.2.h:16969
_asiprintf_r
int _asiprintf_r(struct _reent *, char **, const char *,...) __attribute__((__format__(__printf__
vm_ifunc::argc
struct vm_ifunc_argc argc
Definition: internal.h:1220
rb_fd_dup
void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src)
_Exit
void _Exit(int __status) __attribute__((__noreturn__))
_uc_fpreg::significand
__uint16_t significand[4]
Definition: rb_mjit_min_header-2.7.2.h:2040
asnprintf
int int int int int int int int char char * asnprintf(char *__restrict, size_t *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
_reclaim_reent
void _reclaim_reent(struct _reent *)
RB_DEBUG_COUNTER_ccf_bmethod
@ RB_DEBUG_COUNTER_ccf_bmethod
Definition: rb_mjit_min_header-2.7.2.h:11523
rb_thread_local_aref
VALUE rb_thread_local_aref(VALUE, ID)
Definition: thread.c:3216
rb_fix2ushort
unsigned short rb_fix2ushort(VALUE)
Definition: numeric.c:3069
rb_args_info::first_post_arg
ID first_post_arg
Definition: node.h:439
YARVINSN_opt_not
@ YARVINSN_opt_not
Definition: rb_mjit_min_header-2.7.2.h:12029
RB_WARN_CATEGORY_DEPRECATED
@ RB_WARN_CATEGORY_DEPRECATED
Definition: rb_mjit_min_header-2.7.2.h:7298
ruby_dtrace_method_hook_args::klass
volatile VALUE klass
Definition: probes_helper.h:11
uint32_t
unsigned int uint32_t
Definition: sha2.h:101
_atol_r
long _atol_r(struct _reent *, const char *__nptr)
__itoa
char * __itoa(int, char *, int)
ruby_thread_init_stack
void ruby_thread_init_stack(rb_thread_t *th)
Definition: thread.c:647
VM_DEFINECLASS_TYPE_SINGLETON_CLASS
@ VM_DEFINECLASS_TYPE_SINGLETON_CLASS
Definition: rb_mjit_min_header-2.7.2.h:9901
tNEXT_ID
@ tNEXT_ID
Definition: rb_mjit_min_header-2.7.2.h:8647
rb_iseq_constant_body::ISEQ_TYPE_TOP
@ ISEQ_TYPE_TOP
Definition: vm_core.h:313
rb_eval_string_wrap
VALUE rb_eval_string_wrap(const char *, int *)
Evaluates the given string under a module binding in an isolated binding.
Definition: vm_eval.c:1769
RUBY_Qundef
#define RUBY_Qundef
Definition: rb_mjit_min_header-2.7.2.h:4304
YARVINSN_trace_opt_div
@ YARVINSN_trace_opt_div
Definition: rb_mjit_min_header-2.7.2.h:12113
RData::dfree
void(* dfree)(void *)
Definition: ruby.h:1142
rb_thread_shield_destroy
VALUE rb_thread_shield_destroy(VALUE self)
Definition: thread.c:4846
nice
int nice(int __nice_value)
pthread_mutex_getprioceiling
int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *)
rb_require_safe
VALUE rb_require_safe(VALUE, int)
Definition: load.c:1084
st_table::entries
st_table_entry * entries
Definition: st.h:94
YARVINSN_opt_mod
@ YARVINSN_opt_mod
Definition: rb_mjit_min_header-2.7.2.h:12011
Init_BareVM
void Init_BareVM(void)
Definition: vm.c:3301
rb_gc
void rb_gc(void)
Definition: gc.c:8682
rb_cISeq
VALUE rb_cISeq
Definition: iseq.c:32
rb_execution_context_struct::machine
struct rb_execution_context_struct::@13 machine
vm_svar::others
const VALUE others
Definition: internal.h:1186
_nrand48_r
long _nrand48_r(struct _reent *, unsigned short[3])
rb_float_new_in_heap
VALUE rb_float_new_in_heap(double)
Definition: numeric.c:895
rb_execarg::uid
uid_t uid
Definition: rb_mjit_min_header-2.7.2.h:7625
rb_class_remove_from_super_subclasses
void rb_class_remove_from_super_subclasses(VALUE)
Definition: class.c:76
rb_typeddata_inherited_p
int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent)
Definition: error.c:864
tOR
@ tOR
Definition: rb_mjit_min_header-2.7.2.h:8616
rb_big_eq
VALUE rb_big_eq(VALUE, VALUE)
Definition: bignum.c:5524
strtol_l
long strtol_l(const char *__restrict, char **__restrict, int, locale_t)
_mrand48_r
long _mrand48_r(struct _reent *)
tm::tm_mday
int tm_mday
Definition: rb_mjit_min_header-2.7.2.h:1968
rb_fork_ruby
pid_t rb_fork_ruby(int *status)
YARVINSN_trace_setn
@ YARVINSN_trace_setn
Definition: rb_mjit_min_header-2.7.2.h:12082
rb_io_close
VALUE rb_io_close(VALUE)
Definition: io.c:4820
wcstoumax
uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int)
rb_iseq_struct::loader
struct rb_iseq_struct::@6::@7 loader
strcpy
#define strcpy(dst, src)
Definition: rb_mjit_min_header-2.7.2.h:2859
fmt
const VALUE int int int int int int VALUE char * fmt
Definition: rb_mjit_min_header-2.7.2.h:6458
native_thread_data_struct::gvl
struct list_node gvl
Definition: thread_pthread.h:26
pthread_attr_setguardsize
int pthread_attr_setguardsize(pthread_attr_t *, size_t)
__cygwin_lock_fini
void __cygwin_lock_fini(_LOCK_T *)
rb_compile_option_struct::coverage_enabled
unsigned int coverage_enabled
Definition: iseq.h:216
rb_float_abs
VALUE rb_float_abs(VALUE flt)
Definition: numeric.c:1698
ST_CONTINUE
@ ST_CONTINUE
Definition: rb_mjit_min_header-2.7.2.h:5386
rb_define_global_function
void rb_define_global_function(const char *, VALUE(*)(), int)
rb_set_safe_level
#define rb_set_safe_level(level)
YARVINSN_dupn
@ YARVINSN_dupn
Definition: rb_mjit_min_header-2.7.2.h:11975
_fsetpos_r
int _fsetpos_r(struct _reent *, FILE *, const fpos_t *)
jmp_buf
int jmp_buf[(13 *4)]
Definition: rb_mjit_min_header-2.7.2.h:9359
int_fast8_t
signed char int_fast8_t
Definition: rb_mjit_min_header-2.7.2.h:2932
blksize_t
__blksize_t blksize_t
Definition: rb_mjit_min_header-2.7.2.h:1299
rb_str_plus
VALUE rb_str_plus(VALUE, VALUE)
Definition: string.c:1894
rb_str_substr
VALUE rb_str_substr(VALUE, long, long)
Definition: string.c:2584
rb_classext_struct::const_tbl
struct rb_id_table * const_tbl
Definition: internal.h:1026
tSend
@ tSend
Definition: rb_mjit_min_header-2.7.2.h:8589
rb_funcallv_public_kw
VALUE rb_funcallv_public_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:986
rb_int_fdiv_double
double rb_int_fdiv_double(VALUE x, VALUE y)
Definition: numeric.c:3728
rb_const_entry_t
struct rb_const_entry_struct rb_const_entry_t
tan
double tan(double)
YARVINSN_setlocal_WC_1
@ YARVINSN_setlocal_WC_1
Definition: rb_mjit_min_header-2.7.2.h:12038
rb_readwrite_syserr_fail
void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite writable, int n, const char *mesg)
Definition: io.c:12933
sinhf
float sinhf(float)
rb_const_flag_t
rb_const_flag_t
Definition: rb_mjit_min_header-2.7.2.h:12148
YARVINSN_trace_expandarray
@ YARVINSN_trace_expandarray
Definition: rb_mjit_min_header-2.7.2.h:12071
rb_mjit_iseq_func
rb_mjit_iseq_func
Definition: rb_mjit_min_header-2.7.2.h:11686
RB_DEBUG_COUNTER_ivar_get_ic_miss
@ RB_DEBUG_COUNTER_ivar_get_ic_miss
Definition: rb_mjit_min_header-2.7.2.h:11543
RB_DEBUG_COUNTER_mjit_cancel_invalidate_all
@ RB_DEBUG_COUNTER_mjit_cancel_invalidate_all
Definition: rb_mjit_min_header-2.7.2.h:11664
rb_is_attrset_id
int rb_is_attrset_id(ID id)
Definition: symbol.c:878
RSTRING_ENUM_END
@ RSTRING_ENUM_END
Definition: ruby.h:985
getgid
gid_t getgid(void)
Definition: win32.c:2779
NODE_FALSE
@ NODE_FALSE
Definition: rb_mjit_min_header-2.7.2.h:8139
last
unsigned int last
Definition: nkf.c:4324
sigtimedwait
int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *)
nrand48
long nrand48(unsigned short[3])
rb_method_entry_complement_defined_class
const rb_callable_method_entry_t * rb_method_entry_complement_defined_class(const rb_method_entry_t *src_me, ID called_id, VALUE defined_class)
Definition: vm_method.c:415
vm_call_handler
VALUE(* vm_call_handler)(struct rb_execution_context_struct *ec, struct rb_control_frame_struct *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
Definition: rb_mjit_min_header-2.7.2.h:9455
RB_DEBUG_COUNTER_obj_str_fstr
@ RB_DEBUG_COUNTER_obj_str_fstr
Definition: rb_mjit_min_header-2.7.2.h:11588
_sigcommune::_si_pipe_unique_id
int64_t _si_pipe_unique_id
Definition: rb_mjit_min_header-2.7.2.h:2112
ruby_debug_counter_get
size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
Definition: debug_counter.c:121
erfcf
float erfcf(float)
alarm
unsigned alarm(unsigned __secs)
imaxabs
intmax_t imaxabs(intmax_t j)
mktemp
char * mktemp(char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
__ssp_real_fgets_unlocked
char * __ssp_real_fgets_unlocked(char *__restrict __buf, int __len, FILE *__fp) __asm__("_" "fgets_unlocked")
rb_fatal
void rb_fatal(const char *fmt,...)
Definition: error.c:2722
rb_struct_initialize
VALUE rb_struct_initialize(VALUE, VALUE)
Definition: struct.c:659
rb_big_idiv
VALUE rb_big_idiv(VALUE, VALUE)
Definition: bignum.c:6097
rb_define_method_id
void rb_define_method_id(VALUE, ID, VALUE(*)(), int)
rb_mutex_locked_p
VALUE rb_mutex_locked_p(VALUE mutex)
Definition: thread_sync.c:177
rb_obj_is_method
VALUE rb_obj_is_method(VALUE)
Definition: proc.c:1459
rb_maygvl_fd_fix_cloexec
void rb_maygvl_fd_fix_cloexec(int fd)
Definition: io.c:245
idUMinus
@ idUMinus
Definition: rb_mjit_min_header-2.7.2.h:8518
rb_iseq_first_lineno
VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq)
Definition: iseq.c:1057
rb_hash_set_pair
VALUE rb_hash_set_pair(VALUE hash, VALUE pair)
Definition: hash.c:3332
fchdir
int fchdir(int __fildes)
rb_is_junk_id
int rb_is_junk_id(ID id)
Definition: symbol.c:890
rb_marshal_dump
VALUE rb_marshal_dump(VALUE, VALUE)
Definition: marshal.c:2354
DEFINED_LVAR
@ DEFINED_LVAR
Definition: rb_mjit_min_header-2.7.2.h:10851
rb_define_hooked_variable
void rb_define_hooked_variable(const char *, VALUE *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Definition: variable.c:480
rb_block_handler_type
rb_block_handler_type
Definition: vm_core.h:737
rb_execarg::close_others_maxhint
int close_others_maxhint
Definition: internal.h:2061
rb_iseq_eval_main
VALUE rb_iseq_eval_main(const rb_iseq_t *iseq)
Definition: vm.c:2173
gen_ivtbl::ivptr
VALUE ivptr[FLEX_ARY_LEN]
Definition: variable.h:6
tTOKEN_ATTRSET_END
@ tTOKEN_ATTRSET_END
Definition: rb_mjit_min_header-2.7.2.h:8646
rb_file_s_absolute_path
VALUE rb_file_s_absolute_path(int, const VALUE *)
Definition: file.c:4079
RRegexp::basic
struct RBasic basic
Definition: ruby.h:1113
__sFILE::_mbstate
_mbstate_t _mbstate
Definition: rb_mjit_min_header-2.7.2.h:1004
rb_int_divmod
VALUE rb_int_divmod(VALUE x, VALUE y)
Definition: numeric.c:3963
rb_funcall_with_block_kw
VALUE rb_funcall_with_block_kw(VALUE, ID, int, const VALUE *, VALUE, int)
Definition: vm_eval.c:1060
YARVINSN_trace_opt_call_c_function
@ YARVINSN_trace_opt_call_c_function
Definition: rb_mjit_min_header-2.7.2.h:12134
rb_method_alias_struct
Definition: method.h:142
rb_method_definition_struct::bmethod
rb_method_bmethod_t bmethod
Definition: method.h:174
rb_scope_visibility_t
struct rb_scope_visi_struct rb_scope_visibility_t
rb_st_hash_start
st_index_t rb_st_hash_start(st_index_t h)
Definition: st.c:2070
iseq_catch_table::size
unsigned int size
Definition: rb_mjit_min_header-2.7.2.h:10828
rb_iseq_pathobj_set
void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath)
Definition: iseq.c:469
tTo_a
@ tTo_a
Definition: rb_mjit_min_header-2.7.2.h:8603
rb_pipe
int rb_pipe(int *pipes)
Definition: io.c:6369
_tzset_r
void _tzset_r(struct _reent *)
rb_bug_for_fatal_signal
void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *ctx, const char *fmt,...)
Definition: error.c:651
rb_thread_struct::ec
rb_execution_context_t * ec
Definition: vm_core.h:915
flock::l_start
off_t l_start
Definition: rb_mjit_min_header-2.7.2.h:1435
getchar
int getchar(void)
pthread_barrier_init
int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned)
rb_free_tmp_buffer
void void rb_free_tmp_buffer(volatile VALUE *store)
Definition: gc.c:10277
rb_parser_compile_file_path
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line)
Definition: ripper.c:12893
__strncpy_chk
char * __strncpy_chk(char *, const char *, size_t, size_t)
__strcpy_chk
char * __strcpy_chk(char *, const char *, size_t)
rb_alloc_tmp_buffer
void * rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__((alloc_size(2)))
Definition: gc.c:10265
rb_num2fix
VALUE rb_num2fix(VALUE)
Definition: numeric.c:3083
rb_st_init_table_with_size
st_table * rb_st_init_table_with_size(const struct st_hash_type *, st_index_t)
rb_ary_delete_at
VALUE rb_ary_delete_at(VALUE, long)
Definition: array.c:3419
cbrt
double cbrt(double)
Definition: cbrt.c:4
YARVINSN_trace_opt_gt
@ YARVINSN_trace_opt_gt
Definition: rb_mjit_min_header-2.7.2.h:12119
rb_ary_behead
VALUE rb_ary_behead(VALUE, long)
Definition: array.c:1369
rb_method_alias_t
struct rb_method_alias_struct rb_method_alias_t
rb_global_vm_lock_struct::need_yield
int need_yield
Definition: thread_pthread.h:71
__ssp_real_getgroups
int __ssp_real_getgroups(int __n, gid_t __buf[]) __asm__("_" "getgroups")
psignal
void psignal(int, const char *)
_sigcommune
Definition: rb_mjit_min_header-2.7.2.h:2101
rb_gc_verify_internal_consistency
void rb_gc_verify_internal_consistency(void)
Definition: gc.c:6205
native_thread_data_struct::ubf
struct list_node ubf
Definition: thread_pthread.h:25
tAND
@ tAND
Definition: rb_mjit_min_header-2.7.2.h:8615
__sFILE64::_seek
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
Definition: rb_mjit_min_header-2.7.2.h:1022
rb_big_new
VALUE rb_big_new(size_t, int)
Definition: bignum.c:3014
rb_trace_arg_struct::cfp
const rb_control_frame_t * cfp
Definition: vm_core.h:1877
rb_str_catf
VALUE rb_str_catf(VALUE, const char *,...) __attribute__((format(printf
rb_fiber_start
void rb_fiber_start(void)
Definition: cont.c:1805
rb_call_info::orig_argc
int orig_argc
Definition: internal.h:2397
fiscanf
int int int int int int int int char char int int int fiscanf(FILE *, const char *,...) __attribute__((__format__(__scanf__
idSingleton_method_removed
@ idSingleton_method_removed
Definition: rb_mjit_min_header-2.7.2.h:8660
tgammal
long double tgammal(long double)
rb_const_entry_struct::flag
rb_const_flag_t flag
Definition: constant.h:32
rb_iseq_constant_body
Definition: vm_core.h:311
VM_FRAME_FLAG_PASSED
@ VM_FRAME_FLAG_PASSED
Definition: rb_mjit_min_header-2.7.2.h:10035
rb_iseq_constant_body::opt_table
const VALUE * opt_table
Definition: vm_core.h:374
rb_exec_recursive_paired_outer
VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5110
rb_args_info::kw_args
NODE * kw_args
Definition: node.h:444
nearbyint
double nearbyint(double)
YARVINSN_trace_getglobal
@ YARVINSN_trace_getglobal
Definition: rb_mjit_min_header-2.7.2.h:12055
asinh
double asinh(double)
Definition: acosh.c:52
rb_ast_struct::node_buffer
node_buffer_t * node_buffer
Definition: node.h:401
rb_iseq_new
rb_iseq_t * rb_iseq_new(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent, enum iseq_type)
Definition: iseq.c:761
crit
int crit
Definition: rb_mjit_min_header-2.7.2.h:12214
rb_vm_struct::debug
VALUE debug
Definition: vm_core.h:645
rb_signal_buff_size
int rb_signal_buff_size(void)
Definition: signal.c:726
RString::ary
char ary[RSTRING_EMBED_LEN_MAX+1]
Definition: ruby.h:999
rb_sym2id
ID rb_sym2id(VALUE)
Definition: symbol.c:748
tm::tm_hour
int tm_hour
Definition: rb_mjit_min_header-2.7.2.h:1967
atan
double atan(double)
RUBY_T_FIXNUM
@ RUBY_T_FIXNUM
Definition: rb_mjit_min_header-2.7.2.h:4338
longjmp
void longjmp(jmp_buf __jmpb, int __retval) __attribute__((__noreturn__))
pthread_attr_init
int pthread_attr_init(pthread_attr_t *)
rb_binding_alloc
VALUE rb_binding_alloc(VALUE klass)
Definition: proc.c:331
timer_t
__timer_t timer_t
Definition: rb_mjit_min_header-2.7.2.h:1336
__int_least32_t
int __int_least32_t
Definition: rb_mjit_min_header-2.7.2.h:635
__uintmax_t
long long unsigned int __uintmax_t
Definition: rb_mjit_min_header-2.7.2.h:642
iseq_compile_data_storage
Definition: iseq.h:274
rb_trace_arg_struct::called_id
ID called_id
Definition: vm_core.h:1880
fexecve
int fexecve(int __fd, char *const __argv[], char *const __envp[])
rb_ary_shift
VALUE rb_ary_shift(VALUE)
Definition: array.c:1294
rb_define_alias
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
Definition: class.c:1800
rb_str_free
void rb_str_free(VALUE)
Definition: string.c:1349
rb_math_log
VALUE rb_math_log(int argc, const VALUE *argv)
Definition: math.c:459
rb_thread_fd_writable
int rb_thread_fd_writable(int)
Definition: thread.c:4048
DEFINED_TRUE
@ DEFINED_TRUE
Definition: rb_mjit_min_header-2.7.2.h:10859
rb_eEncodingError
VALUE rb_eEncodingError
Definition: error.c:930
L
#define L(x)
Definition: asm.h:125
YARVINSN_trace_dupn
@ YARVINSN_trace_dupn
Definition: rb_mjit_min_header-2.7.2.h:12078
RB_DEBUG_COUNTER_mc_global_state_miss
@ RB_DEBUG_COUNTER_mc_global_state_miss
Definition: rb_mjit_min_header-2.7.2.h:11499
pthread_rwlockattr_setpshared
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attr, int pshared)
sighandler_t
_sig_func_ptr sighandler_t
Definition: rb_mjit_min_header-2.7.2.h:2345
MEMO
MEMO.
Definition: internal.h:1278
pthread_setcanceltype
int pthread_setcanceltype(int, int *)
ilogb
int ilogb(double)
RB_INT_PARSE_DEFAULT
@ RB_INT_PARSE_DEFAULT
Definition: rb_mjit_min_header-2.7.2.h:7901
_sigcommune::_si_process_handle
void * _si_process_handle
Definition: rb_mjit_min_header-2.7.2.h:2105
rb_is_class_id
int rb_is_class_id(ID id)
Definition: symbol.c:860
rb_thread_struct::abort_on_exception
unsigned int abort_on_exception
Definition: vm_core.h:934
rb_encdb_dummy
int rb_encdb_dummy(const char *name)
Definition: encoding.c:472
rb_data_type_struct::wrap_struct_name
const char * wrap_struct_name
Definition: ruby.h:1149
atan2f
float atan2f(float, float)
RB_WARN_CATEGORY_ALL_BITS
@ RB_WARN_CATEGORY_ALL_BITS
Definition: rb_mjit_min_header-2.7.2.h:7300
rb_snum_t
signed long rb_snum_t
Definition: vm_core.h:182
fdiml
long double fdiml(long double, long double)
rb_check_funcall_with_hook_kw
VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv, rb_check_funcall_hook *hook, VALUE arg, int kw_splat)
Definition: vm_eval.c:539
rb_gvar_getter_t
VALUE rb_gvar_getter_t(ID id, VALUE *data)
Definition: rb_mjit_min_header-2.7.2.h:5092
rb_ivar_set
VALUE rb_ivar_set(VALUE, ID, VALUE)
Definition: variable.c:1300
rb_equal_opt
VALUE rb_equal_opt(VALUE obj1, VALUE obj2)
Definition: rb_mjit_min_header-2.7.2.h:13403
NODE_VALIAS
@ NODE_VALIAS
Definition: rb_mjit_min_header-2.7.2.h:8125
iruserok
int iruserok(unsigned long raddr, int superuser, const char *ruser, const char *luser)
ruby_cleanup
int ruby_cleanup(volatile int)
Destructs the VM.
Definition: eval.c:181
rb_apply
VALUE rb_apply(VALUE, ID, VALUE)
Calls a method.
Definition: vm_eval.c:890
rb_big_aref
VALUE rb_big_aref(VALUE x, VALUE y)
Definition: bignum.c:6681
rb_protect
VALUE rb_protect(VALUE(*)(VALUE), VALUE, int *)
Protects a function call from potential global escapes from the function.
Definition: eval.c:1072
rb_undef_method
void rb_undef_method(VALUE, const char *)
Definition: class.c:1575
rb_add_method
void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi)
Definition: vm_method.c:674
NODE_OR
@ NODE_OR
Definition: rb_mjit_min_header-2.7.2.h:8067
__compar_fn_t
int(* __compar_fn_t)(const void *, const void *)
Definition: rb_mjit_min_header-2.7.2.h:2567
RB_DEBUG_COUNTER_obj_obj_embed
@ RB_DEBUG_COUNTER_obj_obj_embed
Definition: rb_mjit_min_header-2.7.2.h:11581
rb_eNoMatchingPatternError
VALUE rb_eNoMatchingPatternError
Definition: error.c:937
rb_vm_tag::buf
rb_jmpbuf_t buf
Definition: vm_core.h:802
rb_eql
int rb_eql(VALUE, VALUE)
Determines if obj1 and obj2 are equal in terms of Object::eql?.
Definition: object.c:147
strtok_r
char * strtok_r(char *__restrict, const char *__restrict, char **__restrict)
rb_find_file
VALUE rb_find_file(VALUE)
Definition: file.c:6336
remquo
double remquo(double, double, int *)
fabsf
float fabsf(float)
rb_get_path_no_checksafe
VALUE rb_get_path_no_checksafe(VALUE)
Definition: file.c:224
pthread_condattr_destroy
int pthread_condattr_destroy(pthread_condattr_t *)
y0f
float y0f(float)
ruby_fill_random_bytes
int ruby_fill_random_bytes(void *, size_t, int)
Definition: random.c:434
j0
double j0(double)
rb_assoc_new
VALUE rb_assoc_new(VALUE, VALUE)
Definition: array.c:896
strtod
double strtod(const char *__restrict __n, char **__restrict __end_PTR)
RHASH_ST_TABLE_FLAG
@ RHASH_ST_TABLE_FLAG
Definition: rb_mjit_min_header-2.7.2.h:6840
_reent::_stderr
__FILE * _stderr
Definition: rb_mjit_min_header-2.7.2.h:1062
scanf
int int int int scanf(const char *__restrict,...) __attribute__((__format__(__scanf__
_rand48::_add
unsigned short _add
Definition: rb_mjit_min_header-2.7.2.h:1054
__mcontext::esi
__uint32_t esi
Definition: rb_mjit_min_header-2.7.2.h:2070
fseek
int fseek(FILE *, long, int)
scalbnf
float scalbnf(float, int)
rb_proc_dup
VALUE rb_proc_dup(VALUE self)
Definition: vm.c:920
rb_obj_taint
VALUE rb_obj_taint(VALUE)
call-seq: obj.taint -> obj
Definition: object.c:999
RTypedData
Definition: ruby.h:1168
timespec::tv_nsec
long tv_nsec
Definition: missing.h:62
ruby_dtrace_method_hook_args::methodname
const char * methodname
Definition: probes_helper.h:8
RObject::numiv
uint32_t numiv
Definition: ruby.h:926
_reent::_l64a_buf
char _l64a_buf[8]
Definition: rb_mjit_min_header-2.7.2.h:1089
_gets_r
char * _gets_r(struct _reent *, char *)
rb_vm_struct::load_path
VALUE load_path
Definition: vm_core.h:615
rb_complex_abs
VALUE rb_complex_abs(VALUE z)
Definition: complex.c:1161
log
double log(double)
__gnuc_va_list
__builtin_va_list __gnuc_va_list
Definition: rb_mjit_min_header-2.7.2.h:833
debug
#define debug(lvl, x...)
Definition: ffi.c:52
pthread_exit
void pthread_exit(void *) __attribute__((__noreturn__))
FPE_FLTDIV
#define FPE_FLTDIV
Definition: rb_mjit_min_header-2.7.2.h:2203
__pthread_rwlockattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1394
ruby_debug_printf
void ruby_debug_printf(const char *,...) __attribute__((format(printf
sigaction::sa_flags
int sa_flags
Definition: rb_mjit_min_header-2.7.2.h:2238
sigrelse
int sigrelse(int)
YARVINSN_trace_opt_invokebuiltin_delegate_leave
@ YARVINSN_trace_opt_invokebuiltin_delegate_leave
Definition: rb_mjit_min_header-2.7.2.h:12137
waitpid_state
Definition: process.c:943
rb_cRange
VALUE rb_cRange
Definition: ruby.h:2040
iseq_inline_storage_entry::running_thread
struct rb_thread_struct * running_thread
Definition: vm_core.h:233
gets
#define gets(str)
Definition: rb_mjit_min_header-2.7.2.h:1921
rb_args_info::pre_init
NODE * pre_init
Definition: node.h:433
_open_memstream_r
int int FILE * _open_memstream_r(struct _reent *, char **, size_t *)
rb_error_frozen
void rb_error_frozen(const char *what)
Definition: error.c:2976
mempcpy
#define mempcpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2855
NODE_CASE2
@ NODE_CASE2
Definition: rb_mjit_min_header-2.7.2.h:8049
sigevent::sigev_value
sigval_t sigev_value
Definition: rb_mjit_min_header-2.7.2.h:2093
_reent::_strtok_last
char * _strtok_last
Definition: rb_mjit_min_header-2.7.2.h:1080
vm_check_match_type
vm_check_match_type
Definition: vm_core.h:1076
fwrite
size_t fwrite(const void *__restrict, size_t _size, size_t _n, FILE *)
rb_backtrace_iter_func
int rb_backtrace_iter_func(void *, VALUE, int, VALUE)
Definition: rb_mjit_min_header-2.7.2.h:10452
remainder
double remainder(double, double)
BOP_FREEZE
@ BOP_FREEZE
Definition: rb_mjit_min_header-2.7.2.h:9624
rb_thread_struct::priority
int8_t priority
Definition: vm_core.h:937
rb_str_capacity
size_t rb_str_capacity(VALUE str)
Definition: string.c:712
rb_const_get
VALUE rb_const_get(VALUE, ID)
Definition: variable.c:2391
rb_funcall_passing_block
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:1032
__memmove_chk
void * __memmove_chk(void *, void *, size_t, size_t)
args_info
Definition: vm_args.c:22
YARVINSN_pop
@ YARVINSN_pop
Definition: rb_mjit_min_header-2.7.2.h:11973
rb_parser_malloc
void * rb_parser_malloc(struct parser_params *, size_t)
Definition: ripper.c:19360
rb_st_clear
void rb_st_clear(st_table *)
log10f
float log10f(float)
rb_obj_untrust
VALUE rb_obj_untrust(VALUE)
call-seq: obj.untrust -> obj
Definition: object.c:1042
rb_gc_writebarrier
void rb_gc_writebarrier(VALUE a, VALUE b)
Definition: gc.c:6820
RData::dmark
void(* dmark)(void *)
Definition: ruby.h:1141
getlogin
char * getlogin(void)
Definition: win32.c:881
rand_r
int rand_r(unsigned *__seed)
RB_DEBUG_COUNTER_gc_major_force
@ RB_DEBUG_COUNTER_gc_major_force
Definition: rb_mjit_min_header-2.7.2.h:11569
rb_kwarg_call_data::ci_kw
struct rb_call_info_with_kwarg ci_kw
Definition: vm_core.h:259
rb_method_refined_t
struct rb_method_refined_struct rb_method_refined_t
rb_proc_call_with_block
VALUE rb_proc_call_with_block(VALUE, int argc, const VALUE *argv, VALUE)
Definition: proc.c:1000
_fseeko_r
int _fseeko_r(struct _reent *, FILE *, _off_t, int)
void
void
Definition: rb_mjit_min_header-2.7.2.h:13241
ROBJECT_EMBED
#define ROBJECT_EMBED
rb_control_frame_struct::sp
VALUE * sp
Definition: vm_core.h:762
rb_vm_inc_const_missing_count
void rb_vm_inc_const_missing_count(void)
Definition: vm.c:386
rb_ast_body_struct::compile_option
VALUE compile_option
Definition: node.h:396
rb_exit
void rb_exit(int status)
Definition: process.c:4197
rb_const_get_from
VALUE rb_const_get_from(VALUE, ID)
Definition: variable.c:2385
tDivmod
@ tDivmod
Definition: rb_mjit_min_header-2.7.2.h:8618
uint_least32_t
__uint_least32_t uint_least32_t
Definition: rb_mjit_min_header-2.7.2.h:2927
fgetc_unlocked
int fgetc_unlocked(FILE *)
ruby_xrealloc2
void * ruby_xrealloc2(void *, size_t, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2
rb_method_definition_struct::complemented_count
int complemented_count
Definition: method.h:166
rb_mjit_iseq_compile_info
struct rb_mjit_compile_info * rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body)
llrint
long long int llrint(double)
rb_fdset_t
Definition: rb_mjit_min_header-2.7.2.h:5701
RUBY_DATA_FUNC
void RUBY_DATA_FUNC
Definition: rb_mjit_min_header-2.7.2.h:4909
__swbuf_r
int __swbuf_r(struct _reent *, int, FILE *)
rb_call_info_kw_arg
Definition: vm_core.h:240
flockfile
void flockfile(FILE *)
NODE_ZSUPER
@ NODE_ZSUPER
Definition: rb_mjit_min_header-2.7.2.h:8087
rb_lastline_get
VALUE rb_lastline_get(void)
Definition: vm.c:1316
fls
int fls(int) __attribute__((__const__))
rb_call_cache::index
unsigned int index
Definition: internal.h:2388
RB_DEBUG_COUNTER_obj_iclass_ptr
@ RB_DEBUG_COUNTER_obj_iclass_ptr
Definition: rb_mjit_min_header-2.7.2.h:11619
u_int8_t
__uint8_t u_int8_t
Definition: rb_mjit_min_header-2.7.2.h:1156
id_core_hash_merge_kwd
@ id_core_hash_merge_kwd
Definition: rb_mjit_min_header-2.7.2.h:8563
NODE_ARGS_AUX
@ NODE_ARGS_AUX
Definition: rb_mjit_min_header-2.7.2.h:8114
NODE_BREAK
@ NODE_BREAK
Definition: rb_mjit_min_header-2.7.2.h:8058
rb_ary_ptr_use_end
void rb_ary_ptr_use_end(VALUE ary)
Definition: array.c:235
DEFINED_GVAR
@ DEFINED_GVAR
Definition: rb_mjit_min_header-2.7.2.h:10852
mkostemps
int mkostemps(char *, int, int)
rb_cEncodingConverter
VALUE rb_cEncodingConverter
Definition: transcode.c:25
ruby_init
void ruby_init(void)
Calls ruby_setup() and check error.
Definition: eval.c:94
ruby_static_id_signo
ID ruby_static_id_signo
Definition: eval.c:37
YARVINSN_trace_opt_mod
@ YARVINSN_trace_opt_mod
Definition: rb_mjit_min_header-2.7.2.h:12114
RUBY_ID_GLOBAL
@ RUBY_ID_GLOBAL
Definition: rb_mjit_min_header-2.7.2.h:8461
can_be_svar
int can_be_svar
Definition: rb_mjit_min_header-2.7.2.h:12470
rb_fstring_new
VALUE rb_fstring_new(const char *ptr, long len)
Definition: string.c:396
pthread_condattr_t
struct __pthread_condattr_t * pthread_condattr_t
ruby_debug_breakpoint
void ruby_debug_breakpoint(void)
Definition: debug.c:135
rb_hook_list_remove_tracepoint
void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval)
Definition: vm_trace.c:1262
rb_iseq_constant_body::ISEQ_TYPE_METHOD
@ ISEQ_TYPE_METHOD
Definition: vm_core.h:314
rb_define_singleton_method
void rb_define_singleton_method(VALUE, const char *, VALUE(*)(), int)
rb_calling_info::argc
int argc
Definition: vm_core.h:253
rb_raise
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:2671
rb_thread_schedule
void rb_thread_schedule(void)
Definition: thread.c:1408
rb_trace_arg_struct::klass_solved
int klass_solved
Definition: vm_core.h:1884
rb_execarg_parent_end
void rb_execarg_parent_end(VALUE execarg_obj)
Definition: process.c:2855
rb_wb_unprotected_newobj_of
VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE)
Definition: gc.c:2274
strndup
char * strndup(const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
const
#define const
Definition: strftime.c:103
rb_vm_struct::main_altstack
void * main_altstack
Definition: rb_mjit_min_header-2.7.2.h:9656
rb_st_get_key
int rb_st_get_key(st_table *, st_data_t, st_data_t *)
setbuf
void setbuf(FILE *__restrict, char *__restrict)
st_table::bin_power
unsigned char bin_power
Definition: st.h:81
rb_imemo_tmpbuf_struct::cnt
size_t cnt
Definition: internal.h:1236
RRational::basic
struct RBasic basic
Definition: internal.h:789
rb_str_split
VALUE rb_str_split(VALUE, const char *)
Definition: string.c:8116
rb_vm_stack_to_heap
void rb_vm_stack_to_heap(rb_execution_context_t *ec)
Definition: vm.c:786
rb_sys_warning
const char *void void void rb_sys_warning(const char *,...) __attribute__((format(printf
rb_rational_uminus
VALUE rb_rational_uminus(VALUE self)
Definition: rational.c:624
mjit_finish
void mjit_finish(_Bool close_handle_p)
rb_method_definition_struct::cfunc
rb_method_cfunc_t cfunc
Definition: method.h:170
rb_int_mul
VALUE rb_int_mul(VALUE x, VALUE y)
Definition: numeric.c:3699
idNUMPARAM_8
@ idNUMPARAM_8
Definition: rb_mjit_min_header-2.7.2.h:8712
YARVINSN_opt_lt
@ YARVINSN_opt_lt
Definition: rb_mjit_min_header-2.7.2.h:12014
rb_sym_intern_ascii_cstr
#define rb_sym_intern_ascii_cstr(ptr)
Definition: rb_mjit_min_header-2.7.2.h:7721
RClass::super
VALUE super
Definition: internal.h:1050
rb_f_require
VALUE rb_f_require(VALUE, VALUE)
Definition: load.c:809
rb_call_cache
Definition: internal.h:2361
rb_notimplement
void rb_notimplement(void)
Definition: error.c:2714
fdatasync
int fdatasync(int __fd)
rb_ibf_load_iseq_complete
void rb_ibf_load_iseq_complete(rb_iseq_t *iseq)
Definition: compile.c:11437
strtoimax_l
intmax_t strtoimax_l(const char *__restrict, char **_restrict, int, locale_t)
rb_execarg::fd_open
VALUE fd_open
Definition: internal.h:2064
rb_execution_context_struct::cfp
rb_control_frame_t * cfp
Definition: vm_core.h:847
imemo_svar
@ imemo_svar
Definition: rb_mjit_min_header-2.7.2.h:7031
native_thread_data_struct::gvlq
rb_nativethread_cond_t gvlq
Definition: thread_pthread.h:39
rb_resolve_me_location
const rb_method_entry_t * rb_resolve_me_location(const rb_method_entry_t *, VALUE[5])
Definition: thread.c:5400
rb_eRangeError
VALUE rb_eRangeError
Definition: error.c:928
atan2
double atan2(double, double)
_fwrite_unlocked_r
size_t _fwrite_unlocked_r(struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_alias_variable
void rb_alias_variable(ID, ID)
Definition: variable.c:756
rb_iseq_constant_body::local_table
const ID * local_table
Definition: vm_core.h:411
encrypt
void encrypt(char *__block, int __edflag)
rb_each
VALUE rb_each(VALUE)
Definition: vm_eval.c:1542
YARVINSN_getspecial
@ YARVINSN_getspecial
Definition: rb_mjit_min_header-2.7.2.h:11944
frexpl
long double frexpl(long double, int *)
__tm::__tm_isdst
int __tm_isdst
Definition: rb_mjit_min_header-2.7.2.h:956
puts
int puts(const char *)
rb_thread_struct::thread_invoke_type_proc
@ thread_invoke_type_proc
Definition: vm_core.h:977
VM_ENV_FLAG_WB_REQUIRED
@ VM_ENV_FLAG_WB_REQUIRED
Definition: rb_mjit_min_header-2.7.2.h:10045
RUBY_T_NODE
@ RUBY_T_NODE
Definition: rb_mjit_min_header-2.7.2.h:4341
float_t
long double float_t
Definition: rb_mjit_min_header-2.7.2.h:3661
VM_DEFINECLASS_TYPE_MODULE
@ VM_DEFINECLASS_TYPE_MODULE
Definition: rb_mjit_min_header-2.7.2.h:9902
idLASTLINE
@ idLASTLINE
Definition: rb_mjit_min_header-2.7.2.h:8716
st_table_entry
Definition: st.c:136
VM_FRAME_FLAG_LAMBDA
@ VM_FRAME_FLAG_LAMBDA
Definition: rb_mjit_min_header-2.7.2.h:10039
rb_global_vm_lock_struct::waitq
struct list_head waitq
Definition: thread_pthread.h:64
ruby_node_name
const char * ruby_node_name(int node)
Definition: iseq.c:2534
rb_gvar_val_marker
rb_gvar_marker_t rb_gvar_val_marker
Definition: rb_mjit_min_header-2.7.2.h:5100
scalbn
double scalbn(double, int)
rb_vm_struct::ensure_rollback_table
struct st_table * ensure_rollback_table
Definition: vm_core.h:633
rb_data_object_wrap
#define rb_data_object_wrap
Definition: rb_mjit_min_header-2.7.2.h:4923
varc
const VALUE int int int int int int VALUE char int varc
Definition: rb_mjit_min_header-2.7.2.h:6458
RUBY_FL_PROMOTED0
@ RUBY_FL_PROMOTED0
Definition: ruby.h:843
ttyname_r
int ttyname_r(int, char *, size_t)
rb_callable_method_entry_struct::called_id
ID called_id
Definition: method.h:63
BOP_SUCC
@ BOP_SUCC
Definition: rb_mjit_min_header-2.7.2.h:9618
rb_reg_match_last
VALUE rb_reg_match_last(VALUE)
Definition: re.c:1792
pthread_barrier_destroy
int pthread_barrier_destroy(pthread_barrier_t *)
rb_cv_set
void rb_cv_set(VALUE, const char *, VALUE)
Definition: variable.c:3142
BOP_OR
@ BOP_OR
Definition: rb_mjit_min_header-2.7.2.h:9630
j1
double j1(double)
rb_io_eof
VALUE rb_io_eof(VALUE)
Definition: io.c:2149
rb_ary_at
VALUE rb_ary_at(VALUE, VALUE)
Definition: array.c:1629
rb_to_float
VALUE rb_to_float(VALUE)
Converts a Numeric object into Float.
Definition: object.c:3542
rb_set_safe_level_force
void rb_set_safe_level_force(int)
Definition: safe.c:38
YARVINSN_putstring
@ YARVINSN_putstring
Definition: rb_mjit_min_header-2.7.2.h:11958
_uc_fpreg
Definition: rb_mjit_min_header-2.7.2.h:2039
_on_exit_args::_dso_handle
void * _dso_handle[32]
Definition: rb_mjit_min_header-2.7.2.h:961
tSingleton_method_removed
@ tSingleton_method_removed
Definition: rb_mjit_min_header-2.7.2.h:8579
rb_cMatch
VALUE rb_cMatch
Definition: ruby.h:2032
_pthread_cleanup_handler
Definition: rb_mjit_min_header-2.7.2.h:9212
VM_METHOD_TYPE_IVAR
@ VM_METHOD_TYPE_IVAR
Definition: rb_mjit_min_header-2.7.2.h:8795
YARVINSN_trace_reverse
@ YARVINSN_trace_reverse
Definition: rb_mjit_min_header-2.7.2.h:12080
wint_t
unsigned int wint_t
Definition: rb_mjit_min_header-2.7.2.h:844
rb_gvar_val_setter
rb_gvar_setter_t rb_gvar_val_setter
Definition: rb_mjit_min_header-2.7.2.h:5099
erfcl
long double erfcl(long double)
rb_global_vm_lock_struct::timer_err
int timer_err
Definition: thread_pthread.h:66
rb_mod_module_eval
VALUE rb_mod_module_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:2069
rb_hook_list_free
void rb_hook_list_free(rb_hook_list_t *hooks)
Definition: vm_trace.c:66
CLD_DUMPED
#define CLD_DUMPED
Definition: rb_mjit_min_header-2.7.2.h:2216
rb_big2str_gmp
VALUE rb_big2str_gmp(VALUE x, int base)
sigevent
Definition: rb_mjit_min_header-2.7.2.h:2092
u_int32_t
__uint32_t u_int32_t
Definition: rb_mjit_min_header-2.7.2.h:1158
expf
float expf(float)
rb_str_upto_each
VALUE rb_str_upto_each(VALUE, VALUE, int, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4263
RStruct::ptr
const VALUE * ptr
Definition: internal.h:947
rb_compile_option_struct::specialized_instruction
unsigned int specialized_instruction
Definition: iseq.h:210
ILL_ILLOPN
#define ILL_ILLOPN
Definition: rb_mjit_min_header-2.7.2.h:2194
rb_st_foreach
int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t)
rb_enc_set_dummy
int rb_enc_set_dummy(int index)
Definition: encoding.c:393
VM_DEFINECLASS_TYPE_CLASS
@ VM_DEFINECLASS_TYPE_CLASS
Definition: rb_mjit_min_header-2.7.2.h:9900
tTOKEN_CLASS_BEGIN
@ tTOKEN_CLASS_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8643
rb_vm_defineclass_type_t
rb_vm_defineclass_type_t
Definition: vm_core.h:993
pthread_suspend
int pthread_suspend(pthread_t)
__mcontext::esp
__uint32_t esp
Definition: rb_mjit_min_header-2.7.2.h:2079
rb_st_keys_check
st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never)
idTo_s
@ idTo_s
Definition: rb_mjit_min_header-2.7.2.h:8685
pthread_spin_init
int pthread_spin_init(pthread_spinlock_t *, int)
rb_obj_class
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
Definition: object.c:217
RUBY_ID_INTERNAL
@ RUBY_ID_INTERNAL
Definition: rb_mjit_min_header-2.7.2.h:8466
NODE_DEFN
@ NODE_DEFN
Definition: rb_mjit_min_header-2.7.2.h:8122
pthread_attr_t
struct __pthread_attr_t * pthread_attr_t
VM_FRAME_MAGIC_CLASS
@ VM_FRAME_MAGIC_CLASS
Definition: rb_mjit_min_header-2.7.2.h:10027
pthread_attr_setdetachstate
int pthread_attr_setdetachstate(pthread_attr_t *, int)
lldiv
lldiv_t lldiv(long long __numer, long long __denom)
rb_sym_to_s
VALUE rb_sym_to_s(VALUE)
Definition: string.c:10793
__asm__
int daylight __asm__("_" "_daylight")
RHASH_LEV_MAX
@ RHASH_LEV_MAX
Definition: rb_mjit_min_header-2.7.2.h:6849
getwd
char * getwd(char *__buf)
acoshf
float acoshf(float)
NODE_FOR_MASGN
@ NODE_FOR_MASGN
Definition: rb_mjit_min_header-2.7.2.h:8057
RUBY_SYMBOL_FLAG
@ RUBY_SYMBOL_FLAG
Definition: rb_mjit_min_header-2.7.2.h:4298
rb_ivar_get
VALUE rb_ivar_get(VALUE, ID)
Definition: variable.c:1070
ftrylockfile
int ftrylockfile(FILE *)
jnf
float jnf(int, float)
__uint_least16_t
short unsigned int __uint_least16_t
Definition: rb_mjit_min_header-2.7.2.h:633
BOP_MULT
@ BOP_MULT
Definition: rb_mjit_min_header-2.7.2.h:9604
uint32_t
__uint32_t uint32_t
Definition: rb_mjit_min_header-2.7.2.h:1176
RB_DEBUG_COUNTER_mjit_exec_not_compiled
@ RB_DEBUG_COUNTER_mjit_exec_not_compiled
Definition: rb_mjit_min_header-2.7.2.h:11654
rb_vm_mark
void rb_vm_mark(void *ptr)
Definition: vm.c:2243
rb_special_singleton_class
VALUE rb_special_singleton_class(VALUE)
Definition: class.c:1621
_findenv_r
char * _findenv_r(struct _reent *, const char *, int *)
pid_t
__pid_t pid_t
Definition: rb_mjit_min_header-2.7.2.h:1323
stat::st_atim
timestruc_t st_atim
Definition: rb_mjit_min_header-2.7.2.h:2400
rb_scope_visibility_set
void rb_scope_visibility_set(rb_method_visibility_t)
Definition: vm_method.c:1138
rb_big_norm
VALUE rb_big_norm(VALUE)
Definition: bignum.c:3152
sched_param
Definition: rb_mjit_min_header-2.7.2.h:9129
rb_const_lookup
rb_const_entry_t * rb_const_lookup(VALUE klass, ID id)
Definition: variable.c:3352
fill_values_arg::argc
int argc
Definition: vm_args.c:559
u_short
unsigned short u_short
Definition: rb_mjit_min_header-2.7.2.h:1287
_on_exit_args::_is_cxa
__ULong _is_cxa
Definition: rb_mjit_min_header-2.7.2.h:963
rb_str_new_frozen
VALUE rb_str_new_frozen(VALUE)
Definition: string.c:1203
VM_SPECIAL_OBJECT_CONST_BASE
@ VM_SPECIAL_OBJECT_CONST_BASE
Definition: rb_mjit_min_header-2.7.2.h:10002
revoke
int revoke(char *__path)
rb_node_case_when_optimizable_literal
VALUE rb_node_case_when_optimizable_literal(const NODE *const node)
Definition: compile.c:4289
rb_complex_pow
VALUE rb_complex_pow(VALUE base, VALUE exp)
Definition: complex.c:985
NODE_WHEN
@ NODE_WHEN
Definition: rb_mjit_min_header-2.7.2.h:8051
tNil
@ tNil
Definition: rb_mjit_min_header-2.7.2.h:8622
rb_ary_new
VALUE rb_ary_new(void)
Definition: array.c:723
idDivmod
@ idDivmod
Definition: rb_mjit_min_header-2.7.2.h:8699
__sFILE64::_r
int _r
Definition: rb_mjit_min_header-2.7.2.h:1009
tTo_proc
@ tTo_proc
Definition: rb_mjit_min_header-2.7.2.h:8601
rb_reg_alloc
VALUE rb_reg_alloc(void)
Definition: re.c:2889
_LOCK_T
void * _LOCK_T
Definition: rb_mjit_min_header-2.7.2.h:915
RB_DEBUG_COUNTER_obj_ary_ptr
@ RB_DEBUG_COUNTER_obj_ary_ptr
Definition: rb_mjit_min_header-2.7.2.h:11591
RB_DEBUG_COUNTER_gc_major_nofree
@ RB_DEBUG_COUNTER_gc_major_nofree
Definition: rb_mjit_min_header-2.7.2.h:11566
rb_vm_tag::retval
VALUE retval
Definition: vm_core.h:801
fstatat
int fstatat(int, const char *__restrict, struct stat *__restrict, int)
rb_define_class_id
VALUE rb_define_class_id(ID, VALUE)
Defines a new class.
Definition: class.c:602
posix_openpt
int posix_openpt(int)
rb_classext_struct::includer
const VALUE includer
Definition: internal.h:1042
cookie_read_function_t
ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n)
Definition: rb_mjit_min_header-2.7.2.h:1816
quick_exit
_Noreturn void quick_exit(int)
_getchar_r
int _getchar_r(struct _reent *)
rb_proc_times
VALUE rb_proc_times(VALUE)
rb_data_typed_object_zalloc
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type)
tanhl
long double tanhl(long double)
pthread_rwlock_destroy
int pthread_rwlock_destroy(pthread_rwlock_t *rwlock)
rb_data_object_make
#define rb_data_object_make
Definition: rb_mjit_min_header-2.7.2.h:4929
putc_unlocked
int putc_unlocked(int, FILE *)
rb_eSysStackError
VALUE rb_eSysStackError
Definition: eval.c:35
ruby_prog_init
void ruby_prog_init(void)
Defines built-in variables.
Definition: ruby.c:2353
rb_parser_new
VALUE rb_parser_new(void)
Definition: ripper.c:19206
ffsll
int ffsll(long long) __attribute__((__const__))
mjit_options::wait
unsigned int wait
Definition: rb_mjit_min_header-2.7.2.h:11698
rb_global_entry::id
ID id
Definition: internal.h:1352
RUBY_ID_SCOPE_MASK
@ RUBY_ID_SCOPE_MASK
Definition: rb_mjit_min_header-2.7.2.h:8468
rb_debug_counter_show_results
void rb_debug_counter_show_results(const char *msg)
Definition: debug_counter.c:116
rb_vmdebug_debug_print_pre
void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc)
Definition: vm_dump.c:385
NODE_DSYM
@ NODE_DSYM
Definition: rb_mjit_min_header-2.7.2.h:8143
rb_match_unbusy
void rb_match_unbusy(VALUE)
Definition: re.c:1293
rb_vraise
void rb_vraise(VALUE exc, const char *fmt, va_list ap)
Definition: error.c:2665
rb_load_fail
void rb_load_fail(VALUE path, const char *err)
Definition: error.c:2967
VM_ENV_FLAG_LOCAL
@ VM_ENV_FLAG_LOCAL
Definition: rb_mjit_min_header-2.7.2.h:10043
RUBY_TAG_RAISE
@ RUBY_TAG_RAISE
Definition: rb_mjit_min_header-2.7.2.h:9397
__size_t
#define __size_t
Definition: rb_mjit_min_header-2.7.2.h:662
rb_block::type
enum rb_block_type type
Definition: vm_core.h:757
pthread_attr_setscope
int pthread_attr_setscope(pthread_attr_t *, int)
rb_ensure_entry_t
struct rb_ensure_entry rb_ensure_entry_t
rb_timespec_now
void rb_timespec_now(struct timespec *)
Definition: time.c:1873
pthread_mutex_setprioceiling
int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *)
ruby_incpush
void ruby_incpush(const char *)
Definition: ruby.c:426
rb_big_pow
VALUE rb_big_pow(VALUE, VALUE)
Definition: bignum.c:6244
rb_big_pack
void rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
Definition: bignum.c:3215
rb_scope_visi_struct::module_func
unsigned int module_func
Definition: method.h:37
sched_get_thread_affinity
int sched_get_thread_affinity(void *, size_t, cpu_set_t *)
NODE_AND
@ NODE_AND
Definition: rb_mjit_min_header-2.7.2.h:8066
tm::tm_isdst
int tm_isdst
Definition: rb_mjit_min_header-2.7.2.h:1973
MISSING_MISSING
@ MISSING_MISSING
Definition: rb_mjit_min_header-2.7.2.h:7812
idRespond_to
@ idRespond_to
Definition: rb_mjit_min_header-2.7.2.h:8552
YARVINSN_splatarray
@ YARVINSN_splatarray
Definition: rb_mjit_min_header-2.7.2.h:11970
rb_big_gt
VALUE rb_big_gt(VALUE x, VALUE y)
Definition: bignum.c:5489
idTo_str
@ idTo_str
Definition: rb_mjit_min_header-2.7.2.h:8679
_puts_r
int _puts_r(struct _reent *, const char *)
RUBY_FIXNUM_FLAG
@ RUBY_FIXNUM_FLAG
Definition: rb_mjit_min_header-2.7.2.h:4295
rb_ast_struct
Definition: node.h:399
idEqlP
@ idEqlP
Definition: rb_mjit_min_header-2.7.2.h:8551
ruby_vm_global_method_state
rb_serial_t ruby_vm_global_method_state
Definition: vm.c:379
key_t
__key_t key_t
Definition: rb_mjit_min_header-2.7.2.h:1325
secure_getenv
char * secure_getenv(const char *__string)
imemo_type
imemo_type
Definition: internal.h:1132
rb_thread_create
VALUE rb_thread_create(VALUE(*)(void *), void *)
Definition: thread.c:966
rb_postponed_job_struct
Definition: vm_trace.c:1537
fgets
char * fgets(char *__restrict, int, FILE *__restrict)
tObject_id
@ tObject_id
Definition: rb_mjit_min_header-2.7.2.h:8573
vm_throw_data::throw_obj
const VALUE throw_obj
Definition: internal.h:1196
rb_str_to_str
VALUE rb_str_to_str(VALUE)
Definition: string.c:1382
rb_obj_is_fiber
VALUE rb_obj_is_fiber(VALUE)
Definition: cont.c:1041
rb_cNilClass
VALUE rb_cNilClass
NilClass class.
Definition: ruby.h:2036
RB_DEBUG_COUNTER_frame_push_rescue
@ RB_DEBUG_COUNTER_frame_push_rescue
Definition: rb_mjit_min_header-2.7.2.h:11536
asinhf
float asinhf(float)
_reent::_mbtowc_state
_mbstate_t _mbtowc_state
Definition: rb_mjit_min_header-2.7.2.h:1087
rb_num_t
unsigned long rb_num_t
Definition: rb_mjit_min_header-2.7.2.h:9388
NODE_DEFS
@ NODE_DEFS
Definition: rb_mjit_min_header-2.7.2.h:8123
RB_DEBUG_COUNTER_ccf_iseq_setup_0start
@ RB_DEBUG_COUNTER_ccf_iseq_setup_0start
Definition: rb_mjit_min_header-2.7.2.h:11512
rb_method_attr_struct::location
VALUE location
Definition: method.h:139
stat::st_mtim
timestruc_t st_mtim
Definition: rb_mjit_min_header-2.7.2.h:2401
_vsiscanf_r
int char char int int int int int int int int int int int int int _vsiscanf_r(struct _reent *, const char *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_args_info::opt_args
NODE * opt_args
Definition: node.h:447
rb_str_locktmp_ensure
VALUE rb_str_locktmp_ensure(VALUE str, VALUE(*func)(VALUE), VALUE arg)
Definition: string.c:2685
rb_iseq_constant_body::ISEQ_TYPE_BLOCK
@ ISEQ_TYPE_BLOCK
Definition: vm_core.h:315
vm_svar
SVAR (Special VARiable)
Definition: internal.h:1181
idNUMPARAM_2
@ idNUMPARAM_2
Definition: rb_mjit_min_header-2.7.2.h:8706
rb_syserr_fail
void rb_syserr_fail(int e, const char *mesg)
Definition: error.c:2783
__ssp_real_ttyname_r
int __ssp_real_ttyname_r(int __fd, char *__buf, size_t __len) __asm__("_" "ttyname_r")
YARVINSN_concatarray
@ YARVINSN_concatarray
Definition: rb_mjit_min_header-2.7.2.h:11969
pthread_rwlock_trywrlock
int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock)
METHOD_VISI_PRIVATE
@ METHOD_VISI_PRIVATE
Definition: rb_mjit_min_header-2.7.2.h:8730
rb_execarg::command_abspath
VALUE command_abspath
Definition: internal.h:2032
logf
float logf(float)
rb_vm_thread_backtrace_locations
VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:966
METHOD_VISI_UNDEF
@ METHOD_VISI_UNDEF
Definition: rb_mjit_min_header-2.7.2.h:8728
RUBY_FL_EXIVAR
@ RUBY_FL_EXIVAR
Definition: ruby.h:850
ftruncate
int ftruncate(int __fd, off_t __length)
log10
double log10(double)
rb_ary_tmp_new
VALUE rb_ary_tmp_new(long)
Definition: array.c:768
rb_stderr
VALUE rb_stderr
Definition: rb_mjit_min_header-2.7.2.h:5320
NODE_CVAR
@ NODE_CVAR
Definition: rb_mjit_min_header-2.7.2.h:8099
RArray::shared_root
const VALUE shared_root
Definition: ruby.h:1060
keys
const rb_iseq_t const char const VALUE keys
Definition: rb_mjit_min_header-2.7.2.h:13471
rb_execarg::gid
gid_t gid
Definition: rb_mjit_min_header-2.7.2.h:7626
rb_vm_get_binding_creatable_next_cfp
rb_control_frame_t * rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm.c:541
rb_const_missing
VALUE rb_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1694
getlogin_r
int getlogin_r(char *name, size_t namesize)
unsetenv
int unsetenv(const char *)
rb_global_vm_lock_struct::wait_yield
int wait_yield
Definition: thread_pthread.h:72
acoshl
long double acoshl(long double)
rb_iseq_constant_body::lead_num
int lead_num
Definition: vm_core.h:367
YARVINSN_trace_opt_not
@ YARVINSN_trace_opt_not
Definition: rb_mjit_min_header-2.7.2.h:12132
rb_execution_context_mark
void rb_execution_context_mark(const rb_execution_context_t *ec)
Definition: vm.c:2500
rb_autoload_at_p
VALUE rb_autoload_at_p(VALUE, ID, int)
Definition: variable.c:2291
rb_execarg::fd_dup2
VALUE fd_dup2
Definition: internal.h:2062
RFile::fptr
struct rb_io_t * fptr
Definition: ruby.h:1136
rb_get_path
VALUE rb_get_path(VALUE)
Definition: file.c:230
exp10f
float exp10f(float)
rb_cref_struct::scope_visi
const rb_scope_visibility_t scope_visi
Definition: method.h:46
rb_iseq_constant_body::pc2branchindex
VALUE pc2branchindex
Definition: vm_core.h:431
rb_big_divrem_normal
VALUE rb_big_divrem_normal(VALUE x, VALUE y)
Definition: bignum.c:2714
idBACKREF
@ idBACKREF
Definition: rb_mjit_min_header-2.7.2.h:8717
rb_objspace_each_objects_without_setup
void rb_objspace_each_objects_without_setup(int(*callback)(void *, void *, size_t, void *), void *data)
fork
pid_t fork(void)
idTo_ary
@ idTo_ary
Definition: rb_mjit_min_header-2.7.2.h:8678
rb_set_class_path
void rb_set_class_path(VALUE, VALUE, const char *)
Definition: variable.c:218
rb_iseq_location_struct
Definition: vm_core.h:272
rb_hash_resurrect
VALUE rb_hash_resurrect(VALUE hash)
Definition: hash.c:1575
RARRAY_ENUM_END
@ RARRAY_ENUM_END
Definition: ruby.h:1041
_impure_ptr
struct _reent * _impure_ptr
rb_define_module_id_under
VALUE rb_define_module_id_under(VALUE, ID)
Definition: class.c:803
rb_vm_struct::postponed_job_buffer
struct rb_postponed_job_struct * postponed_job_buffer
Definition: vm_core.h:636
rb_int_minus
VALUE rb_int_minus(VALUE x, VALUE y)
Definition: numeric.c:3649
mjit_remove_class_serial
void mjit_remove_class_serial(rb_serial_t class_serial)
frexpf
float frexpf(float, int *)
rb_gcd_gmp
VALUE rb_gcd_gmp(VALUE x, VALUE y)
rb_big2str_generic
VALUE rb_big2str_generic(VALUE x, int base)
Definition: bignum.c:5004
rb_hash_uint32
#define rb_hash_uint32(h, i)
Definition: rb_mjit_min_header-2.7.2.h:6088
daddr_t
long daddr_t
Definition: rb_mjit_min_header-2.7.2.h:1304
rb_vm_struct::coverages
VALUE coverages
Definition: vm_core.h:646
exp10l
float exp10l(float)
rb_hash_delete
VALUE rb_hash_delete(VALUE, VALUE)
Definition: hash.c:2344
rb_deprecated_classext_struct
Definition: classext.h:10
rb_iseq_disasm_insn
int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child)
Disassemble a instruction Iseq -> Iseq inspect object.
Definition: iseq.c:2021
int_least16_t
__int_least16_t int_least16_t
Definition: rb_mjit_min_header-2.7.2.h:2923
rb_vm_pop_cfunc_frame
MJIT_STATIC void rb_vm_pop_cfunc_frame(void)
Definition: rb_mjit_min_header-2.7.2.h:17248
rb_is_instance_name
int rb_is_instance_name(VALUE name)
Definition: symbol.c:1062
pthread_barrierattr_getpshared
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *)
rb_gc_unregister_address
void rb_gc_unregister_address(VALUE *)
Definition: gc.c:7092
TRAP_INTERRUPT_MASK
@ TRAP_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.2.h:10538
ruby_basic_operators
ruby_basic_operators
Definition: vm_core.h:515
rb_range_values
int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp)
Definition: range.c:1248
rb_st_lookup
int rb_st_lookup(st_table *, st_data_t, st_data_t *)
utoa
char * utoa(unsigned, char *, int)
aligned_alloc
void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1))) __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__))
YARVINSN_jump
@ YARVINSN_jump
Definition: rb_mjit_min_header-2.7.2.h:11999
RUBY_T_DATA
@ RUBY_T_DATA
Definition: rb_mjit_min_header-2.7.2.h:4330
atanl
long double atanl(long double)
RB_DEBUG_COUNTER_ccf_iseq_kw1
@ RB_DEBUG_COUNTER_ccf_iseq_kw1
Definition: rb_mjit_min_header-2.7.2.h:11516
rb_file_const
void rb_file_const(const char *, VALUE)
Definition: file.c:6083
rb_compile_warning
const char *void void rb_compile_warning(const char *, int, const char *,...) __attribute__((format(printf
rb_syserr_new
VALUE rb_syserr_new(int, const char *)
Definition: error.c:2769
klass
VALUE klass
Definition: rb_mjit_min_header-2.7.2.h:13222
__mcontext::eflags
__uint32_t eflags
Definition: rb_mjit_min_header-2.7.2.h:2078
finitel
int finitel(long double)
arc4random_uniform
__uint32_t arc4random_uniform(__uint32_t)
rb_ec_get_errinfo
VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec)
Definition: eval.c:1852
RHASH_LEV_SHIFT
@ RHASH_LEV_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:6848
sigsetjmp
#define sigsetjmp(env, savemask)
Definition: rb_mjit_min_header-2.7.2.h:9368
cosl
long double cosl(long double)
rb_args_info
Definition: node.h:432
args_info::rest_dupped
int rest_dupped
Definition: vm_args.c:29
lstat
int lstat(const char *__restrict __path, struct stat *__restrict __buf)
_putenv_r
int _putenv_r(struct _reent *, char *__string)
RUBY_T_MODULE
@ RUBY_T_MODULE
Definition: rb_mjit_min_header-2.7.2.h:4321
rb_hook_list_struct::events
rb_event_flag_t events
Definition: vm_core.h:567
pthread_sigqueue
int pthread_sigqueue(pthread_t *, int, const union sigval)
__pthread_mutex_t
Definition: rb_mjit_min_header-2.7.2.h:1378
__loff_t
_off64_t __loff_t
Definition: rb_mjit_min_header-2.7.2.h:879
rb_vm_protect_tag
Definition: vm_core.h:812
pthread_rwlock_rdlock
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock)
ruby_process_options
void * ruby_process_options(int, char **)
Definition: ruby.c:2399
rb_rational_new
VALUE rb_rational_new(VALUE, VALUE)
Definition: rational.c:1945
rb_hash_has_key
VALUE rb_hash_has_key(VALUE hash, VALUE key)
Definition: hash.c:3507
RB_DEBUG_COUNTER_gc_minor_newobj
@ RB_DEBUG_COUNTER_gc_minor_newobj
Definition: rb_mjit_min_header-2.7.2.h:11561
rb_undef_methods_from
void rb_undef_methods_from(VALUE klass, VALUE super)
Definition: class.c:1589
rb_ary_replace
VALUE rb_ary_replace(VALUE copy, VALUE orig)
Definition: array.c:3811
timespec::tv_sec
time_t tv_sec
Definition: missing.h:61
rb_imemo_tmpbuf_struct::ptr
VALUE * ptr
Definition: internal.h:1234
_erand48_r
double _erand48_r(struct _reent *, unsigned short[3])
strcasestr
char * strcasestr(const char *, const char *)
NODE_REDO
@ NODE_REDO
Definition: rb_mjit_min_header-2.7.2.h:8060
rb_method_entry_eq
int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2)
Definition: vm_method.c:1476
rb_vm_struct::sleeper
int sleeper
Definition: vm_core.h:607
RB_DEBUG_COUNTER_obj_data_xfree
@ RB_DEBUG_COUNTER_obj_data_xfree
Definition: rb_mjit_min_header-2.7.2.h:11612
VM_ENV_FLAG_ESCAPED
@ VM_ENV_FLAG_ESCAPED
Definition: rb_mjit_min_header-2.7.2.h:10044
execlpe
int execlpe(const char *__file, const char *,...)
rb_calling_info::kw_splat
int kw_splat
Definition: vm_core.h:254
__mcontext::dr7
__uint32_t dr7
Definition: rb_mjit_min_header-2.7.2.h:2063
YARVINSN_putobject_INT2FIX_0_
@ YARVINSN_putobject_INT2FIX_0_
Definition: rb_mjit_min_header-2.7.2.h:12039
rb_cBasicObject
VALUE rb_cBasicObject
BasicObject class.
Definition: ruby.h:2009
rb_float_ceil
VALUE rb_float_ceil(VALUE num, int ndigits)
Definition: numeric.c:2017
_drand48_r
double _drand48_r(struct _reent *)
rb_ary_pattern_info::post_args
NODE * post_args
Definition: node.h:457
ruby
The main namespace.
Definition: cxxanyargs.hpp:17
block_handler_type_proc
@ block_handler_type_proc
Definition: rb_mjit_min_header-2.7.2.h:9747
OPTIMIZED_METHOD_TYPE_SEND
@ OPTIMIZED_METHOD_TYPE_SEND
Definition: rb_mjit_min_header-2.7.2.h:8835
RArray::heap
struct RArray::@5::@6 heap
RB_DEBUG_COUNTER_mjit_cancel_send_inline
@ RB_DEBUG_COUNTER_mjit_cancel_send_inline
Definition: rb_mjit_min_header-2.7.2.h:11662
rb_str_ellipsize
VALUE rb_str_ellipsize(VALUE, long)
Shortens str and adds three dots, an ellipsis, if it is longer than len characters.
Definition: string.c:10185
NODE_VCALL
@ NODE_VCALL
Definition: rb_mjit_min_header-2.7.2.h:8084
time
time_t time(time_t *_timer)
pthread_attr_setschedpolicy
int pthread_attr_setschedpolicy(pthread_attr_t *, int)
strlcat
size_t strlcat(char *, const char *, size_t)
Definition: strlcat.c:31
rb_method_boundp
int rb_method_boundp(VALUE, ID, int)
Definition: vm_method.c:1102
rb_execarg::umask_mask
mode_t umask_mask
Definition: internal.h:2058
__path
__inline__ const char *__restrict __path
Definition: rb_mjit_min_header-2.7.2.h:3616
RB_DEBUG_COUNTER_obj_free
@ RB_DEBUG_COUNTER_obj_free
Definition: rb_mjit_min_header-2.7.2.h:11578
fmodl
long double fmodl(long double, long double)
ruby_dtrace_method_hook_args::filename
const char * filename
Definition: probes_helper.h:9
rb_iseq_struct::flags
VALUE flags
Definition: vm_core.h:457
fmaf
float fmaf(float, float, float)
strtoul
unsigned long strtoul(const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_vm_at_exit_func
void rb_vm_at_exit_func(struct rb_vm_struct *)
Definition: rb_mjit_min_header-2.7.2.h:9635
rb_default_home_dir
VALUE rb_default_home_dir(VALUE result)
Definition: file.c:3576
mkfifoat
int mkfifoat(int, const char *, mode_t)
__pthread_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1377
pthread_mutexattr_gettype
int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *)
YARVINSN_trace_opt_plus
@ YARVINSN_trace_opt_plus
Definition: rb_mjit_min_header-2.7.2.h:12110
rb_debug_counter_type
rb_debug_counter_type
Definition: debug_counter.h:348
y0
double y0(double)
cbase
VALUE cbase
Definition: rb_mjit_min_header-2.7.2.h:16113
rb_captured_block::ep
const VALUE * ep
Definition: vm_core.h:729
ST_REPLACE
@ ST_REPLACE
Definition: rb_mjit_min_header-2.7.2.h:5386
rb_nativethread_lock_destroy
void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock)
Definition: thread.c:439
rb_callable_method_entry_struct::defined_class
const VALUE defined_class
Definition: method.h:61
rb_objspace_reachable_objects_from
void rb_objspace_reachable_objects_from(VALUE obj, void(func)(VALUE, void *), void *data)
Definition: gc.c:9468
rb_str_freeze
VALUE rb_str_freeze(VALUE)
Definition: string.c:2616
__intptr_t
int __intptr_t
Definition: rb_mjit_min_header-2.7.2.h:643
rb_fdset_t::maxfd
int maxfd
Definition: rb_mjit_min_header-2.7.2.h:5702
sig_atomic_t
int sig_atomic_t
Definition: rb_mjit_min_header-2.7.2.h:2343
rb_vm_add_root_module
int rb_vm_add_root_module(ID id, VALUE module)
Definition: vm.c:2312
_fgetc_r
int _fgetc_r(struct _reent *, FILE *)
YARVINSN_swap
@ YARVINSN_swap
Definition: rb_mjit_min_header-2.7.2.h:11976
rb_string_value
VALUE rb_string_value(volatile VALUE *)
Definition: string.c:2175
__pthread_mutexattr_t
Definition: rb_mjit_min_header-2.7.2.h:1381
tLength
@ tLength
Definition: rb_mjit_min_header-2.7.2.h:8582
RObject::heap
struct RObject::@0::@1 heap
pthread_setspecific
int pthread_setspecific(pthread_key_t, const void *)
siginfo_t::si_stime
clock_t si_stime
Definition: rb_mjit_min_header-2.7.2.h:2145
rb_set_coverages
void rb_set_coverages(VALUE, int, VALUE)
Definition: thread.c:5489
block_type_iseq
@ block_type_iseq
Definition: rb_mjit_min_header-2.7.2.h:9750
setuid
int setuid(uid_t __uid)
rb_num_to_uint
int rb_num_to_uint(VALUE val, unsigned int *ret)
Definition: numeric.c:244
DEFINED_CONST
@ DEFINED_CONST
Definition: rb_mjit_min_header-2.7.2.h:10854
RB_DEBUG_COUNTER_obj_rational
@ RB_DEBUG_COUNTER_obj_rational
Definition: rb_mjit_min_header-2.7.2.h:11626
BOP_DIV
@ BOP_DIV
Definition: rb_mjit_min_header-2.7.2.h:9605
YARVINSN_defined
@ YARVINSN_defined
Definition: rb_mjit_min_header-2.7.2.h:11981
RB_DEBUG_COUNTER_obj_data_zombie
@ RB_DEBUG_COUNTER_obj_data_zombie
Definition: rb_mjit_min_header-2.7.2.h:11614
sigaltstack::ss_flags
int ss_flags
Definition: rb_mjit_min_header-2.7.2.h:2308
rb_vmdebug_stack_dump_raw
void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm_dump.c:192
__mcontext::cr2
__uint32_t cr2
Definition: rb_mjit_min_header-2.7.2.h:2083
block_handler
rb_control_frame_t struct rb_calling_info const struct rb_call_info VALUE block_handler
Definition: rb_mjit_min_header-2.7.2.h:15126
vm_svar::lastline
const VALUE lastline
Definition: internal.h:1184
rb_method_definition_struct::alias
rb_method_alias_t alias
Definition: method.h:172
rb_rs
VALUE rb_rs
Definition: intern.h:585
rb_execarg::new_pgroup_flag
unsigned new_pgroup_flag
Definition: internal.h:2050
rb_callable_method_entry_t
struct rb_callable_method_entry_struct rb_callable_method_entry_t
nan
double nan(const char *)
Definition: nan.c:7
YARVINSN_opt_aset
@ YARVINSN_opt_aset
Definition: rb_mjit_min_header-2.7.2.h:12022
tBACKREF
@ tBACKREF
Definition: rb_mjit_min_header-2.7.2.h:8638
rb_file_dirname
VALUE rb_file_dirname(VALUE fname)
Definition: file.c:4645
stat::st_rdev
dev_t st_rdev
Definition: rb_mjit_min_header-2.7.2.h:2398
rb_obj_is_instance_of
VALUE rb_obj_is_instance_of(VALUE, VALUE)
Determines if obj is an instance of c.
Definition: object.c:675
__tm
Definition: rb_mjit_min_header-2.7.2.h:947
__ssp_real_read
_ssize_t __ssp_real_read(int __fd, void *__buf, size_t __len) __asm__("_" "read")
itimerspec
Definition: rb_mjit_min_header-2.7.2.h:1251
rint
double rint(double)
rb_match_count
int rb_match_count(VALUE match)
Definition: re.c:1299
pthread_getschedparam
int pthread_getschedparam(pthread_t, int *, struct sched_param *)
clock_getenable_attr
int clock_getenable_attr(clockid_t clock_id, int *attr)
rb_mod_module_exec
VALUE rb_mod_module_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2103
uint_least64_t
__uint_least64_t uint_least64_t
Definition: rb_mjit_min_header-2.7.2.h:2930
__sprintf_chk
int __sprintf_chk(char *__restrict, int, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
get_current_dir_name
char * get_current_dir_name(void)
rb_obj_is_mutex
VALUE rb_obj_is_mutex(VALUE obj)
Definition: thread_sync.c:131
rb_int_cmp
VALUE rb_int_cmp(VALUE x, VALUE y)
Definition: numeric.c:4212
__mcontext::dr0
__uint32_t dr0
Definition: rb_mjit_min_header-2.7.2.h:2058
YARVINSN_intern
@ YARVINSN_intern
Definition: rb_mjit_min_header-2.7.2.h:11963
_fgets_r
char * _fgets_r(struct _reent *, char *__restrict, int, FILE *__restrict)
__errno
int * __errno(void)
rb_complex_new_polar
VALUE rb_complex_new_polar(VALUE abs, VALUE arg)
Definition: complex.c:1533
rb_vm_struct::main_thread
struct rb_thread_struct * main_thread
Definition: vm_core.h:581
NODE
struct RNode NODE
iseq_compile_data::node_level
int node_level
Definition: iseq.h:114
RClass::m_tbl
struct rb_id_table * m_tbl
Definition: rb_mjit_min_header-2.7.2.h:6975
rb_Array
VALUE rb_Array(VALUE)
Equivalent to Kernel#Array in Ruby.
Definition: object.c:3684
__sFILE64::_flags
short _flags
Definition: rb_mjit_min_header-2.7.2.h:1011
YARVINSN_trace_setspecial
@ YARVINSN_trace_setspecial
Definition: rb_mjit_min_header-2.7.2.h:12048
rb_vm_ifunc_new
struct vm_ifunc * rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc)
Definition: proc.c:699
pthread_mutexattr_getpshared
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *)
rb_iseqw_new
VALUE rb_iseqw_new(const rb_iseq_t *iseq)
Definition: iseq.c:1157
h
size_t st_index_t h
Definition: rb_mjit_min_header-2.7.2.h:5458
RB_DEBUG_COUNTER_obj_imemo_iseq
@ RB_DEBUG_COUNTER_obj_imemo_iseq
Definition: rb_mjit_min_header-2.7.2.h:11631
_reent::_emergency
char _emergency[25]
Definition: rb_mjit_min_header-2.7.2.h:1064
__sFILE::_close
int(* _close)(struct _reent *, void *)
Definition: rb_mjit_min_header-2.7.2.h:993
NODE_SCOPE
@ NODE_SCOPE
Definition: rb_mjit_min_header-2.7.2.h:8044
rb_fd_init
void rb_fd_init(rb_fdset_t *)
rb_uv_to_utf8
int rb_uv_to_utf8(char[6], unsigned long)
Definition: pack.c:1651
nearbyintl
long double nearbyintl(long double)
rb_ary_pattern_info::rest_arg
NODE * rest_arg
Definition: node.h:456
_fputc_unlocked_r
int _fputc_unlocked_r(struct _reent *, int, FILE *)
rb_nomethod_err_new
VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv)
Definition: error.c:1675
rb_obj_protected_methods
VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1380
__getdelim
ssize_t __getdelim(char **, size_t *, int, FILE *)
_uc_fpreg::exponent
__uint16_t exponent
Definition: rb_mjit_min_header-2.7.2.h:2041
asctime_r
char * asctime_r(const struct tm *__restrict, char *__restrict)
rb_node_init
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
Definition: node.c:1095
rb_cstr_to_inum
VALUE rb_cstr_to_inum(const char *, int, int)
Definition: bignum.c:4012
symlinkat
int symlinkat(const char *, int, const char *)
ruby_dtrace_method_hook_args::line_no
int line_no
Definition: probes_helper.h:10
rb_iv_get
VALUE rb_iv_get(VALUE, const char *)
Definition: variable.c:3305
setregid
int setregid(gid_t __rgid, gid_t __egid)
rb_grantpt
int rb_grantpt(int fd)
Definition: signal.c:1597
rb_mutex_unlock
VALUE rb_mutex_unlock(VALUE mutex)
Definition: thread_sync.c:403
pthread_t
struct __pthread_t * pthread_t
tInitialize_clone
@ tInitialize_clone
Definition: rb_mjit_min_header-2.7.2.h:8594
BOP_LTLT
@ BOP_LTLT
Definition: rb_mjit_min_header-2.7.2.h:9611
RRegexp
Definition: ruby.h:1112
rb_fix2str
VALUE rb_fix2str(VALUE, int)
Definition: numeric.c:3508
pthread_rwlock_unlock
int pthread_rwlock_unlock(pthread_rwlock_t *rwlock)
_fseek_r
int int _fseek_r(struct _reent *, FILE *, long, int)
sigval_t
union sigval sigval_t
putchar_unlocked
#define putchar_unlocked(_c)
Definition: rb_mjit_min_header-2.7.2.h:1881
gethostname
int gethostname(char *__name, size_t __len)
iseq_inline_storage_entry::iv_cache
struct iseq_inline_iv_cache_entry iv_cache
Definition: vm_core.h:237
rb_big_mul_gmp
VALUE rb_big_mul_gmp(VALUE x, VALUE y)
_strtoll_r
long long _strtoll_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
_reent::_r48
struct _rand48 _r48
Definition: rb_mjit_min_header-2.7.2.h:1085
__sFILE::_lbfsize
int _lbfsize
Definition: rb_mjit_min_header-2.7.2.h:985
error_t
int error_t
Definition: rb_mjit_min_header-2.7.2.h:10894
rb_obj_dig
VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound)
Definition: object.c:3791
vfork
pid_t vfork(void)
rb_enumeratorize_with_size
VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *)
Definition: enumerator.c:525
pc
rb_control_frame_t const VALUE * pc
Definition: rb_mjit_min_header-2.7.2.h:16903
BUS_ADRERR
#define BUS_ADRERR
Definition: rb_mjit_min_header-2.7.2.h:2212
rb_reg_options
int rb_reg_options(VALUE)
Definition: re.c:3579
list_head
Definition: rb_mjit_min_header-2.7.2.h:8940
NODE_RESBODY
@ NODE_RESBODY
Definition: rb_mjit_min_header-2.7.2.h:8064
idNUMPARAM_4
@ idNUMPARAM_4
Definition: rb_mjit_min_header-2.7.2.h:8708
RB_DEBUG_COUNTER_mc_inline_hit
@ RB_DEBUG_COUNTER_mc_inline_hit
Definition: rb_mjit_min_header-2.7.2.h:11495
_fpstate::sw
__uint32_t sw
Definition: rb_mjit_min_header-2.7.2.h:2046
rb_vm_insn_addr2insn
int rb_vm_insn_addr2insn(const void *)
Definition: iseq.c:3115
rb_iseq_label
VALUE rb_iseq_label(const rb_iseq_t *iseq)
Definition: iseq.c:1045
rb_thread_struct::blocking_region_buffer
void * blocking_region_buffer
Definition: vm_core.h:941
cbrtf
float cbrtf(float)
rb_iseq_location_struct::label
VALUE label
Definition: vm_core.h:275
RB_DEBUG_COUNTER_obj_ary_transient
@ RB_DEBUG_COUNTER_obj_ary_transient
Definition: rb_mjit_min_header-2.7.2.h:11590
sched_get_priority_min
int sched_get_priority_min(int __policy)
rb_args_info::imemo
VALUE imemo
Definition: node.h:451
arg_setup_type
arg_setup_type
Definition: vm_args.c:35
rb_iseq_defined_string
VALUE rb_iseq_defined_string(enum defined_type type)
Definition: iseq.c:3033
rb_insn_func_t
rb_control_frame_t *FUNC_FASTCALL rb_insn_func_t(rb_execution_context_t *, rb_control_frame_t *)
Definition: vm_core.h:1143
rb_convert_type_with_id
VALUE rb_convert_type_with_id(VALUE, int, const char *, ID)
Definition: object.c:2914
ruby_null_device
const char ruby_null_device[]
Definition: file.c:6389
rb_path2class
VALUE rb_path2class(const char *)
Definition: variable.c:268
vprintf
int int int int int int int vprintf(const char *, __gnuc_va_list) __attribute__((__format__(__printf__
NODE_OP_ASGN_AND
@ NODE_OP_ASGN_AND
Definition: rb_mjit_min_header-2.7.2.h:8078
rb_frame_this_func
ID rb_frame_this_func(void)
The original name of the current method.
Definition: eval.c:1183
__vsnprintf_chk
int int int int __vsnprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict, __va_list) __attribute__((__format__(__printf__
rb_thread_wait_fd
void rb_thread_wait_fd(int)
Definition: thread.c:4042
NODE_SELF
@ NODE_SELF
Definition: rb_mjit_min_header-2.7.2.h:8136
rb_iseq_load
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
Definition: iseq.c:972
rb_execarg::dup2_tmpbuf
VALUE dup2_tmpbuf
Definition: internal.h:2040
rb_thread_shield_release
VALUE rb_thread_shield_release(VALUE self)
Definition: thread.c:4835
YARVINSN_expandarray
@ YARVINSN_expandarray
Definition: rb_mjit_min_header-2.7.2.h:11968
rb_remove_method_id
void rb_remove_method_id(VALUE, ID)
Definition: vm_method.c:1026
RB_DEBUG_COUNTER_obj_ary_shared
@ RB_DEBUG_COUNTER_obj_ary_shared
Definition: rb_mjit_min_header-2.7.2.h:11594
rb_iseq_constant_body::local_table_size
unsigned int local_table_size
Definition: vm_core.h:435
rb_ec_setup_exception
void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause)
Definition: eval.c:639
RUBY_T_ZOMBIE
@ RUBY_T_ZOMBIE
Definition: rb_mjit_min_header-2.7.2.h:4343
__pthread_spinlock_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1392
rb_vm_cref
rb_cref_t * rb_vm_cref(void)
Definition: vm.c:1384
NODE_DOT3
@ NODE_DOT3
Definition: rb_mjit_min_header-2.7.2.h:8133
rb_iseq_constant_body::is_entries
union iseq_inline_storage_entry * is_entries
Definition: vm_core.h:420
iprintf
int int int int int int int int char char int int int int iprintf(const char *,...) __attribute__((__format__(__printf__
rb_io_flush
VALUE rb_io_flush(VALUE)
Definition: io.c:1903
RB_DEBUG_COUNTER_obj_match_ge8
@ RB_DEBUG_COUNTER_obj_match_ge8
Definition: rb_mjit_min_header-2.7.2.h:11617
freopen
FILE * freopen(const char *__restrict, const char *__restrict, FILE *__restrict)
fsblkcnt_t
__fsblkcnt_t fsblkcnt_t
Definition: rb_mjit_min_header-2.7.2.h:1308
YARVINSN_getblockparam
@ YARVINSN_getblockparam
Definition: rb_mjit_min_header-2.7.2.h:11941
sigaction
int sigaction(int, const struct sigaction *, struct sigaction *)
pthread_timedjoin_np
int pthread_timedjoin_np(pthread_t, void **, const struct timespec *)
_Static_assert
_Static_assert(sizeof(struct rb_call_cache)<=64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE")
__isinfd
int __isinfd(double x)
wcstoumax_l
uintmax_t wcstoumax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t)
rb_data_type_struct::dfree
void(* dfree)(void *)
Definition: ruby.h:1152
rb_str_chomp_string
VALUE rb_str_chomp_string(VALUE str, VALUE chomp)
Definition: string.c:8921
rb_ary_unshift
VALUE rb_ary_unshift(VALUE, VALUE)
Definition: array.c:1494
rb_error_untrusted
void rb_error_untrusted(VALUE)
Definition: error.c:3036
YARVINSN_opt_mult
@ YARVINSN_opt_mult
Definition: rb_mjit_min_header-2.7.2.h:12009
rb_compile_option_struct::frozen_string_literal
unsigned int frozen_string_literal
Definition: iseq.h:214
ruby_api_version
const int ruby_api_version[]
Definition: iseq.h:15
native_thread_data_struct::node
union native_thread_data_struct::@0 node
__sigset_t
unsigned long __sigset_t
Definition: rb_mjit_min_header-2.7.2.h:1231
rb_ast_t
struct rb_ast_struct rb_ast_t
expl
long double expl(long double)
fd_set
struct fd_set fd_set
rb_ary_cmp
VALUE rb_ary_cmp(VALUE, VALUE)
Definition: array.c:4420
rb_args_info::ruby2_keywords
unsigned int ruby2_keywords
Definition: node.h:449
fwrite_unlocked
size_t fwrite_unlocked(const void *__restrict, size_t _size, size_t _n, FILE *)
rb_thread_struct::status
enum rb_thread_status status
Definition: rb_mjit_min_header-2.7.2.h:9860
rb_postponed_job_flush
void rb_postponed_job_flush(rb_vm_t *vm)
Definition: vm_trace.c:1662
atanhf
float atanhf(float)
rb_ec_frame_method_id_and_class
int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp)
Definition: vm.c:2200
rb_iseq_parameters
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
Definition: iseq.c:2939
rb_check_frozen
#define rb_check_frozen(obj)
Definition: rb_mjit_min_header-2.7.2.h:5684
_fscanf_r
int _fscanf_r(struct _reent *, FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
int32_t
__int32_t int32_t
Definition: rb_mjit_min_header-2.7.2.h:1174
YARVINSN_opt_empty_p
@ YARVINSN_opt_empty_p
Definition: rb_mjit_min_header-2.7.2.h:12027
BOP_MATCH
@ BOP_MATCH
Definition: rb_mjit_min_header-2.7.2.h:9623
YARVINSN_invokebuiltin
@ YARVINSN_invokebuiltin
Definition: rb_mjit_min_header-2.7.2.h:12032
rb_fd_copy
void rb_fd_copy(rb_fdset_t *, const fd_set *, int)
mjit_func_t
VALUE(* mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *)
Definition: rb_mjit_min_header-2.7.2.h:11708
itoa
char * itoa(int, char *, int)
_getc_unlocked_r
int _getc_unlocked_r(struct _reent *, FILE *)
rb_insecure_operation
void rb_insecure_operation(void)
Definition: safe.c:122
rb_argv0
VALUE rb_argv0
Definition: intern.h:734
rb_syswait
void rb_syswait(pid_t pid)
rb_serial_t
unsigned long rb_serial_t
Definition: internal.h:1014
YARVINSN_trace_invokesuper
@ YARVINSN_trace_invokesuper
Definition: rb_mjit_min_header-2.7.2.h:12098
rb_print_backtrace
void rb_print_backtrace(void)
Definition: vm_dump.c:750
_iconv_t
void * _iconv_t
Definition: rb_mjit_min_header-2.7.2.h:897
rb_execution_context_struct::thread_ptr
struct rb_thread_struct * thread_ptr
Definition: vm_core.h:857
lgamma
double lgamma(double)
strtod_l
double strtod_l(const char *__restrict, char **__restrict, locale_t)
rb_cRubyVM
VALUE rb_cRubyVM
Definition: vm.c:365
__utoa
char * __utoa(unsigned, char *, int)
rb_singleton_class_attached
void rb_singleton_class_attached(VALUE, VALUE)
Attach a object to a singleton class.
Definition: class.c:426
_fread_unlocked_r
size_t _fread_unlocked_r(struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_fiber_close
void rb_fiber_close(rb_fiber_t *fib)
Definition: cont.c:2072
rb_thread_struct::thgroup
VALUE thgroup
Definition: vm_core.h:943
rb_control_frame_t
struct rb_control_frame_struct rb_control_frame_t
rb_method_entry_with_refinements
const rb_method_entry_t * rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:911
YARVINSN_trace_opt_send_without_block
@ YARVINSN_trace_opt_send_without_block
Definition: rb_mjit_min_header-2.7.2.h:12092
sigwait
int sigwait(const sigset_t *, int *)
RB_DEBUG_COUNTER_obj_hash_3
@ RB_DEBUG_COUNTER_obj_hash_3
Definition: rb_mjit_min_header-2.7.2.h:11599
tTOKEN_LOCAL_END
@ tTOKEN_LOCAL_END
Definition: rb_mjit_min_header-2.7.2.h:8633
rb_vm_top_self
VALUE rb_vm_top_self(void)
Definition: vm.c:3347
RUBY_T_MATCH
@ RUBY_T_MATCH
Definition: rb_mjit_min_header-2.7.2.h:4331
rb_cmpint
int rb_cmpint(VALUE, VALUE, VALUE)
Definition: bignum.c:2925
rb_ensure_entry::data2
VALUE data2
Definition: vm_core.h:831
ruby_num_interval_step_size
VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl)
Definition: numeric.c:2555
rb_io_addstr
VALUE rb_io_addstr(VALUE, VALUE)
Definition: io.c:1843
rb_reg_search0
long rb_reg_search0(VALUE, VALUE, long, int, int)
Definition: re.c:1530
rb_time_utc_offset
VALUE rb_time_utc_offset(VALUE time)
Definition: time.c:4796
rb_struct_alloc
VALUE rb_struct_alloc(VALUE, VALUE)
Definition: struct.c:724
rb_eRegexpError
VALUE rb_eRegexpError
Definition: ruby.h:2078
rb_struct_new
VALUE rb_struct_new(VALUE,...)
Definition: struct.c:730
tSucc
@ tSucc
Definition: rb_mjit_min_header-2.7.2.h:8585
tDiv
@ tDiv
Definition: rb_mjit_min_header-2.7.2.h:8617
pow10
double pow10(double)
YARVINSN_definesmethod
@ YARVINSN_definesmethod
Definition: rb_mjit_min_header-2.7.2.h:11987
f_hash
const VALUE int int int int int f_hash
Definition: rb_mjit_min_header-2.7.2.h:6458
RB_DEBUG_COUNTER_lvar_set_dynamic
@ RB_DEBUG_COUNTER_lvar_set_dynamic
Definition: rb_mjit_min_header-2.7.2.h:11558
chdir
int chdir(const char *__path)
rb_vm_struct::orig_progname
VALUE orig_progname
Definition: vm_core.h:645
rb_check_trusted
void rb_check_trusted(VALUE)
Definition: error.c:3043
sqrt
double sqrt(double)
VM_FRAME_MAGIC_MASK
@ VM_FRAME_MAGIC_MASK
Definition: rb_mjit_min_header-2.7.2.h:10034
rb_ary_entry
VALUE rb_ary_entry(VALUE, long)
Definition: array.c:1512
rb_cSymbol
VALUE rb_cSymbol
Definition: ruby.h:2046
rb_thread_id_string_t
char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) *2+3]
Definition: rb_mjit_min_header-2.7.2.h:9815
__mcontext
Definition: rb_mjit_min_header-2.7.2.h:2056
putc
int putc(int, FILE *)
NODE_SPLAT
@ NODE_SPLAT
Definition: rb_mjit_min_header-2.7.2.h:8120
strcspn
size_t strcspn(const char *, const char *)
rb_trace_arg_struct
Definition: vm_core.h:1874
__tm::__tm_wday
int __tm_wday
Definition: rb_mjit_min_header-2.7.2.h:954
rb_jump_tag
void rb_jump_tag(int tag)
Continues the exception caught by rb_protect() and rb_eval_string_protect().
Definition: eval.c:884
_fopen_r
FILE * _fopen_r(struct _reent *, const char *__restrict, const char *__restrict)
RUBY_TAG_THROW
@ RUBY_TAG_THROW
Definition: rb_mjit_min_header-2.7.2.h:9398
_fpstate::cw
__uint32_t cw
Definition: rb_mjit_min_header-2.7.2.h:2045
__sFILE::_offset
_off_t _offset
Definition: rb_mjit_min_header-2.7.2.h:1001
rb_iseq_mark_insn_storage
void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena)
Definition: compile.c:9198
RFile
Definition: ruby.h:1134
rb_undefine_finalizer
VALUE rb_undefine_finalizer(VALUE)
Definition: gc.c:3193
memccpy
void * memccpy(void *__restrict, const void *__restrict, int, size_t)
getpagesize
int getpagesize(void)
rb_func_lambda_new
VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc)
Definition: proc.c:735
rb_class_path
VALUE rb_class_path(VALUE)
Definition: variable.c:153
BOP_NIL_P
@ BOP_NIL_P
Definition: rb_mjit_min_header-2.7.2.h:9617
erfl
long double erfl(long double)
rb_eFloatDomainError
VALUE rb_eFloatDomainError
Definition: ruby.h:2075
rb_execarg::invoke
union rb_execarg::@9 invoke
daemon
int daemon(int nochdir, int noclose)
idUScore
@ idUScore
Definition: rb_mjit_min_header-2.7.2.h:8704
sym
#define sym(x)
Definition: date_core.c:3716
RUBY_T_NIL
@ RUBY_T_NIL
Definition: rb_mjit_min_header-2.7.2.h:4334
rb_eEOFError
VALUE rb_eEOFError
Definition: ruby.h:2059
rb_obj_info_dump
void rb_obj_info_dump(VALUE obj)
Definition: gc.c:11689
rb_check_to_integer
VALUE rb_check_to_integer(VALUE, const char *)
Tries to convert val into Integer.
Definition: object.c:2999
rb_yield_splat
VALUE rb_yield_splat(VALUE)
Definition: vm_eval.c:1283
_asnprintf_r
int char char * _asnprintf_r(struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
DEFINED_ZSUPER
@ DEFINED_ZSUPER
Definition: rb_mjit_min_header-2.7.2.h:10857
fchmod
int fchmod(int __fd, mode_t __mode)
rb_str_concat_literals
VALUE rb_str_concat_literals(size_t, const VALUE *)
Definition: string.c:2974
rb_class_private_instance_methods
VALUE rb_class_private_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1310
idIFUNC
@ idIFUNC
Definition: rb_mjit_min_header-2.7.2.h:8554
__sFILE::_ubuf
unsigned char _ubuf[3]
Definition: rb_mjit_min_header-2.7.2.h:997
rb_compile_option_struct
Definition: iseq.h:206
clearerr_unlocked
#define clearerr_unlocked(p)
Definition: rb_mjit_min_header-2.7.2.h:1865
ilogbf
int ilogbf(float)
tTOKEN_ATTRSET_BEGIN
@ tTOKEN_ATTRSET_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8645
_Noreturn
#define _Noreturn
Definition: ripper.c:1304
asinl
long double asinl(long double)
feof_unlocked
#define feof_unlocked(p)
Definition: rb_mjit_min_header-2.7.2.h:1863
rb_builtin_type_name
const char * rb_builtin_type_name(int t)
Definition: error.c:763
fputc_unlocked
int fputc_unlocked(int, FILE *)
rb_iseq_constant_body::has_post
unsigned int has_post
Definition: vm_core.h:355
_jrand48_r
long _jrand48_r(struct _reent *, unsigned short[3])
idObject_id
@ idObject_id
Definition: rb_mjit_min_header-2.7.2.h:8654
rb_arith_seq_new
VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv, rb_enumerator_size_func *size_fn, VALUE beg, VALUE end, VALUE step, int excl)
Definition: enumerator.c:3308
rb_cloexec_dup2
int rb_cloexec_dup2(int oldfd, int newfd)
Definition: io.c:325
rb_vm_struct::gvl
rb_global_vm_lock_t gvl
Definition: vm_core.h:579
rb_to_id
ID rb_to_id(VALUE)
Definition: string.c:11146
rb_nativethread_self
rb_nativethread_id_t rb_nativethread_self()
rb_ident_hash_new
VALUE rb_ident_hash_new(void)
Definition: hash.c:4278
pthread_mutex_init
int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *)
rb_ary_resize
VALUE rb_ary_resize(VALUE ary, long len)
expands or shrinks ary to len elements.
Definition: array.c:1955
rb_thread_t
struct rb_thread_struct rb_thread_t
rb_gc_count
size_t rb_gc_count(void)
Definition: gc.c:8714
_reent::_atexit0
struct _atexit _atexit0
Definition: rb_mjit_min_header-2.7.2.h:1107
__sFILE::_seek
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
Definition: rb_mjit_min_header-2.7.2.h:992
VM_FRAME_MAGIC_BLOCK
@ VM_FRAME_MAGIC_BLOCK
Definition: rb_mjit_min_header-2.7.2.h:10026
rb_iseq_trace_set
void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events)
Definition: iseq.c:3273
rb_usascii_str_new_cstr
#define rb_usascii_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6117
rb_ec_set_raised
int rb_ec_set_raised(rb_execution_context_t *ec)
Definition: thread.c:2344
RMoved::flags
VALUE flags
Definition: internal.h:909
stack_t
struct sigaltstack stack_t
NOT_ADDED_JIT_ISEQ_FUNC
@ NOT_ADDED_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.2.h:11687
_vdiprintf_r
int char char int int _vdiprintf_r(struct _reent *, int, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_execution_context_struct::errinfo
VALUE errinfo
Definition: vm_core.h:875
ctime_r
char * ctime_r(const time_t *, char *)
rb_simple_iseq_p
MJIT_STATIC bool rb_simple_iseq_p(const rb_iseq_t *iseq)
Definition: vm_insnhelper.c:1919
vm_svar_index
vm_svar_index
Definition: vm_core.h:1120
ruby_robject_flags
ruby_robject_flags
Definition: ruby.h:915
pthread_attr_getschedparam
int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *)
OPTIMIZED_METHOD_TYPE_CALL
@ OPTIMIZED_METHOD_TYPE_CALL
Definition: rb_mjit_min_header-2.7.2.h:8836
rb_iseq_constant_body::ci_size
unsigned int ci_size
Definition: vm_core.h:437
__sFILE::_file
short _file
Definition: vsnprintf.c:176
YARVINSN_trace_dup
@ YARVINSN_trace_dup
Definition: rb_mjit_min_header-2.7.2.h:12077
st
enum ruby_tag_type st
Definition: rb_mjit_min_header-2.7.2.h:11079
trunc
double trunc(double)
lround
long int lround(double)
rb_method_cfunc_struct::func
VALUE(* func)(ANYARGS)
Definition: method.h:132
rb_imemo_tmpbuf_struct::next
struct rb_imemo_tmpbuf_struct * next
Definition: internal.h:1235
pthread_sigmask
int pthread_sigmask(int, const sigset_t *, sigset_t *)
ruby_strtoul
unsigned long ruby_strtoul(const char *str, char **endptr, int base)
Definition: util.c:130
rb_proc_call
VALUE rb_proc_call(VALUE, VALUE)
Definition: proc.c:966
rb_dvar_defined
int rb_dvar_defined(ID, const struct rb_iseq_struct *)
_reent::_stdin
__FILE * _stdin
Definition: rb_mjit_min_header-2.7.2.h:1062
srand
void srand(unsigned __seed)
fscanf
int int fscanf(FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
__tzrule_struct::d
int d
Definition: rb_mjit_min_header-2.7.2.h:2011
YARVINSN_opt_or
@ YARVINSN_opt_or
Definition: rb_mjit_min_header-2.7.2.h:12020
rb_execution_context_struct::interrupt_flag
rb_atomic_t interrupt_flag
Definition: vm_core.h:853
iscanf
int int int int int int int int char char int int int int int iscanf(const char *,...) __attribute__((__format__(__scanf__
__ino_t
__uint64_t __ino_t
Definition: rb_mjit_min_header-2.7.2.h:866
rb_fstring_cstr
#define rb_fstring_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:7681
YARVINSN_opt_neq
@ YARVINSN_opt_neq
Definition: rb_mjit_min_header-2.7.2.h:12013
rb_big_sq_fast
VALUE rb_big_sq_fast(VALUE x)
Definition: bignum.c:1630
_sigcommune::_si_write_handle
void * _si_write_handle
Definition: rb_mjit_min_header-2.7.2.h:2104
asctime
char * asctime(const struct tm *_tblock)
NODE_IASGN
@ NODE_IASGN
Definition: rb_mjit_min_header-2.7.2.h:8073
fsync
int fsync(int __fd)
pthread_setname_np
int pthread_setname_np(pthread_t, const char *) __attribute__((__nonnull__(2)))
ruby_scan_digits
unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow)
Definition: util.c:97
vm_svar::cref_or_me
const VALUE cref_or_me
class reference or rb_method_entry_t
Definition: internal.h:1183
rb_objspace_call_finalizer
void rb_objspace_call_finalizer(struct rb_objspace *)
Definition: gc.c:3443
iseq_inline_cache_entry
Definition: vm_core.h:220
rb_big_resize
void rb_big_resize(VALUE big, size_t len)
Definition: bignum.c:2989
rb_gc_writebarrier_unprotect
void rb_gc_writebarrier_unprotect(VALUE obj)
Definition: gc.c:6841
rb_spawn_err
pid_t rb_spawn_err(int, const VALUE *, char *, size_t)
Definition: process.c:4442
rb_execarg::shell_script
VALUE shell_script
Definition: internal.h:2028
MEMO::u3
union MEMO::@8 u3
cookie_seek_function_t
int cookie_seek_function_t(void *__cookie, _off64_t *__off, int __whence)
Definition: rb_mjit_min_header-2.7.2.h:1819
mjit_options::debug_flags
char * debug_flags
Definition: rb_mjit_min_header-2.7.2.h:11697
rb_p
void rb_p(VALUE)
Definition: io.c:7798
fcloseall
int fcloseall(void)
VM_CHECKMATCH_TYPE_CASE
@ VM_CHECKMATCH_TYPE_CASE
Definition: rb_mjit_min_header-2.7.2.h:9967
BOP_LENGTH
@ BOP_LENGTH
Definition: rb_mjit_min_header-2.7.2.h:9614
atanhl
long double atanhl(long double)
_fputc_r
int _fputc_r(struct _reent *, int, FILE *)
rb_thread_atfork
void rb_thread_atfork(void)
Definition: thread.c:4548
NODE_LIT
@ NODE_LIT
Definition: rb_mjit_min_header-2.7.2.h:8105
pthread_getspecific
void * pthread_getspecific(pthread_key_t)
rb_mjit_compile_info
Definition: rb_mjit_min_header-2.7.2.h:11703
pthread_getcpuclockid
int pthread_getcpuclockid(pthread_t, clockid_t *)
rb_float_plus
VALUE rb_float_plus(VALUE x, VALUE y)
Definition: numeric.c:1024
RB_DEBUG_COUNTER_obj_str_ptr
@ RB_DEBUG_COUNTER_obj_str_ptr
Definition: rb_mjit_min_header-2.7.2.h:11584
rb_str_cat
VALUE rb_str_cat(VALUE, const char *, long)
Definition: string.c:2812
rb_iseq_constant_body::size
unsigned int size
Definition: vm_core.h:365
rb_execution_context_struct::passed_block_handler
VALUE passed_block_handler
Definition: vm_core.h:876
rb_unblock_callback
Definition: vm_core.h:816
vm_object_t
void * vm_object_t
Definition: rb_mjit_min_header-2.7.2.h:1445
RB_DEBUG_COUNTER_obj_str_shared
@ RB_DEBUG_COUNTER_obj_str_shared
Definition: rb_mjit_min_header-2.7.2.h:11586
RB_DEBUG_COUNTER_mc_global_miss
@ RB_DEBUG_COUNTER_mc_global_miss
Definition: rb_mjit_min_header-2.7.2.h:11498
rb_method_bmethod_t
struct rb_method_bmethod_struct rb_method_bmethod_t
pwrite
ssize_t pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
rb_hash_aset
VALUE rb_hash_aset(VALUE, VALUE, VALUE)
Definition: hash.c:2852
__pthread_barrierattr_t
Definition: rb_mjit_min_header-2.7.2.h:1384
sin
double sin(double)
rb_vm_t
struct rb_vm_struct rb_vm_t
rb_cref_struct
CREF (Class REFerence)
Definition: method.h:41
strtosigno
int strtosigno(const char *__name)
getpid
pid_t getpid(void)
ILL_ILLADR
#define ILL_ILLADR
Definition: rb_mjit_min_header-2.7.2.h:2195
rb_gvar_getter_function_of
rb_gvar_getter_t * rb_gvar_getter_function_of(const struct rb_global_entry *)
Definition: variable.c:702
call_type
call_type
Definition: vm_eval.c:31
NODE_NEXT
@ NODE_NEXT
Definition: rb_mjit_min_header-2.7.2.h:8059
sethostname
int sethostname(const char *, size_t)
lseek
off_t lseek(int __fildes, off_t __offset, int __whence)
YARVINSN_dup
@ YARVINSN_dup
Definition: rb_mjit_min_header-2.7.2.h:11974
ucontext_t
ucontext_t
Definition: rb_mjit_min_header-2.7.2.h:2341
rb_thread_fd_close
void rb_thread_fd_close(int)
Definition: thread.c:2386
rb_fiber_yield
VALUE rb_fiber_yield(int argc, const VALUE *argv)
Definition: cont.c:2129
perror
void perror(const char *)
_reent::_h_errno
int _h_errno
Definition: rb_mjit_min_header-2.7.2.h:1097
NODE_POSTEXE
@ NODE_POSTEXE
Definition: rb_mjit_min_header-2.7.2.h:8142
rawmemchr
void * rawmemchr(const void *, int)
rb_ary_dup
VALUE rb_ary_dup(VALUE)
Definition: array.c:2238
strstr
char * strstr(const char *, const char *)
Definition: strstr.c:8
YARVINSN_trace_newhash
@ YARVINSN_trace_newhash
Definition: rb_mjit_min_header-2.7.2.h:12074
tNUMPARAM_3
@ tNUMPARAM_3
Definition: rb_mjit_min_header-2.7.2.h:8626
_flock_t
_LOCK_T _flock_t
Definition: rb_mjit_min_header-2.7.2.h:937
RBasicRaw::klass
VALUE klass
Definition: internal.h:1984
iseq_inline_storage_entry::once
struct iseq_inline_storage_entry::@2 once
rb_errinfo
VALUE rb_errinfo(void)
The current exception in the current thread.
Definition: eval.c:1882
rb_enum_values_pack
VALUE rb_enum_values_pack(int, const VALUE *)
Definition: enum.c:33
rb_calling_info::block_handler
VALUE block_handler
Definition: vm_core.h:251
_diprintf_r
int char char int int _diprintf_r(struct _reent *, int, const char *,...) __attribute__((__format__(__printf__
rb_str_tmp_new
VALUE rb_str_tmp_new(long)
Definition: string.c:1343
rb_method_basic_definition_p
#define rb_method_basic_definition_p(klass, mid)
Definition: rb_mjit_min_header-2.7.2.h:7863
YARVINSN_trace_send
@ YARVINSN_trace_send
Definition: rb_mjit_min_header-2.7.2.h:12091
VM_FRAME_FLAG_BMETHOD
@ VM_FRAME_FLAG_BMETHOD
Definition: rb_mjit_min_header-2.7.2.h:10037
memchr
void * memchr(const void *, int, size_t)
rb_call_info_with_kwarg::kw_arg
struct rb_call_info_kw_arg * kw_arg
Definition: vm_core.h:247
rb_method_entry_t
struct rb_method_entry_struct rb_method_entry_t
__sFILE64::_blksize
int _blksize
Definition: rb_mjit_min_header-2.7.2.h:1030
rb_code_position_struct::column
int column
Definition: node.h:132
imemo_parser_strterm
@ imemo_parser_strterm
Definition: rb_mjit_min_header-2.7.2.h:7039
YARVINSN_checkkeyword
@ YARVINSN_checkkeyword
Definition: rb_mjit_min_header-2.7.2.h:11983
rb_gvar_var_getter
rb_gvar_getter_t rb_gvar_var_getter
Definition: rb_mjit_min_header-2.7.2.h:5101
_fwrite_r
size_t _fwrite_r(struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict)
siginfo_t::si_pid
pid_t si_pid
Definition: rb_mjit_min_header-2.7.2.h:2121
rb_execarg::uid_given
unsigned uid_given
Definition: internal.h:2051
rb_big_modulo
VALUE rb_big_modulo(VALUE, VALUE)
Definition: bignum.c:6103
YARVINSN_opt_div
@ YARVINSN_opt_div
Definition: rb_mjit_min_header-2.7.2.h:12010
rb_num2ushort
unsigned short rb_num2ushort(VALUE)
Definition: numeric.c:3059
mjit_options::save_temps
char save_temps
Definition: rb_mjit_min_header-2.7.2.h:11694
__tzinfo_struct
Definition: rb_mjit_min_header-2.7.2.h:2017
_fopencookie_r
FILE * _fopencookie_r(struct _reent *, void *__cookie, const char *__mode, cookie_io_functions_t __functions)
rb_st_foreach_check
int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t)
st_index_t
st_data_t st_index_t
Definition: st.h:50
RB_DEBUG_COUNTER_gc_major_oldmalloc
@ RB_DEBUG_COUNTER_gc_major_oldmalloc
Definition: rb_mjit_min_header-2.7.2.h:11570
fopencookie
FILE * fopencookie(void *__cookie, const char *__mode, cookie_io_functions_t __functions)
VM_FRAME_MAGIC_METHOD
@ VM_FRAME_MAGIC_METHOD
Definition: rb_mjit_min_header-2.7.2.h:10025
rb_compile_option_struct::tailcall_optimization
unsigned int tailcall_optimization
Definition: iseq.h:209
rb_threadptr_signal_raise
void rb_threadptr_signal_raise(rb_thread_t *th, int sig)
Definition: thread.c:2324
fgets_unlocked
char * fgets_unlocked(char *__restrict, int, FILE *__restrict)
_vsniprintf_r
int char char int int int int int int int int int int int int int int _vsniprintf_r(struct _reent *, char *, size_t, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
RComplex::real
VALUE real
Definition: internal.h:807
rb_big_mul_karatsuba
VALUE rb_big_mul_karatsuba(VALUE x, VALUE y)
Definition: bignum.c:1870
_exit
void _exit(int __status) __attribute__((__noreturn__))
_
#define _(args)
Definition: rb_mjit_min_header-2.7.2.h:3916
__gid_t
__uint32_t __gid_t
Definition: rb_mjit_min_header-2.7.2.h:864
ruby_dtoa
char * ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
rb_iseq_struct::exec
struct rb_iseq_struct::@6::@8 exec
getpgid
pid_t getpgid(pid_t)
rb_proc_arity
int rb_proc_arity(VALUE)
Definition: proc.c:1112
FPE_FLTRES
#define FPE_FLTRES
Definition: rb_mjit_min_header-2.7.2.h:2206
RB_DEBUG_COUNTER_ccf_attrset
@ RB_DEBUG_COUNTER_ccf_attrset
Definition: rb_mjit_min_header-2.7.2.h:11520
rb_backtrace_p
int rb_backtrace_p(VALUE obj)
Definition: vm_backtrace.c:446
rb_eql_opt
VALUE rb_eql_opt(VALUE obj1, VALUE obj2)
Definition: rb_mjit_min_header-2.7.2.h:13409
rb_include_class_new
VALUE rb_include_class_new(VALUE, VALUE)
Definition: class.c:825
RB_INT_PARSE_ALL
@ RB_INT_PARSE_ALL
Definition: rb_mjit_min_header-2.7.2.h:7900
rb_obj_public_methods
VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1410
link
int link(const char *__path1, const char *__path2)
Definition: win32.c:4931
frexp
double frexp(double, int *)
rb_vm_struct::load_path_check_cache
VALUE load_path_check_cache
Definition: vm_core.h:617
__sFILE::_up
unsigned char * _up
Definition: rb_mjit_min_header-2.7.2.h:995
RB_WARN_CATEGORY_NONE
@ RB_WARN_CATEGORY_NONE
Definition: rb_mjit_min_header-2.7.2.h:7297
pthread_getname_np
int pthread_getname_np(pthread_t, char *, size_t) __attribute__((__nonnull__(2)))
st_hash_type
Definition: st.h:61
__pthread_condattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1382
RNode::state
long state
Definition: node.h:166
rb_big2long
long rb_big2long(VALUE)
Definition: bignum.c:5140
pause
int pause(void)
vm_throw_data
THROW_DATA.
Definition: internal.h:1193
vhangup
int vhangup(void)
rb_hash_stlike_delete
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval)
Definition: hash.c:2310
rb_ary_last
VALUE rb_ary_last(int, const VALUE *, VALUE)
Definition: array.c:1677
vm_throw_data::flags
VALUE flags
Definition: internal.h:1194
rb_iseq_constant_body::catch_table
struct iseq_catch_table * catch_table
Definition: vm_core.h:414
tTOKEN_CONST_END
@ tTOKEN_CONST_END
Definition: rb_mjit_min_header-2.7.2.h:8642
BOP_PLUS
@ BOP_PLUS
Definition: rb_mjit_min_header-2.7.2.h:9602
RB_DEBUG_COUNTER_gc_minor_stress
@ RB_DEBUG_COUNTER_gc_minor_stress
Definition: rb_mjit_min_header-2.7.2.h:11565
rb_num2ulong
unsigned long rb_num2ulong(VALUE)
Definition: numeric.c:2918
__pid_t
int __pid_t
Definition: rb_mjit_min_header-2.7.2.h:874
pthread_barrierattr_init
int pthread_barrierattr_init(pthread_barrierattr_t *)
RB_DEBUG_COUNTER_ccf_cfunc
@ RB_DEBUG_COUNTER_ccf_cfunc
Definition: rb_mjit_min_header-2.7.2.h:11518
rb_ast_free
void rb_ast_free(rb_ast_t *)
Definition: node.c:1352
RB_DEBUG_COUNTER_gc_major_oldgen
@ RB_DEBUG_COUNTER_gc_major_oldgen
Definition: rb_mjit_min_header-2.7.2.h:11567
rb_hash_stlike_foreach
int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg)
Definition: hash.c:1442
YARVINSN_trace_opt_case_dispatch
@ YARVINSN_trace_opt_case_dispatch
Definition: rb_mjit_min_header-2.7.2.h:12109
rb_env_t
Definition: vm_core.h:1055
pthread_key_t
struct __pthread_key_t * pthread_key_t
RCLASS_SUPER
#define RCLASS_SUPER(c)
rb_str_cat2
#define rb_str_cat2
Definition: rb_mjit_min_header-2.7.2.h:6133
YARVINSN_opt_str_freeze
@ YARVINSN_opt_str_freeze
Definition: rb_mjit_min_header-2.7.2.h:11990
rb_vm_struct::special_exceptions
const VALUE special_exceptions[ruby_special_error_count]
Definition: vm_core.h:611
rb_gc_mark_locations
void rb_gc_mark_locations(const VALUE *, const VALUE *)
Definition: gc.c:4702
log2l
long double log2l(long double)
iseq_compile_data::redo_label
struct iseq_label_data * redo_label
Definition: iseq.h:100
YARVINSN_getblockparamproxy
@ YARVINSN_getblockparamproxy
Definition: rb_mjit_min_header-2.7.2.h:11943
RMoved::next
VALUE next
Definition: internal.h:911
RB_DEBUG_COUNTER_gc_count
@ RB_DEBUG_COUNTER_gc_count
Definition: rb_mjit_min_header-2.7.2.h:11560
pthread_mutex_destroy
int pthread_mutex_destroy(pthread_mutex_t *)
rb_eZeroDivError
VALUE rb_eZeroDivError
Definition: ruby.h:2071
RUBY_T_ICLASS
@ RUBY_T_ICLASS
Definition: rb_mjit_min_header-2.7.2.h:4342
cnt
rb_atomic_t cnt[RUBY_NSIG]
Definition: signal.c:503
rb_dbl_complex_new
VALUE rb_dbl_complex_new(double real, double imag)
Creates a Complex object.
Definition: complex.c:1561
rb_vrescue2
VALUE rb_vrescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE, va_list)
An equivalent of rescue clause.
Definition: eval.c:977
ceill
long double ceill(long double)
__int8_t
signed char __int8_t
Definition: rb_mjit_min_header-2.7.2.h:617
me
const rb_callable_method_entry_t * me
Definition: rb_mjit_min_header-2.7.2.h:13194
rb_thread_stop
VALUE rb_thread_stop(void)
Definition: thread.c:2596
tFdiv
@ tFdiv
Definition: rb_mjit_min_header-2.7.2.h:8619
rb_int_positive_pow
VALUE rb_int_positive_pow(long x, unsigned long y)
Definition: numeric.c:4033
rb_numeric_quo
VALUE rb_numeric_quo(VALUE x, VALUE y)
Definition: rational.c:2014
YARVINSN_invokeblock
@ YARVINSN_invokeblock
Definition: rb_mjit_min_header-2.7.2.h:11996
rb_stdio_set_default_encoding
void rb_stdio_set_default_encoding(void)
Definition: io.c:11758
RString::len
long len
Definition: ruby.h:992
YARVINSN_trace_opt_neq
@ YARVINSN_trace_opt_neq
Definition: rb_mjit_min_header-2.7.2.h:12116
rb_obj_freeze
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
Definition: object.c:1080
rb_hash_delete_entry
VALUE rb_hash_delete_entry(VALUE hash, VALUE key)
Definition: hash.c:2326
rb_mod_sys_fail
void rb_mod_sys_fail(VALUE mod, const char *mesg)
Definition: error.c:2835
rb_binding_t::block
const struct rb_block block
Definition: vm_core.h:1069
rb_method_definition_struct::iseq
rb_method_iseq_t iseq
Definition: method.h:169
_fpstate::nxst
__uint32_t nxst
Definition: rb_mjit_min_header-2.7.2.h:2053
pthread_spin_trylock
int pthread_spin_trylock(pthread_spinlock_t *)
ynf
float ynf(int, float)
YARVINSN_trace_getspecial
@ YARVINSN_trace_getspecial
Definition: rb_mjit_min_header-2.7.2.h:12047
rb_global_vm_lock_struct::switch_cond
rb_nativethread_cond_t switch_cond
Definition: thread_pthread.h:69
rb_proc_location
VALUE rb_proc_location(VALUE self)
Definition: proc.c:1256
rb_copy_generic_ivar
void rb_copy_generic_ivar(VALUE, VALUE)
Definition: variable.c:1447
METHOD_VISI_PUBLIC
@ METHOD_VISI_PUBLIC
Definition: rb_mjit_min_header-2.7.2.h:8729
RArray::ary
const VALUE ary[RARRAY_EMBED_LEN_MAX]
Definition: ruby.h:1064
YARVINSN_trace_getclassvariable
@ YARVINSN_trace_getclassvariable
Definition: rb_mjit_min_header-2.7.2.h:12051
RIMemo::v2
VALUE v2
Definition: internal.h:1128
NODE_ZLIST
@ NODE_ZLIST
Definition: rb_mjit_min_header-2.7.2.h:8089
_reent::_wcsrtombs_state
_mbstate_t _wcsrtombs_state
Definition: rb_mjit_min_header-2.7.2.h:1096
ruby_show_copyright
void ruby_show_copyright(void)
Prints the copyright notice of the CRuby interpreter to stdout.
Definition: version.c:138
sigset
_sig_func_ptr sigset(int, _sig_func_ptr)
rb_classext_struct::refined_class
const VALUE refined_class
Definition: internal.h:1040
rb_rational_reciprocal
VALUE rb_rational_reciprocal(VALUE x)
Definition: rational.c:1875
ruby_register_rollback_func_for_ensure
void ruby_register_rollback_func_for_ensure(VALUE(*ensure_func)(VALUE), VALUE(*rollback_func)(VALUE))
eaccess
int eaccess(const char *__path, int __mode)
Definition: file.c:1460
RARRAY_EMBED_LEN_SHIFT
#define RARRAY_EMBED_LEN_SHIFT
NODE_ARGSPUSH
@ NODE_ARGSPUSH
Definition: rb_mjit_min_header-2.7.2.h:8119
BOP_UMINUS
@ BOP_UMINUS
Definition: rb_mjit_min_header-2.7.2.h:9625
rb_fd_fix_cloexec
void rb_fd_fix_cloexec(int fd)
Definition: io.c:268
rb_nativethread_lock_lock
void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock)
Definition: thread.c:445
RB_BUILTIN
const struct rb_builtin_function * RB_BUILTIN
Definition: rb_mjit_min_header-2.7.2.h:9650
rb_str_format
VALUE rb_str_format(int, const VALUE *, VALUE)
Definition: sprintf.c:204
tException
@ tException
Definition: rb_mjit_min_header-2.7.2.h:8612
rb_dbl_long_hash
long rb_dbl_long_hash(double d)
Definition: hash.c:160
ruby_script
void ruby_script(const char *name)
Sets the current script name to this value.
Definition: ruby.c:2289
iseq_inline_storage_entry::value
VALUE value
Definition: vm_core.h:234
NODE_OPT_ARG
@ NODE_OPT_ARG
Definition: rb_mjit_min_header-2.7.2.h:8115
rb_lcm
VALUE rb_lcm(VALUE x, VALUE y)
Definition: rational.c:1913
rb_hash_default_value
VALUE rb_hash_default_value(VALUE hash, VALUE key)
Definition: hash.c:1990
rb_reg_nth_match
VALUE rb_reg_nth_match(int, VALUE)
Definition: re.c:1706
fmodf
float fmodf(float, float)
YARVINSN_trace_branchif
@ YARVINSN_trace_branchif
Definition: rb_mjit_min_header-2.7.2.h:12103
st_hash_type::compare
int(* compare)(st_data_t, st_data_t)
Definition: st.h:62
cmp_opt_Float
@ cmp_opt_Float
Definition: rb_mjit_min_header-2.7.2.h:7161
rb_random_ulong_limited
unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit)
Definition: random.c:930
RB_DEBUG_COUNTER_ivar_get_ic_miss_unset
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_unset
Definition: rb_mjit_min_header-2.7.2.h:11545
RHASH_AR_TABLE_BOUND_MASK
#define RHASH_AR_TABLE_BOUND_MASK
Definition: rb_mjit_min_header-2.7.2.h:6863
scalblnl
long double scalblnl(long double, long)
rb_iseq_constant_body::type
enum rb_iseq_constant_body::iseq_type type
tgammaf
float tgammaf(float)
rb_error_frozen_object
void rb_error_frozen_object(VALUE frozen_obj)
Definition: error.c:3008
ruby_rarray_flags
ruby_rarray_flags
Definition: ruby.h:1027
ruby_check_sizeof_int
char ruby_check_sizeof_int[4==sizeof(int) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.2.h:3998
difftime
double difftime(time_t _time2, time_t _time1)
rb_sym_proc_call
VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc)
Definition: string.c:10816
rb_struct_aref
VALUE rb_struct_aref(VALUE, VALUE)
Definition: struct.c:1061
rb_sys_fail
void rb_sys_fail(const char *mesg)
Definition: error.c:2795
YARVINSN_trace_newrange
@ YARVINSN_trace_newrange
Definition: rb_mjit_min_header-2.7.2.h:12075
rb_method_entry_copy
void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src)
Definition: vm_method.c:451
rb_call_data::cc
struct rb_call_cache cc
Definition: internal.h:2400
FPE_INTDIV
#define FPE_INTDIV
Definition: rb_mjit_min_header-2.7.2.h:2201
lrintl
long int lrintl(long double)
strlwr
char * strlwr(char *)
setenv
int setenv(const char *__string, const char *__value, int __overwrite)
vasiprintf
int int int int int int int int char char int int int int int int int int int vasiprintf(char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_eTypeError
VALUE rb_eTypeError
Definition: error.c:924
rb_iseq_build_from_ary
void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc, VALUE locals, VALUE args, VALUE exception, VALUE body)
Definition: compile.c:9250
rb_require
VALUE rb_require(const char *)
Definition: load.c:1117
__sFILE64::_ub
struct __sbuf _ub
Definition: rb_mjit_min_header-2.7.2.h:1024
ROBJECT_ENUM_END
@ ROBJECT_ENUM_END
Definition: ruby.h:919
rb_genrand_real
double rb_genrand_real(void)
Definition: random.c:122
_vsscanf_r
int char char int int int int int int int int int int int int int int int int int _vsscanf_r(struct _reent *, const char *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
ST_CHECK
@ ST_CHECK
Definition: rb_mjit_min_header-2.7.2.h:5386
useconds_t
__useconds_t useconds_t
Definition: rb_mjit_min_header-2.7.2.h:1339
rb_str_fill_terminator
char * rb_str_fill_terminator(VALUE str, const int termlen)
Definition: string.c:2306
linkat
int linkat(int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags)
_iprintf_r
int _iprintf_r(struct _reent *, const char *,...) __attribute__((__format__(__printf__
RB_DEBUG_COUNTER_obj_data_imm_free
@ RB_DEBUG_COUNTER_obj_data_imm_free
Definition: rb_mjit_min_header-2.7.2.h:11613
_vasnprintf_r
int char char * _vasnprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
_ungetc_r
int _ungetc_r(struct _reent *, int, FILE *)
rb_complex_new
VALUE rb_complex_new(VALUE, VALUE)
Definition: complex.c:1527
_ftell_r
long _ftell_r(struct _reent *, FILE *)
RRational::den
VALUE den
Definition: internal.h:791
__tzinfo_struct::__tzrule
__tzrule_type __tzrule[2]
Definition: rb_mjit_min_header-2.7.2.h:2020
rb_fdset_t
fd_set rb_fdset_t
Definition: intern.h:403
__fpclassifyd
int __fpclassifyd(double x)
__dev_t
__uint32_t __dev_t
Definition: rb_mjit_min_header-2.7.2.h:856
rb_hook_list_struct::need_clean
unsigned int need_clean
Definition: vm_core.h:568
execv
int execv(const char *__path, char *const __argv[])
rb_method_entry_struct::flags
VALUE flags
Definition: method.h:52
rb_f_global_variables
VALUE rb_f_global_variables(void)
Definition: variable.c:728
rb_cFalseClass
VALUE rb_cFalseClass
FalseClass class.
Definition: ruby.h:2022
rb_print_inaccessible
void rb_print_inaccessible(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:411
rb_execution_context_struct::vm_stack
VALUE * vm_stack
Definition: vm_core.h:845
setgid
int setgid(gid_t __gid)
RB_DEBUG_COUNTER_ivar_get_ic_hit
@ RB_DEBUG_COUNTER_ivar_get_ic_hit
Definition: rb_mjit_min_header-2.7.2.h:11542
rb_execution_context_struct::trace_arg
struct rb_trace_arg_struct * trace_arg
Definition: vm_core.h:872
rb_interrupt
void rb_interrupt(void)
Raises an Interrupt exception.
Definition: eval.c:697
rb_int_parse_flags
rb_int_parse_flags
Definition: internal.h:2463
RB_DEBUG_COUNTER_mjit_length_stale_units
@ RB_DEBUG_COUNTER_mjit_length_stale_units
Definition: rb_mjit_min_header-2.7.2.h:11668
fma
double fma(double, double, double)
node_type
node_type
Definition: node.h:22
VM_FRAME_FLAG_FINISH
@ VM_FRAME_FLAG_FINISH
Definition: rb_mjit_min_header-2.7.2.h:10036
rb_st_add_direct
void rb_st_add_direct(st_table *, st_data_t, st_data_t)
__ssp_real_wctomb
int __ssp_real_wctomb(char *__buf, wchar_t __wc) __asm__("_" "wctomb")
_mbstate_t::__wch
wint_t __wch
Definition: rb_mjit_min_header-2.7.2.h:893
imemo_ment
@ imemo_ment
Definition: rb_mjit_min_header-2.7.2.h:7035
vars
const VALUE int int int int int int VALUE * vars[]
Definition: rb_mjit_min_header-2.7.2.h:6458
rb_compile_option_struct::peephole_optimization
unsigned int peephole_optimization
Definition: iseq.h:208
rb_data_type_struct::dsize
size_t(* dsize)(const void *)
Definition: ruby.h:1153
rb_ec_backtrace_str_ary
VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n)
Definition: vm_backtrace.c:714
RSTRUCT_TRANSIENT_FLAG
@ RSTRUCT_TRANSIENT_FLAG
Definition: rb_mjit_min_header-2.7.2.h:6898
iseq_compile_data::current_block
const rb_iseq_t * current_block
Definition: iseq.h:101
rb_vm_struct::thread_vm_stack_size
size_t thread_vm_stack_size
Definition: vm_core.h:663
rb_call_info::mid
ID mid
Definition: internal.h:2395
RB_DEBUG_COUNTER_mc_cme_complement_hit
@ RB_DEBUG_COUNTER_mc_cme_complement_hit
Definition: rb_mjit_min_header-2.7.2.h:11502
rb_vm_struct::fiber_vm_stack_size
size_t fiber_vm_stack_size
Definition: vm_core.h:665
rb_num_coerce_relop
VALUE rb_num_coerce_relop(VALUE, VALUE, ID)
Definition: numeric.c:461
ftello
off_t ftello(FILE *)
rb_iseq_add_local_tracepoint_recursively
int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line)
Definition: iseq.c:3206
rb_is_global_id
int rb_is_global_id(ID id)
Definition: symbol.c:866
YARVINSN_trace_topn
@ YARVINSN_trace_topn
Definition: rb_mjit_min_header-2.7.2.h:12081
pthread_barrier_t
struct __pthread_barrier_t * pthread_barrier_t
rb_num_negative_p
int rb_num_negative_p(VALUE)
Definition: numeric.c:313
VM_CALL_KWARG_bit
@ VM_CALL_KWARG_bit
Definition: rb_mjit_min_header-2.7.2.h:9979
YARVINSN_newarraykwsplat
@ YARVINSN_newarraykwsplat
Definition: rb_mjit_min_header-2.7.2.h:11965
RB_DEBUG_COUNTER_mc_class_serial_miss
@ RB_DEBUG_COUNTER_mc_class_serial_miss
Definition: rb_mjit_min_header-2.7.2.h:11500
rb_backtrace_print_as_bugreport
void rb_backtrace_print_as_bugreport(void)
Definition: vm_backtrace.c:813
fputs_unlocked
int fputs_unlocked(const char *__restrict, FILE *__restrict)
rb_method_alias_struct::original_me
struct rb_method_entry_struct * original_me
Definition: method.h:143
fdim
double fdim(double, double)
_setjmp
int _setjmp(jmp_buf)
lgammal
long double lgammal(long double)
sbintime_t
__int64_t sbintime_t
Definition: rb_mjit_min_header-2.7.2.h:1341
idMin
@ idMin
Definition: rb_mjit_min_header-2.7.2.h:8650
rb_big2ulong
unsigned long rb_big2ulong(VALUE)
Definition: bignum.c:5125
rb_integer_float_cmp
VALUE rb_integer_float_cmp(VALUE x, VALUE y)
Definition: bignum.c:5325
__getline
ssize_t __getline(char **, size_t *, FILE *)
NODE_ONCE
@ NODE_ONCE
Definition: rb_mjit_min_header-2.7.2.h:8112
id_core_set_variable_alias
@ id_core_set_variable_alias
Definition: rb_mjit_min_header-2.7.2.h:8557
rb_find_file_ext_safe
int rb_find_file_ext_safe(VALUE *, const char *const *, int)
Definition: file.c:6263
idCall
@ idCall
Definition: rb_mjit_min_header-2.7.2.h:8691
SIGEV_NONE
#define SIGEV_NONE
Definition: rb_mjit_min_header-2.7.2.h:2227
rb_mod_method_arity
int rb_mod_method_arity(VALUE, ID)
Definition: proc.c:2644
_glue::_next
struct _glue * _next
Definition: rb_mjit_min_header-2.7.2.h:1040
rb_ll2inum
VALUE rb_ll2inum(long long)
rb_str_opt_plus
VALUE rb_str_opt_plus(VALUE, VALUE)
Definition: string.c:1925
__pthread_rwlock_t
Definition: rb_mjit_min_header-2.7.2.h:1393
fiprintf
int int int int int int int int char char int int fiprintf(FILE *, const char *,...) __attribute__((__format__(__printf__
u_int16_t
__uint16_t u_int16_t
Definition: rb_mjit_min_header-2.7.2.h:1157
rb_gc_mark_values
void rb_gc_mark_values(long n, const VALUE *values)
Definition: gc.c:4718
rb_eRuntimeError
VALUE rb_eRuntimeError
Definition: error.c:922
rb_integer_pack
int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
Definition: bignum.c:3547
RB_DEBUG_COUNTER_obj_hash_2
@ RB_DEBUG_COUNTER_obj_hash_2
Definition: rb_mjit_min_header-2.7.2.h:11598
input
unsigned int input
Definition: nkf.c:4325
rb_str_subpos
char * rb_str_subpos(VALUE, long, long *)
Definition: string.c:2497
idNULL
@ idNULL
Definition: rb_mjit_min_header-2.7.2.h:8549
__chk_fail
void __chk_fail(void) __attribute__((__noreturn__))
infinityf
float infinityf(void)
rb_event_hook_func_t
void(* rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass)
Definition: rb_mjit_min_header-2.7.2.h:6324
__sFILE64::_ubuf
unsigned char _ubuf[3]
Definition: rb_mjit_min_header-2.7.2.h:1027
rb_vm_struct::cmd
VALUE cmd[RUBY_NSIG]
Definition: vm_core.h:626
qsort
void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
RNode::args
struct rb_args_info * args
Definition: node.h:168
rb_vm_struct::verbose
VALUE verbose
Definition: vm_core.h:645
RB_DEBUG_COUNTER_obj_symbol
@ RB_DEBUG_COUNTER_obj_symbol
Definition: rb_mjit_min_header-2.7.2.h:11629
rb_fiber_struct
Definition: cont.c:226
atol
long atol(const char *__nptr)
rb_obj_frozen_p
VALUE rb_obj_frozen_p(VALUE obj)
Determines if the object is frozen.
Definition: object.c:1099
RB_DEBUG_COUNTER_frame_push_eval
@ RB_DEBUG_COUNTER_frame_push_eval
Definition: rb_mjit_min_header-2.7.2.h:11535
RClass::basic
struct RBasic basic
Definition: internal.h:1049
rb_ivar_foreach
void rb_ivar_foreach(VALUE, int(*)(ID, VALUE, st_data_t), st_data_t)
getentropy
int getentropy(void *, size_t)
rb_execution_context_struct::stack_start
VALUE * stack_start
Definition: vm_core.h:887
_pthread_cleanup_handler::arg
void * arg
Definition: rb_mjit_min_header-2.7.2.h:9214
RB_DEBUG_COUNTER_obj_hash_st
@ RB_DEBUG_COUNTER_obj_hash_st
Definition: rb_mjit_min_header-2.7.2.h:11605
MEMO::cnt
long cnt
Definition: internal.h:1284
rb_check_array_type
VALUE rb_check_array_type(VALUE)
Definition: array.c:909
tTOKEN_LOCAL_BEGIN
@ tTOKEN_LOCAL_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8567
cookie_io_functions_t
Definition: rb_mjit_min_header-2.7.2.h:1823
getpeereid
int getpeereid(int, uid_t *, gid_t *)
_sprintf_r
int int int int int int _sprintf_r(struct _reent *, char *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
NODE_MASGN
@ NODE_MASGN
Definition: rb_mjit_min_header-2.7.2.h:8068
sigjmp_buf
int sigjmp_buf[(13 *4)+1+(sizeof(sigset_t)/sizeof(int))]
Definition: rb_mjit_min_header-2.7.2.h:9361
sigval::sival_int
int sival_int
Definition: rb_mjit_min_header-2.7.2.h:2088
rb_external_str_new
VALUE rb_external_str_new(const char *, long)
Definition: string.c:1087
wcstoimax_l
intmax_t wcstoimax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t)
rb_find_file_safe
VALUE rb_find_file_safe(VALUE, int)
Definition: file.c:6329
strcasecmp_l
int strcasecmp_l(const char *, const char *, locale_t)
NODE_RESCUE
@ NODE_RESCUE
Definition: rb_mjit_min_header-2.7.2.h:8063
RUBY_Qfalse
#define RUBY_Qfalse
Definition: rb_mjit_min_header-2.7.2.h:4301
ruby_sighandler_t
void(* ruby_sighandler_t)(int)
Definition: rb_mjit_min_header-2.7.2.h:10389
rb_int_idiv
VALUE rb_int_idiv(VALUE x, VALUE y)
Definition: numeric.c:3843
rb_mod_remove_cvar
VALUE rb_mod_remove_cvar(VALUE, VALUE)
Definition: variable.c:3284
finite
int finite(double)
Definition: finite.c:6
rb_ary_clear
VALUE rb_ary_clear(VALUE)
Definition: array.c:3862
rb_thread_run
VALUE rb_thread_run(VALUE)
Definition: thread.c:2587
rb_execarg::envp_str
VALUE envp_str
Definition: internal.h:2038
rb_const_defined
int rb_const_defined(VALUE, ID)
Definition: variable.c:2686
rb_fs
VALUE rb_fs
Definition: intern.h:583
clockid_t
__clockid_t clockid_t
Definition: rb_mjit_min_header-2.7.2.h:1333
rb_random_int32
unsigned int rb_random_int32(VALUE rnd)
Definition: random.c:835
rb_yield_splat_kw
VALUE rb_yield_splat_kw(VALUE, int)
Definition: vm_eval.c:1296
mod
#define mod(x, y)
Definition: date_strftime.c:28
_ssize_t
signed int _ssize_t
Definition: rb_mjit_min_header-2.7.2.h:885
rb_control_frame_struct
Definition: vm_core.h:760
restrict
#define restrict
Definition: rb_mjit_min_header-2.7.2.h:80
pthread_attr_getstack
int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *)
RMODULE_IS_REFINEMENT
#define RMODULE_IS_REFINEMENT
siginfo_t::si_addr
void * si_addr
Definition: rb_mjit_min_header-2.7.2.h:2147
_dprintf_r
int char char int int int _dprintf_r(struct _reent *, int, const char *__restrict,...) __attribute__((__format__(__printf__
uint_fast8_t
unsigned char uint_fast8_t
Definition: rb_mjit_min_header-2.7.2.h:2933
rb_reg_last_match
VALUE rb_reg_last_match(VALUE)
Definition: re.c:1731
VM_THROW_NO_ESCAPE_FLAG
@ VM_THROW_NO_ESCAPE_FLAG
Definition: rb_mjit_min_header-2.7.2.h:9413
rb_call_cache::class_serial
rb_serial_t class_serial[(CACHELINE - sizeof(rb_serial_t) - sizeof(struct rb_callable_method_entry_struct *) - sizeof(uintptr_t) - sizeof(enum method_missing_reason) - sizeof(VALUE(*)(struct rb_execution_context_struct *e, struct rb_control_frame_struct *, struct rb_calling_info *, const struct rb_call_data *)))/sizeof(rb_serial_t)]
Definition: internal.h:2376
rb_cvar_set
void rb_cvar_set(VALUE, ID, VALUE)
Definition: variable.c:3085
NODE_CASE3
@ NODE_CASE3
Definition: rb_mjit_min_header-2.7.2.h:8050
rb_iseq_new_main
rb_iseq_t * rb_iseq_new_main(const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent)
Definition: iseq.c:785
ruby_mimfree
void ruby_mimfree(void *ptr)
Definition: gc.c:10237
rb_newobj_of
VALUE rb_newobj_of(VALUE klass, VALUE flags)
Definition: gc.c:2296
_reent::_sig_func
void _sig_func(int)
rb_gc_disable_no_rest
VALUE rb_gc_disable_no_rest(void)
Definition: gc.c:9234
rb_gc_for_fd
int rb_gc_for_fd(int err)
Definition: io.c:953
rb_path_check
int rb_path_check(const char *)
Definition: file.c:6168
qsort_r
void qsort_r(void *__base, size_t __nmemb, size_t __size, int(*_compar)(const void *, const void *, void *), void *__thunk)
rb_class_ivar_set
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value)
Definition: variable.c:3327
YARVINSN_trace_duphash
@ YARVINSN_trace_duphash
Definition: rb_mjit_min_header-2.7.2.h:12070
rb_check_block_call
VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:1528
rb_async_bug_errno
void rb_async_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:690
rb_ary_new_capa
VALUE rb_ary_new_capa(long capa)
Definition: array.c:717
clock_nanosleep
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp)
rb_class_boot
VALUE rb_class_boot(VALUE)
A utility function that wraps class_alloc.
Definition: class.c:201
rb_vm_tag::tag
VALUE tag
Definition: vm_core.h:800
rb_callable_method_entry_without_refinements
const rb_callable_method_entry_t * rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:931
rb_is_absolute_path
int rb_is_absolute_path(const char *)
Definition: file.c:6089
rb_vm_lvar_exposed
VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
Definition: rb_mjit_min_header-2.7.2.h:17121
rb_at_exit_list
Definition: vm_core.h:555
__mcontext::ecx
__uint32_t ecx
Definition: rb_mjit_min_header-2.7.2.h:2073
sscanf
int int int int int sscanf(const char *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
__tm::__tm_sec
int __tm_sec
Definition: rb_mjit_min_header-2.7.2.h:948
RB_INT_PARSE_SIGN
@ RB_INT_PARSE_SIGN
Definition: rb_mjit_min_header-2.7.2.h:7897
getc_unlocked
int getc_unlocked(FILE *)
rb_update_max_fd
void rb_update_max_fd(int fd)
Definition: io.c:218
rb_mod_included_modules
VALUE rb_mod_included_modules(VALUE)
Definition: class.c:1031
lindex_t
unsigned long lindex_t
Definition: vm_exec.h:16
strtoll_l
long long strtoll_l(const char *__restrict, char **__restrict, int, locale_t)
stat::st_ino
ino_t st_ino
Definition: rb_mjit_min_header-2.7.2.h:2393
rb_iseqw_to_iseq
const rb_iseq_t * rb_iseqw_to_iseq(VALUE iseqw)
Definition: iseq.c:1350
rb_execution_context_struct::method_missing_reason
enum method_missing_reason method_missing_reason
Definition: rb_mjit_min_header-2.7.2.h:9837
rb_ivar_count
st_index_t rb_ivar_count(VALUE)
Definition: variable.c:1511
exp2f
float exp2f(float)
ruby_special_exceptions
ruby_special_exceptions
Definition: vm_core.h:506
rb_mutex_struct
Definition: thread_sync.c:44
rb_iseq_constant_body::block_start
int block_start
Definition: vm_core.h:372
rb_method_entry
const rb_method_entry_t * rb_method_entry(VALUE klass, ID id)
Definition: vm_method.c:837
rb_int_div
VALUE rb_int_div(VALUE x, VALUE y)
Definition: numeric.c:3816
rb_syserr_new_str
VALUE rb_syserr_new_str(int n, VALUE arg)
Definition: error.c:2777
max_align_t
Definition: rb_mjit_min_header-2.7.2.h:825
ruby_set_argv
void ruby_set_argv(int, char **)
Definition: ruby.c:2378
rb_output_rs
VALUE rb_output_rs
Definition: intern.h:587
j0f
float j0f(float)
YARVINSN_setinstancevariable
@ YARVINSN_setinstancevariable
Definition: rb_mjit_min_header-2.7.2.h:11947
rb_big_divrem_gmp
VALUE rb_big_divrem_gmp(VALUE x, VALUE y)
rb_cloexec_open
int rb_cloexec_open(const char *pathname, int flags, mode_t mode)
Definition: io.c:292
uint8_t
unsigned char uint8_t
Definition: sha2.h:100
rb_is_instance_id
int rb_is_instance_id(ID id)
Definition: symbol.c:872
_longjmp
void _longjmp(jmp_buf, int) __attribute__((__noreturn__))
rb_vm_make_jump_tag_but_local_jump
VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val)
Definition: vm.c:1478
tempnam
char * tempnam(const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
rb_classext_struct::module_subclasses
rb_subclass_entry_t ** module_subclasses
In the case that this is an ICLASS, module_subclasses points to the link in the module's subclasses l...
Definition: internal.h:1035
rb_ast_body_struct::line_count
int line_count
Definition: node.h:397
ruby_vm_class_serial
rb_serial_t ruby_vm_class_serial
Definition: vm.c:381
_reent::_p5s
struct _Bigint * _p5s
Definition: rb_mjit_min_header-2.7.2.h:1071
rb_ast_add_mark_object
void rb_ast_add_mark_object(rb_ast_t *, VALUE)
Definition: node.c:1393
rb_big_unpack
VALUE rb_big_unpack(unsigned long *buf, long num_longs)
Definition: bignum.c:3223
putenv
int putenv(char *__string)
rb_gc_update_tbl_refs
void rb_gc_update_tbl_refs(st_table *ptr)
Definition: gc.c:7986
asinf
float asinf(float)
_setenv_r
int _setenv_r(struct _reent *, const char *__string, const char *__value, int __overwrite)
rb_iseq_constant_body::iseq_insn_info::body
const struct iseq_insn_info_entry * body
Definition: vm_core.h:403
swab
void swab(const void *__restrict, void *__restrict, ssize_t)
rb_thread_struct::root_fiber
rb_fiber_t * root_fiber
Definition: vm_core.h:985
idASET
@ idASET
Definition: rb_mjit_min_header-2.7.2.h:8542
VALUE
unsigned long VALUE
Definition: rb_mjit_min_header-2.7.2.h:3993
YARVINSN_send
@ YARVINSN_send
Definition: rb_mjit_min_header-2.7.2.h:11988
rb_const_defined_from
int rb_const_defined_from(VALUE, ID)
Definition: variable.c:2680
IVC
struct iseq_inline_iv_cache_entry * IVC
Definition: rb_mjit_min_header-2.7.2.h:10011
BUS_ADRALN
#define BUS_ADRALN
Definition: rb_mjit_min_header-2.7.2.h:2211
YARVINSN_opt_size
@ YARVINSN_opt_size
Definition: rb_mjit_min_header-2.7.2.h:12026
CLD_TRAPPED
#define CLD_TRAPPED
Definition: rb_mjit_min_header-2.7.2.h:2217
rb_detach_process
VALUE rb_detach_process(pid_t pid)
RString
Definition: ruby.h:988
RArray::len
long len
Definition: ruby.h:1052
execlp
int execlp(const char *__file, const char *,...)
pthread_setschedprio
int pthread_setschedprio(pthread_t, int)
rb_stdout
VALUE rb_stdout
Definition: rb_mjit_min_header-2.7.2.h:5320
imaxdiv_t::rem
intmax_t rem
Definition: rb_mjit_min_header-2.7.2.h:3199
idAND
@ idAND
Definition: rb_mjit_min_header-2.7.2.h:8696
_vasprintf_r
int char char int _vasprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
__clock_t
unsigned long __clock_t
Definition: rb_mjit_min_header-2.7.2.h:899
fmax
double fmax(double, double)
rb_io_gets
VALUE rb_io_gets(VALUE)
Definition: io.c:3573
RB_DEBUG_COUNTER_lvar_get
@ RB_DEBUG_COUNTER_lvar_get
Definition: rb_mjit_min_header-2.7.2.h:11555
POSTPONED_JOB_INTERRUPT_MASK
@ POSTPONED_JOB_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.2.h:10537
strtoull
unsigned long long strtoull(const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_eEWOULDBLOCK
VALUE rb_eEWOULDBLOCK
Definition: error.c:55
truncf
float truncf(float)
rb_ary_new_from_values
VALUE rb_ary_new_from_values(long n, const VALUE *elts)
Definition: array.c:762
siginfo_t::si_sigval
sigval_t si_sigval
Definition: rb_mjit_min_header-2.7.2.h:2132
setreuid
int setreuid(uid_t __ruid, uid_t __euid)
rb_st_init_table
st_table * rb_st_init_table(const struct st_hash_type *)
__mcontext::fs
__uint32_t fs
Definition: rb_mjit_min_header-2.7.2.h:2066
clearenv
int clearenv(void)
rb_vm_struct::builtin_inline_index
int builtin_inline_index
Definition: vm_core.h:659
rb_xmalloc_mul_add_mul
void * rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10190
rb_to_int
VALUE rb_to_int(VALUE)
Converts val into Integer.
Definition: object.c:3021
rb_check_hash_type
VALUE rb_check_hash_type(VALUE)
Definition: hash.c:1852
iseq_inline_cache_entry::ic_cref
const rb_cref_t * ic_cref
Definition: vm_core.h:222
rb_vm_struct::builtin_function_table
const struct rb_builtin_function * builtin_function_table
Definition: vm_core.h:658
rb_str_new_with_class
VALUE rb_str_new_with_class(VALUE, const char *, long)
Definition: string.c:1298
rb_str_resize
VALUE rb_str_resize(VALUE, long)
Definition: string.c:2709
strlcpy
size_t strlcpy(char *, const char *, size_t)
Definition: strlcpy.c:29
__sFILE64
Definition: rb_mjit_min_header-2.7.2.h:1007
rb_objspace_alloc
struct rb_objspace * rb_objspace_alloc(void)
Definition: gc.c:1587
Init_vm_backtrace
void Init_vm_backtrace(void)
Definition: vm_backtrace.c:1045
_reent::_mblen_state
_mbstate_t _mblen_state
Definition: rb_mjit_min_header-2.7.2.h:1086
powf
float powf(float, float)
block_handler_type_symbol
@ block_handler_type_symbol
Definition: rb_mjit_min_header-2.7.2.h:9746
_vasniprintf_r
int char * _vasniprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
__ULong
unsigned long __ULong
Definition: rb_mjit_min_header-2.7.2.h:913
RClass::ptr
rb_classext_t * ptr
Definition: internal.h:1051
rb_io_printf
VALUE rb_io_printf(int, const VALUE *, VALUE)
Definition: io.c:7505
rb_classext_struct::allocator
rb_alloc_func_t allocator
Definition: internal.h:1041
RB_DEBUG_COUNTER_obj_imemo_ast
@ RB_DEBUG_COUNTER_obj_imemo_ast
Definition: rb_mjit_min_header-2.7.2.h:11634
gen_ivtbl::numiv
uint32_t numiv
Definition: variable.h:5
rb_iseq_trace_set_all
void rb_iseq_trace_set_all(rb_event_flag_t turnon_events)
Definition: iseq.c:3319
tConst_missing
@ tConst_missing
Definition: rb_mjit_min_header-2.7.2.h:8574
YARVINSN_trace_opt_ltlt
@ YARVINSN_trace_opt_ltlt
Definition: rb_mjit_min_header-2.7.2.h:12121
cmp_opt_data
Definition: internal.h:1322
rb_str_change_terminator_length
void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen)
Definition: string.c:2230
rb_gvar_var_marker
rb_gvar_marker_t rb_gvar_var_marker
Definition: rb_mjit_min_header-2.7.2.h:5103
atoi
int atoi(const char *__nptr)
FPE_FLTINV
#define FPE_FLTINV
Definition: rb_mjit_min_header-2.7.2.h:2207
YARVINSN_opt_gt
@ YARVINSN_opt_gt
Definition: rb_mjit_min_header-2.7.2.h:12016
rb_str_buf_new
VALUE rb_str_buf_new(long)
Definition: string.c:1315
mjit_resume
VALUE mjit_resume(void)
__mcontext::dr3
__uint32_t dr3
Definition: rb_mjit_min_header-2.7.2.h:2061
arg
VALUE arg
Definition: rb_mjit_min_header-2.7.2.h:5597
rb_vm_invoke_bmethod
VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler, const rb_callable_method_entry_t *me)
Definition: vm.c:1242
rb_thread_main
VALUE rb_thread_main(void)
Definition: thread.c:2697
rb_objspace::flags
struct rb_objspace::@8 flags
rb_reg_match2
VALUE rb_reg_match2(VALUE)
Definition: re.c:3239
getchar_unlocked
#define getchar_unlocked()
Definition: rb_mjit_min_header-2.7.2.h:1880
idTo_a
@ idTo_a
Definition: rb_mjit_min_header-2.7.2.h:8684
_reent::_cvtbuf
char * _cvtbuf
Definition: rb_mjit_min_header-2.7.2.h:1074
ino_t
__ino_t ino_t
Definition: rb_mjit_min_header-2.7.2.h:1313
srand48
void srand48(long)
__memset_chk
void * __memset_chk(void *, int, size_t, size_t)
rb_check_funcall_with_hook
VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv, rb_check_funcall_hook *hook, VALUE arg)
Definition: vm_eval.c:565
rb_iseq_new_with_callback
rb_iseq_t * rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func *ifunc, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno, const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t *)
Definition: iseq.c:828
rb_frozen_error_raise
void rb_frozen_error_raise(VALUE frozen_obj, const char *fmt,...)
Definition: error.c:2982
SEGV_MAPERR
#define SEGV_MAPERR
Definition: rb_mjit_min_header-2.7.2.h:2209
rb_data_object_get
#define rb_data_object_get
Definition: rb_mjit_min_header-2.7.2.h:4926
rb_execarg_extract_options
VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash)
Definition: process.c:2279
strncasecmp
int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__))
rb_class_get_superclass
VALUE rb_class_get_superclass(VALUE)
Returns the superclass of klass The return value might be an iclass of a module, unlike rb_class_supe...
Definition: object.c:2001
rb_big2str
VALUE rb_big2str(VALUE, int)
Definition: bignum.c:5091
args_info::kw_arg
const struct rb_call_info_kw_arg * kw_arg
Definition: vm_args.c:30
RUBY_TAG_MASK
@ RUBY_TAG_MASK
Definition: rb_mjit_min_header-2.7.2.h:9400
RBignum::as
union RBignum::@2 as
rb_f_sprintf
VALUE rb_f_sprintf(int, const VALUE *)
Definition: sprintf.c:198
idMINUS
@ idMINUS
Definition: rb_mjit_min_header-2.7.2.h:8522
_system_r
int _system_r(struct _reent *, const char *)
YARVINSN_trace_newarraykwsplat
@ YARVINSN_trace_newarraykwsplat
Definition: rb_mjit_min_header-2.7.2.h:12068
YARVINSN_trace_setlocal_WC_0
@ YARVINSN_trace_setlocal_WC_0
Definition: rb_mjit_min_header-2.7.2.h:12140
list
struct rb_encoding_entry * list
Definition: encoding.c:56
log10l
long double log10l(long double)
rb_class2name
const char * rb_class2name(VALUE)
Definition: variable.c:280
rb_num_pow
VALUE rb_num_pow(VALUE x, VALUE y)
Definition: numeric.c:4118
rb_check_to_int
VALUE rb_check_to_int(VALUE)
Tries to convert val into Integer.
Definition: object.c:3036
__tzrule_struct::offset
long offset
Definition: rb_mjit_min_header-2.7.2.h:2014
args_info::rest_index
int rest_index
Definition: vm_args.c:28
rb_ast_struct::flags
VALUE flags
Definition: node.h:400
rb_int_powm
VALUE rb_int_powm(int const argc, VALUE *const argv, VALUE const num)
Definition: bignum.c:7112
mjit_enabled
_Bool mjit_enabled
Definition: mjit_worker.c:177
rb_Rational
VALUE rb_Rational(VALUE, VALUE)
Definition: rational.c:1951
__tm::__tm_hour
int __tm_hour
Definition: rb_mjit_min_header-2.7.2.h:950
rb_iter_break
void rb_iter_break(void)
Definition: vm.c:1546
rb_vm_env_local_variables
VALUE rb_vm_env_local_variables(const rb_env_t *env)
Definition: vm.c:840
rb_str_to_cstr
char * rb_str_to_cstr(VALUE str)
Definition: string.c:2284
ruby_num_rounding_mode
ruby_num_rounding_mode
Definition: internal.h:1788
rb_parser_printf
void rb_parser_printf(struct parser_params *parser, const char *fmt,...) __attribute__((format(printf
idTo_proc
@ idTo_proc
Definition: rb_mjit_min_header-2.7.2.h:8682
atanf
float atanf(float)
THREAD_STOPPED_FOREVER
@ THREAD_STOPPED_FOREVER
Definition: rb_mjit_min_header-2.7.2.h:9781
BOP_AND
@ BOP_AND
Definition: rb_mjit_min_header-2.7.2.h:9629
RBasicRaw::flags
VALUE flags
Definition: internal.h:1983
rb_gc_register_address
void rb_gc_register_address(VALUE *)
Definition: gc.c:7080
__fsfilcnt_t
unsigned long __fsfilcnt_t
Definition: rb_mjit_min_header-2.7.2.h:860
RHash::basic
struct RBasic basic
Definition: internal.h:888
rb_struct_define_without_accessor
VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t,...)
Definition: struct.c:418
YARVINSN_opt_str_uminus
@ YARVINSN_opt_str_uminus
Definition: rb_mjit_min_header-2.7.2.h:11992
rb_unblock_function_t
void rb_unblock_function_t(void *)
Definition: rb_mjit_min_header-2.7.2.h:6157
rb_vm_tag::state
enum ruby_tag_type state
Definition: vm_core.h:804
rb_vm_struct::postponed_job_index
int postponed_job_index
Definition: vm_core.h:637
pthread_spinlock_t
struct __pthread_spinlock_t * pthread_spinlock_t
__isnand
int __isnand(double x)
llrintf
long long int llrintf(float)
stat::st_mode
mode_t st_mode
Definition: rb_mjit_min_header-2.7.2.h:2394
rb_execarg::use_shell
unsigned use_shell
Definition: internal.h:2041
RUBY_NUM_ROUND_DEFAULT
@ RUBY_NUM_ROUND_DEFAULT
Definition: rb_mjit_min_header-2.7.2.h:7433
at_quick_exit
int at_quick_exit(void(*)(void))
rb_hash_st_table_set
void rb_hash_st_table_set(VALUE hash, st_table *st)
Definition: hash.c:558
vfiprintf
int int int int int int int int char char int int int int int int int int int char char int int vfiprintf(FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
__sFILE64::_data
struct _reent * _data
Definition: rb_mjit_min_header-2.7.2.h:1015
rb_file_open_str
VALUE rb_file_open_str(VALUE, const char *)
Definition: io.c:6252
rb_vm_ep_local_ep
const VALUE * rb_vm_ep_local_ep(const VALUE *ep)
Definition: rb_mjit_min_header-2.7.2.h:11322
rb_func_proc_new
VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val)
Definition: proc.c:728
imaxdiv_t
Definition: rb_mjit_min_header-2.7.2.h:3197
rb_check_funcall
VALUE rb_check_funcall(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:505
erfc
double erfc(double)
Definition: erf.c:81
VM_METHOD_TYPE_MISSING
@ VM_METHOD_TYPE_MISSING
Definition: rb_mjit_min_header-2.7.2.h:8802
rb_vm_struct::thread_abort_on_exception
unsigned int thread_abort_on_exception
Definition: vm_core.h:603
rb_str_buf_cat2
#define rb_str_buf_cat2
Definition: rb_mjit_min_header-2.7.2.h:6132
_pthread_cleanup_handler::next
struct _pthread_cleanup_handler * next
Definition: rb_mjit_min_header-2.7.2.h:9215
iseq_catch_table_entry::type
enum iseq_catch_table_entry::catch_type type
tPRESERVED_ID_END
@ tPRESERVED_ID_END
Definition: rb_mjit_min_header-2.7.2.h:8566
rb_iseq_new_with_callback_callback_func::flags
VALUE flags
Definition: vm_core.h:1019
__tm::__tm_year
int __tm_year
Definition: rb_mjit_min_header-2.7.2.h:953
rb_hash_fetch
VALUE rb_hash_fetch(VALUE, VALUE)
Definition: hash.c:2134
rb_error_arity
MJIT_STATIC void rb_error_arity(int argc, int min, int max)
Definition: vm_insnhelper.c:387
pthread_attr_getdetachstate
int pthread_attr_getdetachstate(const pthread_attr_t *, int *)
execvp
int execvp(const char *__file, char *const __argv[])
rb_invalid_str
void rb_invalid_str(const char *str, const char *type)
Definition: error.c:1867
rb_define_variable
void rb_define_variable(const char *, VALUE *)
Definition: variable.c:499
ruby_init_loadpath
void ruby_init_loadpath(void)
Definition: ruby.c:582
ruby_disable_gc
int ruby_disable_gc
Definition: gc.c:1001
sysconf
long sysconf(int __name)
int64_t
__int64_t int64_t
Definition: rb_mjit_min_header-2.7.2.h:1179
strnlen
size_t strnlen(const char *, size_t)
localtime
struct tm * localtime(const time_t *_timer)
rb_gvar_get
VALUE rb_gvar_get(struct rb_global_entry *)
Definition: variable.c:619
rb_iseq_location_struct::pathobj
VALUE pathobj
Definition: vm_core.h:273
YARVINSN_getclassvariable
@ YARVINSN_getclassvariable
Definition: rb_mjit_min_header-2.7.2.h:11948
builtin_binary
Definition: builtin.h:72
tNUMPARAM_6
@ tNUMPARAM_6
Definition: rb_mjit_min_header-2.7.2.h:8629
rb_cEncoding
VALUE rb_cEncoding
Definition: encoding.c:46
__ssp_real_readlink
ssize_t __ssp_real_readlink(const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__("_" "readlink")
id_core_define_singleton_method
@ id_core_define_singleton_method
Definition: rb_mjit_min_header-2.7.2.h:8560
rb_gvar_undef_setter
rb_gvar_setter_t rb_gvar_undef_setter
Definition: rb_mjit_min_header-2.7.2.h:5096
rb_const_set
void rb_const_set(VALUE, ID, VALUE)
Definition: variable.c:2756
RArray
Definition: ruby.h:1048
erff
float erff(float)
local_var_list::tbl
VALUE tbl
Definition: vm_eval.c:15
ruby_dtrace_method_hook_args
Definition: probes_helper.h:6
RARRAY_EMBED_FLAG
#define RARRAY_EMBED_FLAG
YARVINSN_trace_invokeblock
@ YARVINSN_trace_invokeblock
Definition: rb_mjit_min_header-2.7.2.h:12099
rb_integer_unpack
VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags)
Definition: bignum.c:3633
ruby_gc_set_params
void ruby_gc_set_params(void)
Definition: gc.c:9421
rb_method_refined_struct
Definition: method.h:146
rb_cCont
VALUE rb_cCont
Definition: ruby.h:2017
strdup
char * strdup(const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
rb_trace_arg_struct::self
VALUE self
Definition: vm_core.h:1878
imemo_cref
@ imemo_cref
Definition: rb_mjit_min_header-2.7.2.h:7030
RUBY_ID_SCOPE_SHIFT
@ RUBY_ID_SCOPE_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:8467
rb_method_entry_clone
const rb_method_entry_t * rb_method_entry_clone(const rb_method_entry_t *me)
Definition: vm_method.c:406
vsiscanf
int int int int int int int int char char int int int int int int int int int char char int int int int int int int vsiscanf(const char *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_int_uminus
VALUE rb_int_uminus(VALUE num)
Definition: numeric.c:3479
lcong48
void lcong48(unsigned short[7])
YARVINSN_trace_concatarray
@ YARVINSN_trace_concatarray
Definition: rb_mjit_min_header-2.7.2.h:12072
rb_str_new_static
VALUE rb_str_new_static(const char *, long)
Definition: string.c:872
RArray::capa
long capa
Definition: ruby.h:1054
_mblen_r
int _mblen_r(struct _reent *, const char *, size_t, _mbstate_t *)
rb_global_vm_lock_t
struct rb_global_vm_lock_struct rb_global_vm_lock_t
rb_obj_dup
VALUE rb_obj_dup(VALUE)
Equivalent to Object#dup in Ruby.
Definition: object.c:420
hypotl
long double hypotl(long double, long double)
rb_args_info::post_args_num
int post_args_num
Definition: node.h:437
YARVINSN_opt_length
@ YARVINSN_opt_length
Definition: rb_mjit_min_header-2.7.2.h:12025
rb_to_array_type
VALUE rb_to_array_type(VALUE obj)
Definition: array.c:902
__va_list
__builtin_va_list __va_list
Definition: rb_mjit_min_header-2.7.2.h:910
rb_threadptr_signal_exit
void rb_threadptr_signal_exit(rb_thread_t *th)
Definition: thread.c:2334
__tm::__tm_mon
int __tm_mon
Definition: rb_mjit_min_header-2.7.2.h:952
rb_data_object_zalloc
VALUE rb_data_object_zalloc(VALUE, size_t, RUBY_DATA_FUNC, RUBY_DATA_FUNC)
rb_method_cfunc_t
struct rb_method_cfunc_struct rb_method_cfunc_t
__pthread_attr_t
Definition: rb_mjit_min_header-2.7.2.h:1380
rb_obj_is_proc
VALUE rb_obj_is_proc(VALUE)
Definition: proc.c:152
idEq
@ idEq
Definition: rb_mjit_min_header-2.7.2.h:8532
CLD_CONTINUED
#define CLD_CONTINUED
Definition: rb_mjit_min_header-2.7.2.h:2219
YARVINSN_trace_opt_ge
@ YARVINSN_trace_opt_ge
Definition: rb_mjit_min_header-2.7.2.h:12120
ruby_xmalloc2
void * ruby_xmalloc2(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
fsfilcnt_t
__fsfilcnt_t fsfilcnt_t
Definition: rb_mjit_min_header-2.7.2.h:1309
fread
size_t fread(void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_vm_set_progname
void rb_vm_set_progname(VALUE filename)
Definition: vm.c:3289
rb_obj_trust
VALUE rb_obj_trust(VALUE)
call-seq: obj.trust -> obj
Definition: object.c:1057
strtold
long double strtold(const char *__restrict, char **__restrict)
ceil
double ceil(double)
strcoll
int strcoll(const char *, const char *)
param_size
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int int param_size
Definition: rb_mjit_min_header-2.7.2.h:14524
rb_data_type_struct::dcompact
void(* dcompact)(void *)
Definition: ruby.h:1154
RB_DEBUG_COUNTER_gc_isptr_maybe
@ RB_DEBUG_COUNTER_gc_isptr_maybe
Definition: rb_mjit_min_header-2.7.2.h:11574
rb_iseq_new_with_callback_callback_func::data
const void * data
Definition: vm_core.h:1022
mask
enum @0::@2::@3 mask
sincosl
void sincosl(long double, long double *, long double *)
rb_st_locale_insensitive_strcasecmp
int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2)
iseq_compile_data_storage::size
unsigned int size
Definition: iseq.h:277
rb_eMathDomainError
VALUE rb_eMathDomainError
Definition: ruby.h:2088
free
void free(void *)
rb_extend_object
void rb_extend_object(VALUE, VALUE)
Extend the object with the module.
Definition: eval.c:1701
rb_vm_make_proc_lambda
VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda)
Definition: vm.c:933
rb_num_coerce_bit
VALUE rb_num_coerce_bit(VALUE, VALUE, ID)
Definition: numeric.c:4426
rb_hash_update_func
VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value)
Definition: rb_mjit_min_header-2.7.2.h:5862
RHASH_ENUM_END
@ RHASH_ENUM_END
Definition: rb_mjit_min_header-2.7.2.h:6850
stat
int stat(const char *__restrict __path, struct stat *__restrict __sbuf)
rb_execution_context_struct::stack_maxsize
size_t stack_maxsize
Definition: vm_core.h:889
RB_DEBUG_COUNTER_frame_R2C
@ RB_DEBUG_COUNTER_frame_R2C
Definition: rb_mjit_min_header-2.7.2.h:11539
finitef
int finitef(float)
ruby_error_reenter
@ ruby_error_reenter
Definition: rb_mjit_min_header-2.7.2.h:9594
ruby_set_script_name
void ruby_set_script_name(VALUE name)
Sets the current script name to this value.
Definition: ruby.c:2302
rb_threadptr_execute_interrupts
int rb_threadptr_execute_interrupts(rb_thread_t *, int)
Definition: thread.c:2194
rb_class_search_ancestor
VALUE rb_class_search_ancestor(VALUE klass, VALUE super)
Definition: object.c:713
rb_uninterruptible
VALUE rb_uninterruptible(VALUE(*b_proc)(VALUE), VALUE data)
Definition: thread.c:5554
pthread_mutexattr_setprotocol
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int)
__sFILE64::_offset
_off64_t _offset
Definition: rb_mjit_min_header-2.7.2.h:1032
rb_execution_context_update
void rb_execution_context_update(const rb_execution_context_t *ec)
Definition: vm.c:2472
YARVINSN_trace_opt_aref
@ YARVINSN_trace_opt_aref
Definition: rb_mjit_min_header-2.7.2.h:12124
RString::heap
struct RString::@2::@3 heap
ulong
unsigned long ulong
Definition: rb_mjit_min_header-2.7.2.h:1296
__sFILE64::_bf
struct __sbuf _bf
Definition: rb_mjit_min_header-2.7.2.h:1013
RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange
Definition: rb_mjit_min_header-2.7.2.h:11551
mjit_options::on
char on
Definition: rb_mjit_min_header-2.7.2.h:11693
cmp_opt_String
@ cmp_opt_String
Definition: rb_mjit_min_header-2.7.2.h:7160
tNUMPARAM_4
@ tNUMPARAM_4
Definition: rb_mjit_min_header-2.7.2.h:8627
rb_invcmp
VALUE rb_invcmp(VALUE, VALUE)
Definition: compar.c:47
ID
unsigned long ID
Definition: rb_mjit_min_header-2.7.2.h:3994
rb_file_directory_p
VALUE rb_file_directory_p(VALUE, VALUE)
Definition: file.c:1577
rb_thread_struct::locking_mutex
VALUE locking_mutex
Definition: vm_core.h:958
rb_fix_aref
VALUE rb_fix_aref(VALUE fix, VALUE idx)
Definition: numeric.c:4642
realpath
char * realpath(const char *__restrict path, char *__restrict resolved_path)
_getc_r
int _getc_r(struct _reent *, FILE *)
key
key
Definition: openssl_missing.h:181
bcopy
#define bcopy(src, dst, len)
Definition: rb_mjit_min_header-2.7.2.h:2762
rb_builtin_function::func_ptr
const void *const func_ptr
Definition: builtin.h:8
rb_ary_rassoc
VALUE rb_ary_rassoc(VALUE, VALUE)
Definition: array.c:4189
iseq_catch_table_entry::CATCH_TYPE_BREAK
@ CATCH_TYPE_BREAK
Definition: iseq.h:230
RString::aux
union RString::@2::@3::@4 aux
YARVINSN_opt_newarray_max
@ YARVINSN_opt_newarray_max
Definition: rb_mjit_min_header-2.7.2.h:11993
RB_DEBUG_COUNTER_ccf_super_method
@ RB_DEBUG_COUNTER_ccf_super_method
Definition: rb_mjit_min_header-2.7.2.h:11527
rb_yield_values2
VALUE rb_yield_values2(int n, const VALUE *argv)
Definition: vm_eval.c:1271
RB_DEBUG_COUNTER_obj_float
@ RB_DEBUG_COUNTER_obj_float
Definition: rb_mjit_min_header-2.7.2.h:11624
rb_math_sin
VALUE rb_math_sin(VALUE)
pthread_barrierattr_destroy
int pthread_barrierattr_destroy(pthread_barrierattr_t *)
args_info::argv
VALUE * argv
Definition: vm_args.c:24
RB_DEBUG_COUNTER_obj_regexp_ptr
@ RB_DEBUG_COUNTER_obj_regexp_ptr
Definition: rb_mjit_min_header-2.7.2.h:11627
rb_absint_size
size_t rb_absint_size(VALUE val, int *nlz_bits_ret)
Definition: bignum.c:3247
rb_execarg::close_others_given
unsigned close_others_given
Definition: internal.h:2046
_on_exit_args::_fnargs
void * _fnargs[32]
Definition: rb_mjit_min_header-2.7.2.h:960
rb_write_error
void rb_write_error(const char *)
Definition: io.c:7930
RString::basic
struct RBasic basic
Definition: ruby.h:989
rb_ast_body_t
struct rb_ast_body_struct rb_ast_body_t
YARVINSN_branchif
@ YARVINSN_branchif
Definition: rb_mjit_min_header-2.7.2.h:12000
blkcnt_t
__blkcnt_t blkcnt_t
Definition: rb_mjit_min_header-2.7.2.h:1297
rb_complex_div
VALUE rb_complex_div(VALUE x, VALUE y)
Definition: complex.c:948
execle
int execle(const char *__path, const char *,...)
_sigcommune::_si_code
__uint32_t _si_code
Definition: rb_mjit_min_header-2.7.2.h:2102
rb_struct_lookup
VALUE rb_struct_lookup(VALUE s, VALUE idx)
Definition: struct.c:1101
rb_trace_arg_struct::path
VALUE path
Definition: vm_core.h:1888
timer_delete
int timer_delete(timer_t timerid)
rb_hash_proc
st_index_t rb_hash_proc(st_index_t hash, VALUE proc)
Definition: proc.c:1302
BOP_MIN
@ BOP_MIN
Definition: rb_mjit_min_header-2.7.2.h:9627
siginfo_t::si_tid
timer_t si_tid
Definition: rb_mjit_min_header-2.7.2.h:2137
__mcontext::dr6
__uint32_t dr6
Definition: rb_mjit_min_header-2.7.2.h:2062
idOR
@ idOR
Definition: rb_mjit_min_header-2.7.2.h:8697
rb_gvar_readonly_setter
void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_)
Definition: variable.c:412
vm_ifunc::flags
VALUE flags
Definition: internal.h:1216
rb_scan_args
#define rb_scan_args(argc, argvp, fmt,...)
Definition: rb_mjit_min_header-2.7.2.h:6368
rb_complex_imag
VALUE rb_complex_imag(VALUE z)
Definition: complex.c:743
rb_eLoadError
VALUE rb_eLoadError
Definition: error.c:941
YARVINSN_trace_putobject
@ YARVINSN_trace_putobject
Definition: rb_mjit_min_header-2.7.2.h:12059
rb_args_info::no_kwarg
unsigned int no_kwarg
Definition: node.h:448
rb_str_buf_new2
#define rb_str_buf_new2
Definition: rb_mjit_min_header-2.7.2.h:6129
clockid_t
int clockid_t
Definition: win32.h:132
rb_remove_event_hook
int rb_remove_event_hook(rb_event_hook_func_t func)
Definition: vm_trace.c:262
RB_DEBUG_COUNTER_ivar_set_ic_hit
@ RB_DEBUG_COUNTER_ivar_set_ic_hit
Definition: rb_mjit_min_header-2.7.2.h:11547
NODE_DREGX
@ NODE_DREGX
Definition: rb_mjit_min_header-2.7.2.h:8111
rb_mjit_compile_info::disable_send_cache
_Bool disable_send_cache
Definition: rb_mjit_min_header-2.7.2.h:11705
pthread_condattr_init
int pthread_condattr_init(pthread_condattr_t *)
rb_cThread
VALUE rb_cThread
Definition: ruby.h:2047
sigval
Definition: rb_mjit_min_header-2.7.2.h:2087
idInitialize
@ idInitialize
Definition: rb_mjit_min_header-2.7.2.h:8673
rb_execarg::umask_given
unsigned umask_given
Definition: internal.h:2043
rb_report_bug_valist
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args)
Definition: error.c:712
rb_glob
void rb_glob(const char *, void(*)(const char *, VALUE, void *), VALUE)
Definition: dir.c:2544
ruby_debug_print_indent
int ruby_debug_print_indent(int level, int debug_level, int indent_level)
Definition: debug.c:74
rb_vm_invoke_proc
VALUE rb_vm_invoke_proc(rb_execution_context_t *ec, rb_proc_t *proc, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
Definition: vm.c:1249
strtoll
long long strtoll(const char *__restrict __n, char **__restrict __end_PTR, int __base)
fseeko
int fseeko(FILE *, off_t, int)
idDiv
@ idDiv
Definition: rb_mjit_min_header-2.7.2.h:8698
imemo_iseq
@ imemo_iseq
Definition: rb_mjit_min_header-2.7.2.h:7036
pthread_spin_lock
int pthread_spin_lock(pthread_spinlock_t *)
rb_thread_wakeup
VALUE rb_thread_wakeup(VALUE)
Definition: thread.c:2540
rb_global_variable
void rb_global_variable(VALUE *)
Definition: gc.c:7115
rb_typeddata_is_kind_of
int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:874
_strndup_r
char * _strndup_r(struct _reent *, const char *, size_t)
rb_mod_syserr_fail_str
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
Definition: error.c:2859
__uint_least8_t
unsigned char __uint_least8_t
Definition: rb_mjit_min_header-2.7.2.h:630
RUBY_FL_FINALIZE
@ RUBY_FL_FINALIZE
Definition: ruby.h:846
y1f
float y1f(float)
rb_warning_string
VALUE rb_warning_string(const char *fmt,...) __attribute__((format(printf
tMethodMissing
@ tMethodMissing
Definition: rb_mjit_min_header-2.7.2.h:8575
rb_execarg::pgroup_pgid
pid_t pgroup_pgid
Definition: rb_mjit_min_header-2.7.2.h:7622
idPow
@ idPow
Definition: rb_mjit_min_header-2.7.2.h:8519
rb_ary_concat
VALUE rb_ary_concat(VALUE, VALUE)
Definition: array.c:4069
__mcontext::ebx
__uint32_t ebx
Definition: rb_mjit_min_header-2.7.2.h:2071
rb_frame_callee
ID rb_frame_callee(void)
The name of the current method.
Definition: eval.c:1200
__sFILE64::_lb
struct __sbuf _lb
Definition: rb_mjit_min_header-2.7.2.h:1029
YARVINSN_opt_and
@ YARVINSN_opt_and
Definition: rb_mjit_min_header-2.7.2.h:12019
rb_iseq_struct::local_hooks
struct rb_hook_list_struct * local_hooks
Definition: vm_core.h:471
ushort
unsigned short ushort
Definition: rb_mjit_min_header-2.7.2.h:1294
siginfo_t::si_overrun
unsigned int si_overrun
Definition: rb_mjit_min_header-2.7.2.h:2138
rb_int_plus
VALUE rb_int_plus(VALUE x, VALUE y)
Definition: numeric.c:3610
rb_hook_list_t
struct rb_hook_list_struct rb_hook_list_t
gammaf_r
float gammaf_r(float, int *)
rb_thread_struct::last_status
VALUE last_status
Definition: vm_core.h:917
rb_big_2comp
void rb_big_2comp(VALUE)
Definition: bignum.c:3049
rb_mFileTest
VALUE rb_mFileTest
Definition: file.c:160
timeval::tv_sec
time_t tv_sec
Definition: missing.h:54
RHash
Definition: internal.h:887
RB_DEBUG_COUNTER_obj_imemo_ment
@ RB_DEBUG_COUNTER_obj_imemo_ment
Definition: rb_mjit_min_header-2.7.2.h:11630
rb_thread_sleep_deadly
void rb_thread_sleep_deadly(void)
Definition: thread.c:1321
rb_cloexec_fcntl_dupfd
int rb_cloexec_fcntl_dupfd(int fd, int minfd)
Definition: io.c:419
__sFILE64::_flags2
int _flags2
Definition: rb_mjit_min_header-2.7.2.h:1031
rb_eNotImpError
VALUE rb_eNotImpError
Definition: error.c:934
tIntern
@ tIntern
Definition: rb_mjit_min_header-2.7.2.h:8572
YARVINSN_opt_send_without_block
@ YARVINSN_opt_send_without_block
Definition: rb_mjit_min_header-2.7.2.h:11989
YARVINSN_trace_getlocal
@ YARVINSN_trace_getlocal
Definition: rb_mjit_min_header-2.7.2.h:12042
rb_st_init_strtable
st_table * rb_st_init_strtable(void)
pthread_attr_getschedpolicy
int pthread_attr_getschedpolicy(const pthread_attr_t *, int *)
args_info::argc
int argc
Definition: vm_args.c:25
rb_vm_tag
Definition: vm_core.h:799
rb_source_location_cstr
const char * rb_source_location_cstr(int *pline)
Definition: vm.c:1376
st_index_t
st_data_t st_index_t
Definition: rb_mjit_min_header-2.7.2.h:5362
RB_DEBUG_COUNTER_obj_imemo_svar
@ RB_DEBUG_COUNTER_obj_imemo_svar
Definition: rb_mjit_min_header-2.7.2.h:11636
rb_nativethread_lock_t
pthread_mutex_t rb_nativethread_lock_t
Definition: rb_mjit_min_header-2.7.2.h:9314
RB_DEBUG_COUNTER_mc_miss_by_refine
@ RB_DEBUG_COUNTER_mc_miss_by_refine
Definition: rb_mjit_min_header-2.7.2.h:11506
rb_compile_option_struct::inline_const_cache
unsigned int inline_const_cache
Definition: iseq.h:207
setegid
int setegid(gid_t __gid)
getline
ssize_t getline(char **, size_t *, FILE *)
tMethod_undefined
@ tMethod_undefined
Definition: rb_mjit_min_header-2.7.2.h:8580
RB_DEBUG_COUNTER_frame_push_block
@ RB_DEBUG_COUNTER_frame_push_block
Definition: rb_mjit_min_header-2.7.2.h:11530
NODE_OPCALL
@ NODE_OPCALL
Definition: rb_mjit_min_header-2.7.2.h:8082
U
Definition: dtoa.c:290
rb_eNoMethodError
VALUE rb_eNoMethodError
Definition: error.c:932
fflush_unlocked
int fflush_unlocked(FILE *)
rb_str_equal
VALUE rb_str_equal(VALUE str1, VALUE str2)
Definition: string.c:3267
_reent::_errno
int _errno
Definition: rb_mjit_min_header-2.7.2.h:1061
ruby_special_error_count
@ ruby_special_error_count
Definition: rb_mjit_min_header-2.7.2.h:9599
rb_mark_generic_ivar
void rb_mark_generic_ivar(VALUE)
Definition: variable.c:973
RHash::ar
struct ar_table_struct * ar
Definition: internal.h:891
rb_iseq_constant_body::iseq_unique_id
uintptr_t iseq_unique_id
Definition: vm_core.h:451
pathconf
long pathconf(const char *__path, int __name)
YARVINSN_branchnil
@ YARVINSN_branchnil
Definition: rb_mjit_min_header-2.7.2.h:12002
rb_num_zerodiv
void rb_num_zerodiv(void)
Definition: numeric.c:194
VM_CALL_FCALL_bit
@ VM_CALL_FCALL_bit
Definition: rb_mjit_min_header-2.7.2.h:9975
BOP_ASET
@ BOP_ASET
Definition: rb_mjit_min_header-2.7.2.h:9613
tGets
@ tGets
Definition: rb_mjit_min_header-2.7.2.h:8584
rb_scan_args_set
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 __attribute__((unused)), int varc __attribute__((unused)))
Definition: rb_mjit_min_header-2.7.2.h:6460
rb_public_const_get_at
VALUE rb_public_const_get_at(VALUE klass, ID id)
Definition: variable.c:2409
ldiv
ldiv_t ldiv(long __numer, long __denom)
rb_encdb_set_unicode
void rb_encdb_set_unicode(int index)
Definition: encoding.c:576
rb_attr
void rb_attr(VALUE, ID, int, int, int)
Definition: vm_method.c:1163
rb_execarg_run_options
int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char *errmsg, size_t errmsg_buflen)
Definition: process.c:3392
rb_mjit_compile_info::disable_ivar_cache
_Bool disable_ivar_cache
Definition: rb_mjit_min_header-2.7.2.h:11704
log1p
double log1p(double)
rb_gc_mark_global_tbl
void rb_gc_mark_global_tbl(void)
Definition: variable.c:434
grantpt
int grantpt(int)
CALL_PUBLIC_KW
@ CALL_PUBLIC_KW
Definition: rb_mjit_min_header-2.7.2.h:17144
dreml
float dreml(long double, long double)
setgroups
int setgroups(int ngroups, const gid_t *grouplist)
RSTRUCT_EMBED_LEN_SHIFT
#define RSTRUCT_EMBED_LEN_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:6893
ruby_exec_prefix
const char *const char ruby_exec_prefix[]
Definition: loadpath.c:59
rb_block_to_s
VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info)
Definition: proc.c:1360
tTo_sym
@ tTo_sym
Definition: rb_mjit_min_header-2.7.2.h:8599
NODE_DASGN_CURR
@ NODE_DASGN_CURR
Definition: rb_mjit_min_header-2.7.2.h:8071
_strtol_r
long _strtol_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
__uint_least32_t
unsigned int __uint_least32_t
Definition: rb_mjit_min_header-2.7.2.h:636
idMethod_removed
@ idMethod_removed
Definition: rb_mjit_min_header-2.7.2.h:8659
_fcloseall_r
int _fcloseall_r(struct _reent *)
rb_big_rshift
VALUE rb_big_rshift(VALUE, VALUE)
Definition: bignum.c:6651
__sFILE::_bf
struct __sbuf _bf
Definition: vsnprintf.c:177
rb_id2sym
VALUE rb_id2sym(ID)
Definition: symbol.c:776
flsl
int flsl(long) __attribute__((__const__))
_putc_r
int int _putc_r(struct _reent *, int, FILE *)
_reent::_unspecified_locale_info
int _unspecified_locale_info
Definition: rb_mjit_min_header-2.7.2.h:1065
rb_class_new
VALUE rb_class_new(VALUE)
Creates a new class.
Definition: class.c:241
call
return cc call
Definition: rb_mjit_min_header-2.7.2.h:13217
RB_DEBUG_COUNTER_frame_push_ifunc
@ RB_DEBUG_COUNTER_frame_push_ifunc
Definition: rb_mjit_min_header-2.7.2.h:11534
rb_thread_struct::name
VALUE name
Definition: vm_core.h:989
rb_last_status_clear
void rb_last_status_clear(void)
Definition: process.c:554
rb_cref_struct::klass
VALUE klass
Definition: method.h:44
rb_utf8_str_new_cstr
#define rb_utf8_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6118
logbl
long double logbl(long double)
rb_random_bytes
VALUE rb_random_bytes(VALUE rnd, long n)
Definition: random.c:1021
pthread_cond_destroy
int pthread_cond_destroy(pthread_cond_t *)
dup
int dup(int __fildes)
symlink
int symlink(const char *__name1, const char *__name2)
Definition: win32.c:5182
mjit_gc_start_hook
void mjit_gc_start_hook(void)
rb_io_wait_readwrite
rb_io_wait_readwrite
Definition: ruby.h:1929
rb_vm_frame_method_entry
MJIT_STATIC const rb_callable_method_entry_t * rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.2.h:12489
RMoved
Definition: internal.h:908
int_least8_t
__int_least8_t int_least8_t
Definition: rb_mjit_min_header-2.7.2.h:2920
rb_get_coverage_mode
int rb_get_coverage_mode(void)
Definition: thread.c:5483
rb_thread_struct::vm
rb_vm_t * vm
Definition: vm_core.h:913
_vfiprintf_r
int char char int int int int _vfiprintf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
RUBY_FLONUM_FLAG
@ RUBY_FLONUM_FLAG
Definition: rb_mjit_min_header-2.7.2.h:4297
DEFINED_FALSE
@ DEFINED_FALSE
Definition: rb_mjit_min_header-2.7.2.h:10860
RB_DEBUG_COUNTER_ccf_iseq_kw2
@ RB_DEBUG_COUNTER_ccf_iseq_kw2
Definition: rb_mjit_min_header-2.7.2.h:11517
ilogbl
int ilogbl(long double)
_mkstemps_r
int _mkstemps_r(struct _reent *, char *, int)
rb_alias
void rb_alias(VALUE, ID, ID)
Definition: vm_method.c:1581
iseq_label_data
Definition: compile.c:62
rb_gc_adjust_memory_usage
void rb_gc_adjust_memory_usage(ssize_t)
Definition: gc.c:10320
_reent::_mbsrtowcs_state
_mbstate_t _mbsrtowcs_state
Definition: rb_mjit_min_header-2.7.2.h:1094
vm_ifunc_argc::min
signed int min
Definition: rb_mjit_min_header-2.7.2.h:7083
YARVINSN_trace_jump
@ YARVINSN_trace_jump
Definition: rb_mjit_min_header-2.7.2.h:12102
BOP_MOD
@ BOP_MOD
Definition: rb_mjit_min_header-2.7.2.h:9606
rb_compile_option_struct::debug_frozen_string_literal
unsigned int debug_frozen_string_literal
Definition: iseq.h:215
RHash::as
union RHash::@4 as
rb_method_bmethod_struct::hooks
struct rb_hook_list_struct * hooks
Definition: method.h:153
__pthread_cond_t
Definition: rb_mjit_min_header-2.7.2.h:1383
rb_code_location_t
struct rb_code_location_struct rb_code_location_t
rb_thread_struct::join_list
rb_thread_list_t * join_list
Definition: vm_core.h:961
max_align_t::__attribute__
long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))))
rb_compile_option_struct::stack_caching
unsigned int stack_caching
Definition: iseq.h:213
_atoi_r
int _atoi_r(struct _reent *, const char *__nptr)
iseq_catch_table_entry::catch_type
catch_type
Definition: iseq.h:226
yn
double yn(int, double)
rb_thread_wakeup_alive
VALUE rb_thread_wakeup_alive(VALUE)
Definition: thread.c:2549
pthread_mutex_trylock
int pthread_mutex_trylock(pthread_mutex_t *)
uint_fast32_t
unsigned int uint_fast32_t
Definition: rb_mjit_min_header-2.7.2.h:2939
mjit_options::verbose
int verbose
Definition: rb_mjit_min_header-2.7.2.h:11700
iseq_compile_data
Definition: iseq.h:92
uint64_t
__uint64_t uint64_t
Definition: rb_mjit_min_header-2.7.2.h:1181
rb_vm_bugreport
void rb_vm_bugreport(const void *)
Definition: vm_dump.c:918
_getchar_unlocked_r
int _getchar_unlocked_r(struct _reent *)
RObject::iv_index_tbl
void * iv_index_tbl
Definition: ruby.h:928
getpgrp
pid_t getpgrp(void)
rb_vm_struct::mark_object_ary
VALUE mark_object_ary
Definition: vm_core.h:610
RUBY_ID_STATIC_SYM
@ RUBY_ID_STATIC_SYM
Definition: rb_mjit_min_header-2.7.2.h:8458
rb_respond_to
int rb_respond_to(VALUE, ID)
Definition: vm_method.c:2190
rb_alloc_func_t
VALUE(* rb_alloc_func_t)(VALUE)
Definition: rb_mjit_min_header-2.7.2.h:5724
logl
long double logl(long double)
atanh
double atanh(double)
Definition: acosh.c:75
rb_struct_getmember
VALUE rb_struct_getmember(VALUE, ID)
Definition: struct.c:211
rb_method_type_t
rb_method_type_t
Definition: method.h:101
rb_backtrace_to_location_ary
VALUE rb_backtrace_to_location_ary(VALUE obj)
Definition: vm_backtrace.c:686
strtol
long strtol(const char *__restrict __n, char **__restrict __end_PTR, int __base)
builtin_binary::feature
const char * feature
Definition: builtin.h:73
rb_ary_detransient
void rb_ary_detransient(VALUE a)
Definition: array.c:408
rb_eval_string
VALUE rb_eval_string(const char *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1715
rb_method_refined_struct::owner
VALUE owner
Definition: method.h:148
rb_block_call_func
VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
Definition: rb_mjit_min_header-2.7.2.h:5210
rb_get_values_at
VALUE rb_get_values_at(VALUE, long, int, const VALUE *, VALUE(*)(VALUE, long))
Definition: array.c:3106
rb_throw
void rb_throw(const char *tag, VALUE val)
Definition: vm_eval.c:2220
RUBY_FL_SINGLETON
@ RUBY_FL_SINGLETON
Definition: ruby.h:883
rb_str_drop_bytes
VALUE rb_str_drop_bytes(VALUE, long)
Definition: string.c:4573
rb_cObject
VALUE rb_cObject
Object class.
Definition: ruby.h:2010
rb_extract_keywords
VALUE rb_extract_keywords(VALUE *orighash)
Definition: class.c:1868
div
void div_t div(int __numer, int __denom)
rb_hash_foreach
void rb_hash_foreach(VALUE, int(*)(VALUE, VALUE, VALUE), VALUE)
rb_resolve_refined_method
const rb_method_entry_t * rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me)
Definition: vm_method.c:972
rb_event_flag_t
uint32_t rb_event_flag_t
Definition: ruby.h:2278
__gettzinfo
__tzinfo_type * __gettzinfo(void)
rb_rational_plus
VALUE rb_rational_plus(VALUE self, VALUE other)
Definition: rational.c:737
rb_ary_join
VALUE rb_ary_join(VALUE, VALUE)
Definition: array.c:2347
rb_execarg::rlimit_limits
VALUE rlimit_limits
Definition: internal.h:2057
_fpstate
Definition: rb_mjit_min_header-2.7.2.h:2044
RUBY_T_STRUCT
@ RUBY_T_STRUCT
Definition: rb_mjit_min_header-2.7.2.h:4327
pthread_setconcurrency
int pthread_setconcurrency(int)
st_check_for_sizeof_st_index_t
char st_check_for_sizeof_st_index_t[4==(int) sizeof(st_index_t) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.2.h:5366
NODE_COLON3
@ NODE_COLON3
Definition: rb_mjit_min_header-2.7.2.h:8131
gmtime
struct tm * gmtime(const time_t *_timer)
NODE_FCALL
@ NODE_FCALL
Definition: rb_mjit_min_header-2.7.2.h:8083
getegid
gid_t getegid(void)
Definition: win32.c:2786
rb_big_odd_p
VALUE rb_big_odd_p(VALUE)
Definition: bignum.c:6831
mkfifo
int mkfifo(const char *__path, mode_t __mode)
rb_iseq_local_variables
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq)
Definition: vm.c:849
rb_str_hash
st_index_t rb_str_hash(VALUE)
Definition: string.c:3163
unlockpt
int unlockpt(int)
RB_DEBUG_COUNTER_mjit_length_compact_units
@ RB_DEBUG_COUNTER_mjit_length_compact_units
Definition: rb_mjit_min_header-2.7.2.h:11667
tSingleton_method_added
@ tSingleton_method_added
Definition: rb_mjit_min_header-2.7.2.h:8577
idNot
@ idNot
Definition: rb_mjit_min_header-2.7.2.h:8535
RUBY_FL_PROMOTED1
@ RUBY_FL_PROMOTED1
Definition: ruby.h:844
pthread_mutexattr_init
int pthread_mutexattr_init(pthread_mutexattr_t *)
strsep
char * strsep(char **, const char *)
rb_exc_raise
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
Definition: eval.c:668
RUBY_SPECIAL_SHIFT
@ RUBY_SPECIAL_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:4299
ruby_current_execution_context_ptr
rb_execution_context_t * ruby_current_execution_context_ptr
Definition: vm.c:373
rb_default_coverage
VALUE rb_default_coverage(int)
Definition: thread.c:5519
defined_type
defined_type
Definition: rb_mjit_min_header-2.7.2.h:10847
obj
const VALUE VALUE obj
Definition: rb_mjit_min_header-2.7.2.h:5738
rb_dir_getwd
VALUE rb_dir_getwd(void)
Definition: dir.c:1141
rb_mProcess
VALUE rb_mProcess
Definition: ruby.h:2005
setpgid
int setpgid(pid_t __pid, pid_t __pgid)
rb_trace_arg_struct::id
ID id
Definition: vm_core.h:1879
pthread_rwlock_timedwrlock
int pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *abstime)
rb_mod_const_of
void * rb_mod_const_of(VALUE, void *)
Definition: variable.c:2576
ruby_escaped_char
const char * ruby_escaped_char(int c)
Definition: string.c:5848
RB_DEBUG_COUNTER_theap_alloc
@ RB_DEBUG_COUNTER_theap_alloc
Definition: rb_mjit_min_header-2.7.2.h:11647
pthread_once_t::mutex
pthread_mutex_t mutex
Definition: rb_mjit_min_header-2.7.2.h:1388
re_pattern_buffer
Definition: onigmo.h:755
rb_big_xor
VALUE rb_big_xor(VALUE, VALUE)
Definition: bignum.c:6573
rb_str2big_karatsuba
VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck)
Definition: bignum.c:4352
iseq_compile_data_storage::pos
unsigned int pos
Definition: iseq.h:276
YARVINSN_trace_duparray
@ YARVINSN_trace_duparray
Definition: rb_mjit_min_header-2.7.2.h:12069
RAISED_NOMEMORY
@ RAISED_NOMEMORY
Definition: rb_mjit_min_header-2.7.2.h:11150
cookie_io_functions_t::seek
cookie_seek_function_t * seek
Definition: rb_mjit_min_header-2.7.2.h:1826
imemo_ast
@ imemo_ast
Definition: rb_mjit_min_header-2.7.2.h:7038
rb_data_typed_object_wrap
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type)
Definition: gc.c:2399
cpu_set_t
Definition: rb_mjit_min_header-2.7.2.h:1351
rb_st_free_table
void rb_st_free_table(st_table *)
_reent::_freelist
struct _Bigint ** _freelist
Definition: rb_mjit_min_header-2.7.2.h:1072
rb_struct_size
VALUE rb_struct_size(VALUE s)
Definition: struct.c:1291
local_var_list
Definition: vm_eval.c:14
rb_genrand_ulong_limited
unsigned long rb_genrand_ulong_limited(unsigned long i)
Definition: random.c:807
truncate
int truncate(const char *, off_t __length)
sigdelset
int sigdelset(sigset_t *, const int)
rb_uint2big
VALUE rb_uint2big(uintptr_t n)
Definition: bignum.c:3158
__ssp_real_mbstowcs
size_t __ssp_real_mbstowcs(wchar_t *__buf, const char *__src, size_t __n) __asm__("_" "mbstowcs")
rb_execarg_parent_start
void rb_execarg_parent_start(VALUE execarg_obj)
Definition: process.c:2816
RSTRING_EMBED_LEN_MASK
#define RSTRING_EMBED_LEN_MASK
rb_intern2
ID rb_intern2(const char *, long)
Definition: symbol.c:653
__builtin_expect
#define __builtin_expect(x, expected_value)
Definition: ffi_common.h:123
rb_to_symbol_type
VALUE rb_to_symbol_type(VALUE obj)
Definition: symbol.c:1044
pthread_mutexattr_setprioceiling
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int)
tProc
@ tProc
Definition: rb_mjit_min_header-2.7.2.h:8587
rb_vm_fstring_table
st_table * rb_vm_fstring_table(void)
Definition: vm.c:3392
ruby_debug_print_id
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
Definition: debug.c:115
rb_iseq_new_with_callback_callback_func::func
void(* func)(rb_iseq_t *, struct iseq_link_anchor *, const void *)
Definition: vm_core.h:1021
rb_imemo_tmpbuf_parser_heap
rb_imemo_tmpbuf_t * rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt)
Definition: gc.c:2328
rb_classext_struct::callable_m_tbl
struct rb_id_table * callable_m_tbl
Definition: internal.h:1027
RStruct::len
long len
Definition: internal.h:946
rb_source_location
VALUE rb_source_location(int *pline)
Definition: vm.c:1360
cosh
double cosh(double)
Definition: math.c:228
__int64_t
long long int __int64_t
Definition: rb_mjit_min_header-2.7.2.h:626
NODE_RETRY
@ NODE_RETRY
Definition: rb_mjit_min_header-2.7.2.h:8061
Init_enc_set_filesystem_encoding
int Init_enc_set_filesystem_encoding(void)
Definition: localeinit.c:119
rb_execution_context_struct::vm_stack_size
size_t vm_stack_size
Definition: vm_core.h:846
_reent::_mbrlen_state
_mbstate_t _mbrlen_state
Definition: rb_mjit_min_header-2.7.2.h:1092
rb_io_get_io
VALUE rb_io_get_io(VALUE)
Definition: io.c:733
rb_vm_call0
VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE *, const rb_callable_method_entry_t *, int kw_splat)
Definition: vm_eval.c:46
_reent::_inc
int _inc
Definition: rb_mjit_min_header-2.7.2.h:1063
dev_t
__dev_t dev_t
Definition: rb_mjit_min_header-2.7.2.h:1317
rb_utf8_str_new
#define rb_utf8_str_new(str, len)
Definition: rb_mjit_min_header-2.7.2.h:6115
rb_public_const_get_from
VALUE rb_public_const_get_from(VALUE klass, ID id)
Definition: variable.c:2403
rb_method_cfunc_struct::argc
int argc
Definition: method.h:134
rb_bug
void rb_bug(const char *fmt,...)
Definition: error.c:636
rb_control_frame_struct::self
VALUE self
Definition: vm_core.h:764
NODE_ARGS
@ NODE_ARGS
Definition: rb_mjit_min_header-2.7.2.h:8113
YARVINSN_trace_checkkeyword
@ YARVINSN_trace_checkkeyword
Definition: rb_mjit_min_header-2.7.2.h:12086
rb_load_protect
void rb_load_protect(VALUE, int, int *)
Definition: load.c:657
YARVINSN_trace_getlocal_WC_0
@ YARVINSN_trace_getlocal_WC_0
Definition: rb_mjit_min_header-2.7.2.h:12138
rb_hook_list_mark
void rb_hook_list_mark(rb_hook_list_t *hooks)
Definition: vm_trace.c:53
pthread_cond_timedwait
int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *)
rb_false
VALUE rb_false(VALUE obj)
Definition: object.c:1391
RB_DEBUG_COUNTER_obj_bignum_embed
@ RB_DEBUG_COUNTER_obj_bignum_embed
Definition: rb_mjit_min_header-2.7.2.h:11623
rb_public_const_defined_from
int rb_public_const_defined_from(VALUE klass, ID id)
Definition: variable.c:2698
rb_time_nano_new
VALUE rb_time_nano_new(time_t, long)
Definition: time.c:2519
_fpstate::ipoff
__uint32_t ipoff
Definition: rb_mjit_min_header-2.7.2.h:2048
_fgetc_unlocked_r
int _fgetc_unlocked_r(struct _reent *, FILE *)
rb_str_export_locale
VALUE rb_str_export_locale(VALUE)
Definition: string.c:1129
__sFILE::_r
int _r
Definition: rb_mjit_min_header-2.7.2.h:980
YARVINSN_opt_nil_p
@ YARVINSN_opt_nil_p
Definition: rb_mjit_min_header-2.7.2.h:11991
__wc
__inline__ wchar_t __wc
Definition: rb_mjit_min_header-2.7.2.h:2726
YARVINSN_definemethod
@ YARVINSN_definemethod
Definition: rb_mjit_min_header-2.7.2.h:11986
rb_ensure_entry::e_proc
VALUE(* e_proc)(VALUE)
Definition: vm_core.h:830
rb_objspace_gc_disable
VALUE rb_objspace_gc_disable(struct rb_objspace *)
Definition: gc.c:9256
rb_ec_clear_vm_stack
void rb_ec_clear_vm_stack(rb_execution_context_t *ec)
Definition: vm.c:2699
YARVINSN_opt_ltlt
@ YARVINSN_opt_ltlt
Definition: rb_mjit_min_header-2.7.2.h:12018
ruserok
int ruserok(const char *rhost, int superuser, const char *ruser, const char *luser)
rb_method_call_with_block_kw
VALUE rb_method_call_with_block_kw(int, const VALUE *, VALUE, VALUE, int)
Definition: proc.c:2296
rb_block_call_func_t
rb_block_call_func * rb_block_call_func_t
Definition: ruby.h:1967
rb_parser_compile_string
rb_ast_t * rb_parser_compile_string(VALUE, const char *, VALUE, int)
Definition: ripper.c:12872
_reent::__sf
__FILE __sf[3]
Definition: rb_mjit_min_header-2.7.2.h:1110
rb_compile_option_struct::instructions_unification
unsigned int instructions_unification
Definition: iseq.h:212
rb_float_numerator
VALUE rb_float_numerator(VALUE x)
Definition: rational.c:2081
rb_mKernel
VALUE rb_mKernel
Kernel module.
Definition: ruby.h:1998
iseq_compile_data::ivar_cache_table
struct rb_id_table * ivar_cache_table
Definition: iseq.h:118
YARVINSN_trace_putspecialobject
@ YARVINSN_trace_putspecialobject
Definition: rb_mjit_min_header-2.7.2.h:12060
fchmodat
int fchmodat(int, const char *, mode_t, int)
iseq_inline_iv_cache_entry::index
size_t index
Definition: vm_core.h:228
__sbuf::_base
unsigned char * _base
Definition: vsnprintf.c:138
memrchr
void * memrchr(const void *, int, size_t)
idNUMPARAM_7
@ idNUMPARAM_7
Definition: rb_mjit_min_header-2.7.2.h:8711
RNode::argc
long argc
Definition: node.h:160
_fpstate::dataoff
__uint32_t dataoff
Definition: rb_mjit_min_header-2.7.2.h:2050
viscanf
int int int int int int int int char char int int int int int int int int int char char int int int int int viscanf(const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
RArray::as
union RArray::@5 as
rb_str_encode_ospath
VALUE rb_str_encode_ospath(VALUE)
Definition: file.c:236
f
#define f
ruby_sig_finalize
void ruby_sig_finalize(void)
Definition: signal.c:1470
rb_set_errinfo
void rb_set_errinfo(VALUE err)
Sets the current exception ($!) to the given value.
Definition: eval.c:1896
RNode::nd_loc
rb_code_location_t nd_loc
Definition: node.h:172
RUBY_T_COMPLEX
@ RUBY_T_COMPLEX
Definition: rb_mjit_min_header-2.7.2.h:4332
rb_hash_size
VALUE rb_hash_size(VALUE)
Definition: hash.c:2939
VM_FRAME_MAGIC_TOP
@ VM_FRAME_MAGIC_TOP
Definition: rb_mjit_min_header-2.7.2.h:10028
rb_execution_context_struct::fiber_ptr
rb_fiber_t * fiber_ptr
Definition: vm_core.h:856
rb_eSecurityError
VALUE rb_eSecurityError
Definition: error.c:933
__signbitf
int __signbitf(float x)
idOr
@ idOr
Definition: rb_mjit_min_header-2.7.2.h:8537
_strtoumax_r
uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int)
mbstowcs
size_t mbstowcs(wchar_t *__restrict, const char *__restrict, size_t)
rb_vm_struct::load_path_snapshot
VALUE load_path_snapshot
Definition: vm_core.h:616
RUBY_T_RATIONAL
@ RUBY_T_RATIONAL
Definition: rb_mjit_min_header-2.7.2.h:4333
rb_method_basic_definition_p_with_cc
bool rb_method_basic_definition_p_with_cc(struct rb_call_data *cd, VALUE klass, ID mid)
Definition: vm_method.c:2057
fdopen
int int int int int int int int char char int int int int int int int int int char char int int int int int int int int FILE * fdopen(int, const char *)
rb_hash
VALUE rb_hash(VALUE)
Definition: hash.c:129
itimerspec::it_value
struct timespec it_value
Definition: rb_mjit_min_header-2.7.2.h:1253
block_type_symbol
@ block_type_symbol
Definition: rb_mjit_min_header-2.7.2.h:9752
rb_add_method_iseq
void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi)
Definition: vm_method.c:684
rb_time_timespec
struct timespec rb_time_timespec(VALUE time)
Definition: time.c:2692
YARVINSN_opt_minus
@ YARVINSN_opt_minus
Definition: rb_mjit_min_header-2.7.2.h:12008
idInitialize_dup
@ idInitialize_dup
Definition: rb_mjit_min_header-2.7.2.h:8676
rb_control_frame_struct::block_code
const void * block_code
Definition: vm_core.h:766
rb_define_global_const
void rb_define_global_const(const char *, VALUE)
Definition: variable.c:2903
FPE_FLTOVF
#define FPE_FLTOVF
Definition: rb_mjit_min_header-2.7.2.h:2204
rb_nativethread_cond_t
pthread_cond_t rb_nativethread_cond_t
Definition: rb_mjit_min_header-2.7.2.h:9329
rb_vm_localjump_error
MJIT_FUNC_EXPORTED void rb_vm_localjump_error(const char *mesg, VALUE value, int reason)
Definition: vm.c:1471
rb_class_protected_instance_methods
VALUE rb_class_protected_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1287
idANDOP
@ idANDOP
Definition: rb_mjit_min_header-2.7.2.h:8544
_rewind_r
void _rewind_r(struct _reent *, FILE *)
rb_current_realfilepath
VALUE rb_current_realfilepath(void)
Definition: vm_eval.c:2462
rb_str_shared_replace
void rb_str_shared_replace(VALUE, VALUE)
Definition: string.c:1391
rb_event_hook_struct
Definition: vm_trace.c:35
sched_getaffinity
int sched_getaffinity(pid_t, size_t, cpu_set_t *)
rb_time_new
VALUE rb_time_new(time_t, long)
Definition: time.c:2492
RBignum
Definition: internal.h:749
tMethod_removed
@ tMethod_removed
Definition: rb_mjit_min_header-2.7.2.h:8578
VM_SVAR_EXTRA_START
@ VM_SVAR_EXTRA_START
Definition: rb_mjit_min_header-2.7.2.h:10007
pselect
int pselect(int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set)
rb_mark_set
void rb_mark_set(struct st_table *)
Definition: gc.c:4801
uint_fast64_t
long long unsigned int uint_fast64_t
Definition: rb_mjit_min_header-2.7.2.h:2942
rb_iseq_constant_body::iseq_encoded
VALUE * iseq_encoded
Definition: vm_core.h:325
rb_waitpid
const VALUE *pid_t rb_waitpid(pid_t pid, int *status, int flags)
RSTRUCT_EMBED_LEN_MASK
#define RSTRUCT_EMBED_LEN_MASK
Definition: rb_mjit_min_header-2.7.2.h:6892
rb_big_sign
int rb_big_sign(VALUE x)
Definition: bignum.c:6772
idLambda
@ idLambda
Definition: rb_mjit_min_header-2.7.2.h:8669
YARVINSN_getconstant
@ YARVINSN_getconstant
Definition: rb_mjit_min_header-2.7.2.h:11950
rb_data_typed_object_alloc
#define rb_data_typed_object_alloc
Definition: gc.c:15
rb_st_init_numtable
st_table * rb_st_init_numtable(void)
argc
int argc
Definition: rb_mjit_min_header-2.7.2.h:15400
rb_reset_random_seed
void rb_reset_random_seed(void)
Definition: random.c:1498
_findenv
char * _findenv(const char *, int *)
rb_ec_stack_check
int rb_ec_stack_check(rb_execution_context_t *ec)
Definition: gc.c:4668
__signgam
int * __signgam(void)
NODE_FOR
@ NODE_FOR
Definition: rb_mjit_min_header-2.7.2.h:8056
mkstemp
int mkstemp(char *)
VM_CALL_TAILCALL_bit
@ VM_CALL_TAILCALL_bit
Definition: rb_mjit_min_header-2.7.2.h:9981
idNeqTilde
@ idNeqTilde
Definition: rb_mjit_min_header-2.7.2.h:8540
iseq_compile_data::end_label
struct iseq_label_data * end_label
Definition: iseq.h:99
tanf
float tanf(float)
rb_hash_stlike_lookup
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval)
Definition: hash.c:2017
fmemopen
int FILE * fmemopen(void *__restrict, size_t, const char *__restrict)
sinh
double sinh(double)
Definition: math.c:256
rb_thread_struct::args
VALUE args
Definition: vm_core.h:966
expm1f
float expm1f(float)
ldexp
double ldexp(double, int)
iseq_catch_table::entries
struct iseq_catch_table_entry entries[]
Definition: rb_mjit_min_header-2.7.2.h:10828
rb_hash_method_entry
st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me)
Definition: vm_method.c:1575
id_debug_created_info
@ id_debug_created_info
Definition: rb_mjit_min_header-2.7.2.h:8565
YARVINSN_putnil
@ YARVINSN_putnil
Definition: rb_mjit_min_header-2.7.2.h:11954
DEFINED_METHOD
@ DEFINED_METHOD
Definition: rb_mjit_min_header-2.7.2.h:10855
rb_check_funcall_default
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:533
VM_METHOD_TYPE_OPTIMIZED
@ VM_METHOD_TYPE_OPTIMIZED
Definition: rb_mjit_min_header-2.7.2.h:8801
pthread_create
int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *)
st_table::entries_start
st_index_t entries_start
Definition: st.h:92
rb_fd_select
int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *)
rb_struct_alloc_noinit
VALUE rb_struct_alloc_noinit(VALUE)
Definition: struct.c:349
clock_setenable_attr
int clock_setenable_attr(clockid_t clock_id, int attr)
pthread_attr_getguardsize
int pthread_attr_getguardsize(const pthread_attr_t *, size_t *)
__pthread_barrierattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1384
rb_str_replace
VALUE rb_str_replace(VALUE, VALUE)
Definition: string.c:5363
rb_method_entry_struct::defined_class
VALUE defined_class
Definition: method.h:53
ruby_set_stack_size
void ruby_set_stack_size(size_t)
RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start
@ RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start
Definition: rb_mjit_min_header-2.7.2.h:11513
VM_METHOD_TYPE_ATTRSET
@ VM_METHOD_TYPE_ATTRSET
Definition: rb_mjit_min_header-2.7.2.h:8794
rb_mem_clear
void rb_mem_clear(VALUE *, long)
Definition: array.c:243
rb_vm_thread_backtrace
VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:960
rb_cmperr
void rb_cmperr(VALUE x, VALUE y)
Definition: compar.c:25
idNeq
@ idNeq
Definition: rb_mjit_min_header-2.7.2.h:8534
mjit_cont_new
struct mjit_cont * mjit_cont_new(rb_execution_context_t *ec)
rb_make_backtrace
VALUE rb_make_backtrace(void)
Definition: vm_backtrace.c:872
RB_DEBUG_COUNTER_obj_hash_5_8
@ RB_DEBUG_COUNTER_obj_hash_5_8
Definition: rb_mjit_min_header-2.7.2.h:11601
METHOD_VISI_PROTECTED
@ METHOD_VISI_PROTECTED
Definition: rb_mjit_min_header-2.7.2.h:8731
funlockfile
void funlockfile(FILE *)
n_lead
const VALUE int n_lead
Definition: rb_mjit_min_header-2.7.2.h:6458
rb_method_entry_location
VALUE rb_method_entry_location(const rb_method_entry_t *me)
Definition: proc.c:2725
explicit_bzero
void explicit_bzero(void *, size_t)
Definition: explicit_bzero.c:77
rb_vm_struct::loaded_features_snapshot
VALUE loaded_features_snapshot
Definition: vm_core.h:620
rb_trace_arg_struct::lineno
int lineno
Definition: vm_core.h:1887
_perror_r
void _perror_r(struct _reent *, const char *)
rb_hash_stlike_foreach_with_replace
int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg)
Definition: hash.c:1453
rb_iseq_constant_body::ruby2_keywords
unsigned int ruby2_keywords
Definition: vm_core.h:362
rb_vm_struct::src_encoding_index
int src_encoding_index
Definition: vm_core.h:639
rb_blocking_function_t
VALUE rb_blocking_function_t(void *)
Definition: rb_mjit_min_header-2.7.2.h:6158
iseq_inline_iv_cache_entry::ic_serial
rb_serial_t ic_serial
Definition: vm_core.h:227
RRegexp::usecnt
unsigned long usecnt
Definition: ruby.h:1116
YARVINSN_once
@ YARVINSN_once
Definition: rb_mjit_min_header-2.7.2.h:12005
rb_vm_cframe_empty_keyword_p
int rb_vm_cframe_empty_keyword_p(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.2.h:11350
rb_trace_arg_struct::data
VALUE data
Definition: vm_core.h:1882
rb_enumerator_size_func
VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE)
Definition: rb_mjit_min_header-2.7.2.h:5651
RB_DEBUG_COUNTER_frame_push_dummy
@ RB_DEBUG_COUNTER_frame_push_dummy
Definition: rb_mjit_min_header-2.7.2.h:11537
rb_file_open
VALUE rb_file_open(const char *, const char *)
Definition: io.c:6259
call_status
int const VALUE VALUE int call_status
Definition: rb_mjit_min_header-2.7.2.h:15400
mjit_add_class_serial
void mjit_add_class_serial(rb_serial_t class_serial)
rb_calling_info::recv
VALUE recv
Definition: vm_core.h:252
YARVINSN_getglobal
@ YARVINSN_getglobal
Definition: rb_mjit_min_header-2.7.2.h:11952
rb_captured_block::iseq
const rb_iseq_t * iseq
Definition: vm_core.h:731
pow10f
float pow10f(float)
rb_f_untrace_var
VALUE rb_f_untrace_var(int, const VALUE *)
Definition: variable.c:574
rb_yield_block
VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
rb_method_definition_struct::body
union rb_method_definition_struct::@0 body
NODE_HASH
@ NODE_HASH
Definition: rb_mjit_min_header-2.7.2.h:8091
rb_to_hash_type
VALUE rb_to_hash_type(VALUE obj)
Definition: hash.c:1845
rb_mutex_synchronize
VALUE rb_mutex_synchronize(VALUE mutex, VALUE(*func)(VALUE arg), VALUE arg)
Definition: thread_sync.c:522
ldexpf
float ldexpf(float, int)
_fprintf_r
int _fprintf_r(struct _reent *, FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
_pthread_cleanup_push
void _pthread_cleanup_push(__pthread_cleanup_handler *handler)
IC
struct iseq_inline_cache_entry * IC
Definition: rb_mjit_min_header-2.7.2.h:10010
_tmpfile_r
FILE * _tmpfile_r(struct _reent *)
rb_ec_set_vm_stack
void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size)
Definition: vm.c:2676
tLASTLINE
@ tLASTLINE
Definition: rb_mjit_min_header-2.7.2.h:8637
rb_method_call_with_block
VALUE rb_method_call_with_block(int, const VALUE *, VALUE, VALUE)
Definition: proc.c:2309
_reent::_locale
struct __locale_t * _locale
Definition: rb_mjit_min_header-2.7.2.h:1066
YARVINSN_adjuststack
@ YARVINSN_adjuststack
Definition: rb_mjit_min_header-2.7.2.h:11980
err
int err
Definition: rb_mjit_min_header-2.7.2.h:7337
rb_method_call
VALUE rb_method_call(int, const VALUE *, VALUE)
Definition: proc.c:2273
rb_reg_start_with_p
_Bool rb_reg_start_with_p(VALUE re, VALUE str)
Definition: re.c:1618
rb_ull2inum
VALUE rb_ull2inum(unsigned long long)
rb_subclass_entry::klass
VALUE klass
Definition: internal.h:999
sigevent::sigev_notify_function
void(* sigev_notify_function)(sigval_t)
Definition: rb_mjit_min_header-2.7.2.h:2096
YARVINSN_branchunless
@ YARVINSN_branchunless
Definition: rb_mjit_min_header-2.7.2.h:12001
__mode_t
__uint32_t __mode_t
Definition: rb_mjit_min_header-2.7.2.h:876
fpathconf
long fpathconf(int __fd, int __name)
__mcontext::ds
__uint32_t ds
Definition: rb_mjit_min_header-2.7.2.h:2068
__fd_mask
unsigned long __fd_mask
Definition: rb_mjit_min_header-2.7.2.h:1259
timeval
Definition: missing.h:53
rb_print_undef_str
void rb_print_undef_str(VALUE klass, VALUE name)
Definition: eval_error.c:398
rb_hash_keys
VALUE rb_hash_keys(VALUE hash)
Definition: hash.c:3409
RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject
Definition: rb_mjit_min_header-2.7.2.h:11546
__ssp_real_gethostname
int __ssp_real_gethostname(char *__buf, size_t __len) __asm__("_" "gethostname")
ruby_rhash_flags
ruby_rhash_flags
Definition: internal.h:817
rb_block_arity
int rb_block_arity(void)
Definition: proc.c:1144
RB_DEBUG_COUNTER_frame_push_class
@ RB_DEBUG_COUNTER_frame_push_class
Definition: rb_mjit_min_header-2.7.2.h:11531
rb_intern
#define rb_intern(str)
Definition: rb_mjit_min_header-2.7.2.h:5135
nextafterl
long double nextafterl(long double, long double)
rb_thread_struct::unblock
struct rb_unblock_callback unblock
Definition: vm_core.h:957
powl
long double powl(long double, long double)
vsscanf
int int int int int vsscanf(const char *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
addr_t
char * addr_t
Definition: rb_mjit_min_header-2.7.2.h:1447
rb_ensure_list
Definition: vm_core.h:834
ruby_error_stackfatal
@ ruby_error_stackfatal
Definition: rb_mjit_min_header-2.7.2.h:9597
rb_obj_alloc
VALUE rb_obj_alloc(VALUE)
Allocates an instance of klass.
Definition: object.c:1895
scalblnf
float scalblnf(float, long int)
ILL_ILLOPC
#define ILL_ILLOPC
Definition: rb_mjit_min_header-2.7.2.h:2193
str
char str[HTML_ESCAPE_MAX_LEN+1]
Definition: escape.c:18
__sbuf
Definition: vsnprintf.c:137
rb_class_foreach_subclass
void rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE, VALUE), VALUE)
Definition: class.c:113
YARVINSN_toregexp
@ YARVINSN_toregexp
Definition: rb_mjit_min_header-2.7.2.h:11962
rb_thread_alone
int rb_thread_alone(void)
Definition: thread.c:3492
sigfillset
int sigfillset(sigset_t *)
rb_iseq_constant_body::opt_num
int opt_num
Definition: vm_core.h:368
rb_str_unlocktmp
VALUE rb_str_unlocktmp(VALUE)
Definition: string.c:2675
rb_obj_memsize_of
size_t rb_obj_memsize_of(VALUE)
Definition: gc.c:3937
FPE_FLTSUB
#define FPE_FLTSUB
Definition: rb_mjit_min_header-2.7.2.h:2208
__uid_t
__uint32_t __uid_t
Definition: rb_mjit_min_header-2.7.2.h:862
idEqTilde
@ idEqTilde
Definition: rb_mjit_min_header-2.7.2.h:8539
rb_execarg
Definition: internal.h:2025
rb_str_length
VALUE rb_str_length(VALUE)
Definition: string.c:1843
pthread_mutexattr_getprotocol
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *)
rb_ary_push
VALUE rb_ary_push(VALUE, VALUE)
Definition: array.c:1195
int_fast32_t
int int_fast32_t
Definition: rb_mjit_min_header-2.7.2.h:2938
rb_int_abs
VALUE rb_int_abs(VALUE num)
Definition: numeric.c:4855
_atexit
Definition: rb_mjit_min_header-2.7.2.h:965
rb_thread_struct::pending_interrupt_mask_stack
VALUE pending_interrupt_mask_stack
Definition: vm_core.h:953
rb_thread_struct::value
VALUE value
Definition: vm_core.h:944
coshf
float coshf(float)
ruby_dtrace_method_hook_args::classname
const char * classname
Definition: probes_helper.h:7
rb_const_get_at
VALUE rb_const_get_at(VALUE, ID)
Definition: variable.c:2397
_wcstombs_r
size_t _wcstombs_r(struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *)
__stack_chk_fail
void __stack_chk_fail(void) __attribute__((__noreturn__))
ruby_static_id_status
ID ruby_static_id_status
Definition: rb_mjit_min_header-2.7.2.h:7315
rb_thread_terminate_all
void rb_thread_terminate_all(void)
Definition: thread.c:559
YARVINSN_trace_swap
@ YARVINSN_trace_swap
Definition: rb_mjit_min_header-2.7.2.h:12079
sinhl
long double sinhl(long double)
ruby_is_fd_loadable
int ruby_is_fd_loadable(int fd)
Definition: file.c:6195
rb_backtrace_use_iseq_first_lineno_for_last_location
void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self)
Definition: vm_backtrace.c:632
rb_id2str
VALUE rb_id2str(ID)
Definition: symbol.c:795
_sigcommune::_si_read_handle
void * _si_read_handle
Definition: rb_mjit_min_header-2.7.2.h:2103
rb_str_symname_p
int rb_str_symname_p(VALUE)
Definition: string.c:10695
rb_st_foreach_safe
void rb_st_foreach_safe(struct st_table *, int(*)(st_data_t, st_data_t, st_data_t), st_data_t)
stpcpy
#define stpcpy(dst, src)
Definition: rb_mjit_min_header-2.7.2.h:2857
rb_hook_list_struct::hooks
struct rb_event_hook_struct * hooks
Definition: vm_core.h:566
RUBY_T_UNDEF
@ RUBY_T_UNDEF
Definition: rb_mjit_min_header-2.7.2.h:4339
rb_iseq_constant_body::total_calls
long unsigned total_calls
Definition: rb_mjit_min_header-2.7.2.h:9562
__sFILE64::_nbuf
unsigned char _nbuf[1]
Definition: rb_mjit_min_header-2.7.2.h:1028
vsiprintf
int int int int int int int int char char int int int int int int int int int char char int int int int int int vsiprintf(char *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_io_fdopen
VALUE rb_io_fdopen(int, int, const char *)
Definition: io.c:8004
rb_ec_error_print
void rb_ec_error_print(rb_execution_context_t *volatile ec, volatile VALUE errinfo)
Definition: eval_error.c:346
rb_get_next_signal
int rb_get_next_signal(void)
Definition: signal.c:756
rb_convert_type
VALUE rb_convert_type(VALUE, int, const char *, const char *)
Converts an object into another type.
Definition: object.c:2900
reg_cfp
rb_control_frame_t * reg_cfp
Definition: rb_mjit_min_header-2.7.2.h:15126
rb_trace_arg_struct::ec
rb_execution_context_t * ec
Definition: vm_core.h:1876
rb_ary_delete_same
void rb_ary_delete_same(VALUE, VALUE)
Definition: array.c:3396
rb_block_proc
VALUE rb_block_proc(void)
Definition: proc.c:837
_l64a_r
char * _l64a_r(struct _reent *, long __input)
src
__inline__ const void *__restrict src
Definition: rb_mjit_min_header-2.7.2.h:2842
ruby_glob
int ruby_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2519
t__attached__
@ t__attached__
Definition: rb_mjit_min_header-2.7.2.h:8591
__uintptr_t
unsigned int __uintptr_t
Definition: rb_mjit_min_header-2.7.2.h:644
rb_exec_async_signal_safe
int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen)
Definition: process.c:3523
RMoved::destination
VALUE destination
Definition: internal.h:910
builtin_invoker
VALUE(* builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
Definition: rb_mjit_min_header-2.7.2.h:17066
MEMO::v2
const VALUE v2
Definition: internal.h:1282
rb_execarg_new
VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt)
Definition: process.c:2633
rb_obj_as_string_result
VALUE rb_obj_as_string_result(VALUE str, VALUE obj)
Definition: string.c:1452
rb_id_quote_unprintable
VALUE rb_id_quote_unprintable(ID)
Definition: string.c:10735
rb_control_frame_struct::iseq
const rb_iseq_t * iseq
Definition: vm_core.h:763
__sFILE64::_p
unsigned char * _p
Definition: rb_mjit_min_header-2.7.2.h:1008
rb_big2str_poweroftwo
VALUE rb_big2str_poweroftwo(VALUE x, int base)
Definition: bignum.c:4921
__sFILE::_p
unsigned char * _p
Definition: vsnprintf.c:170
rb_captured_block
Definition: vm_core.h:727
vm_throw_data::reserved
VALUE reserved
Definition: internal.h:1195
YARVINSN_opt_invokebuiltin_delegate
@ YARVINSN_opt_invokebuiltin_delegate
Definition: rb_mjit_min_header-2.7.2.h:12033
rb_reg_match_pre
VALUE rb_reg_match_pre(VALUE)
Definition: re.c:1749
RB_DEBUG_COUNTER_artable_hint_miss
@ RB_DEBUG_COUNTER_artable_hint_miss
Definition: rb_mjit_min_header-2.7.2.h:11642
__stpcpy_chk
char * __stpcpy_chk(char *, const char *, size_t)
SI_QUEUE
#define SI_QUEUE
Definition: rb_mjit_min_header-2.7.2.h:2191
RB_INT_PARSE_PREFIX
@ RB_INT_PARSE_PREFIX
Definition: rb_mjit_min_header-2.7.2.h:7899
rb_filesystem_str_new
VALUE rb_filesystem_str_new(const char *, long)
Definition: string.c:1111
rb_xrealloc_mul_add
void * rb_xrealloc_mul_add(const void *, size_t, size_t, size_t)
Definition: gc.c:10183
RB_DEBUG_COUNTER_ccf_iseq_opt
@ RB_DEBUG_COUNTER_ccf_iseq_opt
Definition: rb_mjit_min_header-2.7.2.h:11515
rb_readwrite_sys_fail
void rb_readwrite_sys_fail(enum rb_io_wait_readwrite writable, const char *mesg)
Definition: io.c:12927
rb_num_coerce_cmp
VALUE rb_num_coerce_cmp(VALUE, VALUE, ID)
Definition: numeric.c:453
ruby_native_thread_p
int ruby_native_thread_p(void)
Definition: thread.c:5277
rb_callable_method_entry_struct::flags
VALUE flags
Definition: method.h:60
mjit_options::max_cache_size
int max_cache_size
Definition: rb_mjit_min_header-2.7.2.h:11701
rb_big_size
size_t rb_big_size(VALUE)
Definition: bignum.c:6778
getppid
pid_t getppid(void)
rb_captured_block::val
VALUE val
Definition: vm_core.h:733
rb_is_const_sym
int rb_is_const_sym(VALUE sym)
Definition: symbol.c:896
__sFILE::_nbuf
unsigned char _nbuf[1]
Definition: rb_mjit_min_header-2.7.2.h:998
rb_obj_instance_variables
VALUE rb_obj_instance_variables(VALUE)
Definition: variable.c:1579
rb_make_no_method_exception
VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj, int argc, const VALUE *argv, int priv)
Definition: vm_eval.c:772
rb_define_protected_method
void rb_define_protected_method(VALUE, const char *, VALUE(*)(), int)
_fmemopen_r
int int FILE * _fmemopen_r(struct _reent *, void *__restrict, size_t, const char *__restrict)
rb_execarg::fd_close
VALUE fd_close
Definition: internal.h:2063
RHASH_AR_TABLE_BOUND_SHIFT
#define RHASH_AR_TABLE_BOUND_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:6864
vfscanf
int int int vfscanf(FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_id_encoding
ID rb_id_encoding(void)
Definition: encoding.c:759
YARVINSN_getinstancevariable
@ YARVINSN_getinstancevariable
Definition: rb_mjit_min_header-2.7.2.h:11946
mjit_update_references
void mjit_update_references(const rb_iseq_t *iseq)
fstat
int fstat(int __fd, struct stat *__sbuf)
setkey
void setkey(const char *__key)
mblen
int mblen(const char *, size_t)
__ssp_real_getdomainname
int __ssp_real_getdomainname(char *__buf, size_t __len) __asm__("_" "getdomainname")
idGTGT
@ idGTGT
Definition: rb_mjit_min_header-2.7.2.h:8527
strcoll_l
int strcoll_l(const char *, const char *, locale_t)
rb_str_to_inum
VALUE rb_str_to_inum(VALUE, int, int)
Definition: bignum.c:4268
rb_vm_struct::fiber_machine_stack_size
size_t fiber_machine_stack_size
Definition: vm_core.h:666
imaxdiv
imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer)
rb_ary_freeze
VALUE rb_ary_freeze(VALUE)
Definition: array.c:648
putw
int putw(int, FILE *)
tName
@ tName
Definition: rb_mjit_min_header-2.7.2.h:8621
rb_vm_struct::top_self
VALUE top_self
Definition: vm_core.h:614
RB_DEBUG_COUNTER_gc_major_shady
@ RB_DEBUG_COUNTER_gc_major_shady
Definition: rb_mjit_min_header-2.7.2.h:11568
NODE_ALIAS
@ NODE_ALIAS
Definition: rb_mjit_min_header-2.7.2.h:8124
RB_DEBUG_COUNTER_artable_hint_hit
@ RB_DEBUG_COUNTER_artable_hint_hit
Definition: rb_mjit_min_header-2.7.2.h:11641
rb_vm_struct::safe_level_
unsigned int safe_level_
Definition: vm_core.h:606
rb_parser_encoding
VALUE rb_parser_encoding(VALUE)
Definition: ripper.c:19279
rb_gc_copy_finalizer
void rb_gc_copy_finalizer(VALUE, VALUE)
Definition: gc.c:3297
st_table::type
const struct st_hash_type * type
Definition: st.h:84
iseq_insn_info_entry::events
rb_event_flag_t events
Definition: iseq.h:222
rb_mMath
VALUE rb_mMath
Definition: ruby.h:2004
rb_secure_update
void rb_secure_update(VALUE)
Definition: safe.c:116
clock_t
unsigned long clock_t
Definition: rb_mjit_min_header-2.7.2.h:1301
_reent::__sglue
struct _glue __sglue
Definition: rb_mjit_min_header-2.7.2.h:1109
RB_DEBUG_COUNTER_ivar_set_base
@ RB_DEBUG_COUNTER_ivar_set_base
Definition: rb_mjit_min_header-2.7.2.h:11554
rb_iseq_constant_body::ISEQ_TYPE_RESCUE
@ ISEQ_TYPE_RESCUE
Definition: vm_core.h:317
exp10
double exp10(double)
args_info::kw_argv
VALUE * kw_argv
Definition: vm_args.c:31
rb_eLocalJumpError
VALUE rb_eLocalJumpError
Definition: eval.c:34
tTo_ary
@ tTo_ary
Definition: rb_mjit_min_header-2.7.2.h:8597
idMethod_undefined
@ idMethod_undefined
Definition: rb_mjit_min_header-2.7.2.h:8661
in_addr_t
__uint32_t in_addr_t
Definition: rb_mjit_min_header-2.7.2.h:1280
tMax
@ tMax
Definition: rb_mjit_min_header-2.7.2.h:8568
roundl
long double roundl(long double)
RTypedData::typed_flag
VALUE typed_flag
Definition: ruby.h:1171
rb_eval_cmd
VALUE rb_eval_cmd(VALUE, VALUE, int)
Definition: vm_eval.c:1824
rb_locale_str_new
VALUE rb_locale_str_new(const char *, long)
Definition: string.c:1099
rb_vm_struct::frozen_strings
st_table * frozen_strings
Definition: vm_core.h:656
strtold_l
long double strtold_l(const char *__restrict, char **__restrict, locale_t)
_reent
Definition: rb_mjit_min_header-2.7.2.h:1060
BOP_MINUS
@ BOP_MINUS
Definition: rb_mjit_min_header-2.7.2.h:9603
rb_big_hash
VALUE rb_big_hash(VALUE)
Definition: bignum.c:6726
dremf
float dremf(float, float)
rb_float_new
#define rb_float_new(d)
Definition: rb_mjit_min_header-2.7.2.h:7544
__sFILE64::_lbfsize
int _lbfsize
Definition: rb_mjit_min_header-2.7.2.h:1014
YARVINSN_duphash
@ YARVINSN_duphash
Definition: rb_mjit_min_header-2.7.2.h:11967
flock::l_len
off_t l_len
Definition: rb_mjit_min_header-2.7.2.h:1436
idMethod_added
@ idMethod_added
Definition: rb_mjit_min_header-2.7.2.h:8657
tBt
@ tBt
Definition: rb_mjit_min_header-2.7.2.h:8608
rb_control_frame_struct::__bp__
VALUE * __bp__
Definition: vm_core.h:767
rb_nativethread_lock_unlock
void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock)
Definition: thread.c:451
ISE
union iseq_inline_storage_entry * ISE
Definition: rb_mjit_min_header-2.7.2.h:10012
ruby_executable_node
int ruby_executable_node(void *n, int *status)
Checks the return value of ruby_options().
Definition: eval.c:306
rb_ast_update_references
void rb_ast_update_references(rb_ast_t *)
Definition: node.c:1330
rb_autoload_load
VALUE rb_autoload_load(VALUE, ID)
Definition: variable.c:2226
rb_big2dbl
double rb_big2dbl(VALUE)
Definition: bignum.c:5310
tgamma
double tgamma(double)
Definition: tgamma.c:66
rb_enc_set_base
void rb_enc_set_base(const char *name, const char *orig)
Definition: encoding.c:382
DEFINED_NOT_DEFINED
@ DEFINED_NOT_DEFINED
Definition: rb_mjit_min_header-2.7.2.h:10848
rb_io_binmode
VALUE rb_io_binmode(VALUE)
Definition: io.c:5334
path
VALUE path
Definition: rb_mjit_min_header-2.7.2.h:7336
rb_method_type_t
rb_method_type_t
Definition: rb_mjit_min_header-2.7.2.h:8791
sigaction::sa_handler
_sig_func_ptr sa_handler
Definition: rb_mjit_min_header-2.7.2.h:2234
YARVINSN_trace_opt_lt
@ YARVINSN_trace_opt_lt
Definition: rb_mjit_min_header-2.7.2.h:12117
RUBY_T_FALSE
@ RUBY_T_FALSE
Definition: rb_mjit_min_header-2.7.2.h:4336
rb_gc_force_recycle
void rb_gc_force_recycle(VALUE)
Definition: gc.c:7014
atof
double atof(const char *__nptr)
llabs
long long llabs(long long)
tSize
@ tSize
Definition: rb_mjit_min_header-2.7.2.h:8583
rb_execarg::redirect_fds
VALUE redirect_fds
Definition: internal.h:2037
rb_cString
VALUE rb_cString
Definition: ruby.h:2044
uintptr_t
__uintptr_t uintptr_t
Definition: rb_mjit_min_header-2.7.2.h:1190
getgroups
int getgroups(int __gidsetsize, gid_t __grouplist[])
_reent::__sdidinit
int __sdidinit
Definition: rb_mjit_min_header-2.7.2.h:1067
ldiv_t::quot
long quot
Definition: rb_mjit_min_header-2.7.2.h:2558
rb_eval_string_protect
VALUE rb_eval_string_protect(const char *, int *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1737
RComplex
Definition: internal.h:805
rb_float_mul
VALUE rb_float_mul(VALUE x, VALUE y)
Definition: numeric.c:1072
rb_str_hash_cmp
int rb_str_hash_cmp(VALUE, VALUE)
Definition: string.c:3173
rb_rational_canonicalize
VALUE rb_rational_canonicalize(VALUE x)
Definition: rational.c:2034
rb_gc_enable
VALUE rb_gc_enable(void)
Definition: gc.c:9212
ssize_t
_ssize_t ssize_t
Definition: rb_mjit_min_header-2.7.2.h:1327
RRegexp::src
const VALUE src
Definition: ruby.h:1115
close
int close(int __fildes)
tCall
@ tCall
Definition: rb_mjit_min_header-2.7.2.h:8610
__tzrule_struct::m
int m
Definition: rb_mjit_min_header-2.7.2.h:2009
intptr_t
__intptr_t intptr_t
Definition: rb_mjit_min_header-2.7.2.h:1188
clock
clock_t clock(void)
rb_parser_set_yydebug
VALUE rb_parser_set_yydebug(VALUE, VALUE)
Definition: ripper.c:19311
iseq_catch_table_entry::CATCH_TYPE_NEXT
@ CATCH_TYPE_NEXT
Definition: iseq.h:232
rb_vm_struct::progname
VALUE progname
Definition: vm_core.h:645
rb_str_vcatf
VALUE VALUE rb_str_vcatf(VALUE, const char *, va_list)
Definition: sprintf.c:1210
rb_big_lshift
VALUE rb_big_lshift(VALUE, VALUE)
Definition: bignum.c:6621
pthread_mutexattr_settype
int pthread_mutexattr_settype(pthread_mutexattr_t *, int)
rb_io_ungetbyte
VALUE rb_io_ungetbyte(VALUE, VALUE)
Definition: io.c:4276
sigaction::sa_sigaction
void(* sa_sigaction)(int, siginfo_t *, void *)
Definition: rb_mjit_min_header-2.7.2.h:2235
sprintf
#define sprintf(str,...)
Definition: rb_mjit_min_header-2.7.2.h:1917
rb_vm_struct::living_threads
struct list_head living_threads
Definition: vm_core.h:595
CALL_CACHE
struct rb_call_cache * CALL_CACHE
Definition: rb_mjit_min_header-2.7.2.h:10014
idException
@ idException
Definition: rb_mjit_min_header-2.7.2.h:8693
readlinkat
ssize_t readlinkat(int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __buflen)
timingsafe_memcmp
int timingsafe_memcmp(const void *, const void *, size_t)
rb_iseq_constant_body::ISEQ_TYPE_ENSURE
@ ISEQ_TYPE_ENSURE
Definition: vm_core.h:318
rb_gc_location
VALUE rb_gc_location(VALUE)
Definition: gc.c:8114
RString::capa
long capa
Definition: ruby.h:995
mjit_cont_free
void mjit_cont_free(struct mjit_cont *cont)
rb_mark_hash
void rb_mark_hash(struct st_table *)
Definition: gc.c:4865
_mkdtemp_r
char * _mkdtemp_r(struct _reent *, char *)
rb_iseq_constant_body::post_num
int post_num
Definition: vm_core.h:371
NODE_UNDEF
@ NODE_UNDEF
Definition: rb_mjit_min_header-2.7.2.h:8126
coshl
long double coshl(long double)
ruby_debug_print_value
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v)
Definition: debug.c:96
RB_DEBUG_COUNTER_ccf_opt_call
@ RB_DEBUG_COUNTER_ccf_opt_call
Definition: rb_mjit_min_header-2.7.2.h:11525
rb_method_entry_arity
int rb_method_entry_arity(const rb_method_entry_t *me)
Definition: proc.c:2555
rb_obj_init_copy
VALUE rb_obj_init_copy(VALUE, VALUE)
Default implementation of #initialize_copy.
Definition: object.c:500
rb_const_warn_if_deprecated
MJIT_FUNC_EXPORTED void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id)
Definition: variable.c:2307
rb_stderr_tty_p
int rb_stderr_tty_p(void)
Definition: io.c:7958
YARVINSN_trace_opt_aref_with
@ YARVINSN_trace_opt_aref_with
Definition: rb_mjit_min_header-2.7.2.h:12127
VM_CALL_ARGS_SPLAT_bit
@ VM_CALL_ARGS_SPLAT_bit
Definition: rb_mjit_min_header-2.7.2.h:9973
rb_str2big_gmp
VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck)
rb_parser_set_context
VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int)
Definition: ripper.c:19216
rb_funcall
#define rb_funcall(recv, mid, argc,...)
Definition: rb_mjit_min_header-2.7.2.h:6581
rb_cref_struct::refinements
VALUE refinements
Definition: method.h:43
u_char
unsigned char u_char
Definition: rb_mjit_min_header-2.7.2.h:1285
ruby_glob_func
int ruby_glob_func(const char *, VALUE, void *)
Definition: rb_mjit_min_header-2.7.2.h:5081
_putchar_r
int _putchar_r(struct _reent *, int)
rb_mutex_owned_p
VALUE rb_mutex_owned_p(VALUE self)
Definition: thread_sync.c:345
strptime_l
char * strptime_l(const char *__restrict, const char *__restrict, struct tm *__restrict, locale_t)
rb_proc_alloc
VALUE rb_proc_alloc(VALUE klass)
Definition: proc.c:145
rb_refinement_module_get_refined_class
VALUE rb_refinement_module_get_refined_class(VALUE module)
Definition: eval.c:1481
asin
double asin(double)
pthread_kill
int pthread_kill(pthread_t, int)
YARVINSN_newarray
@ YARVINSN_newarray
Definition: rb_mjit_min_header-2.7.2.h:11964
strupr
char * strupr(char *)
rb_execarg::argv_str
VALUE argv_str
Definition: internal.h:2033
YARVINSN_opt_regexpmatch2
@ YARVINSN_opt_regexpmatch2
Definition: rb_mjit_min_header-2.7.2.h:12030
rb_method_visibility_t
rb_method_visibility_t
Definition: rb_mjit_min_header-2.7.2.h:8727
BUS_OBJERR
#define BUS_OBJERR
Definition: rb_mjit_min_header-2.7.2.h:2213
rb_big_minus
VALUE rb_big_minus(VALUE, VALUE)
Definition: bignum.c:5853
RB_DEBUG_COUNTER_obj_hash_empty
@ RB_DEBUG_COUNTER_obj_hash_empty
Definition: rb_mjit_min_header-2.7.2.h:11596
VM_SPECIAL_OBJECT_CBASE
@ VM_SPECIAL_OBJECT_CBASE
Definition: rb_mjit_min_header-2.7.2.h:10001
rb_gc_writebarrier_remember
void rb_gc_writebarrier_remember(VALUE obj)
Definition: gc.c:6878
rb_clear_coverages
void rb_clear_coverages(void)
Definition: thread.c:4468
tcgetpgrp
pid_t tcgetpgrp(int __fildes)
RB_DEBUG_COUNTER_gc_isptr_trial
@ RB_DEBUG_COUNTER_gc_isptr_trial
Definition: rb_mjit_min_header-2.7.2.h:11571
rb_thread_reset_timer_thread
void rb_thread_reset_timer_thread(void)
Definition: thread.c:4425
_vsiprintf_r
int char char int int int int int int int int int int int int _vsiprintf_r(struct _reent *, char *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
DEFINED_IVAR
@ DEFINED_IVAR
Definition: rb_mjit_min_header-2.7.2.h:10850
pthread_condattr_setclock
int pthread_condattr_setclock(pthread_condattr_t *, clockid_t)
ar_hint_t
unsigned char ar_hint_t
Definition: rb_mjit_min_header-2.7.2.h:6868
tanl
long double tanl(long double)
RArray::basic
struct RBasic basic
Definition: ruby.h:1049
rb_iseq_line_no
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1761
RUBY_Qtrue
#define RUBY_Qtrue
Definition: rb_mjit_min_header-2.7.2.h:4302
rb_thread_struct::native_thread_data
native_thread_data_t native_thread_data
Definition: vm_core.h:940
rb_ec_backtrace_object
VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec)
Definition: vm_backtrace.c:557
rb_resolve_refined_method_callable
MJIT_FUNC_EXPORTED const rb_callable_method_entry_t * rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me)
Definition: vm_method.c:979
rb_gvar_is_traced
_Bool rb_gvar_is_traced(const struct rb_global_entry *)
Definition: variable.c:714
rb_objspace_internal_object_p
int rb_objspace_internal_object_p(VALUE obj)
Definition: gc.c:3097
rb_fix_plus
VALUE rb_fix_plus(VALUE x, VALUE y)
Definition: numeric.c:3604
rb_compile_option_struct::debug_level
int debug_level
Definition: iseq.h:217
rb_math_exp
VALUE rb_math_exp(VALUE)
YARVINSN_trace_definesmethod
@ YARVINSN_trace_definesmethod
Definition: rb_mjit_min_header-2.7.2.h:12090
rb_binding_t
Definition: vm_core.h:1068
tPRESERVED_ID_BEGIN
@ tPRESERVED_ID_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8547
rb_obj_respond_to
int rb_obj_respond_to(VALUE, ID, int)
Definition: vm_method.c:2180
vasnprintf
int int int int int int int int char char int int int int int int int int int char char * vasnprintf(char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
_Bigint::_x
__ULong _x[1]
Definition: rb_mjit_min_header-2.7.2.h:944
lgamma_r
double lgamma_r(double, int *)
Definition: lgamma_r.c:63
rb_kwarg_call_data::cc
struct rb_call_cache cc
Definition: vm_core.h:258
rb_ary_store
void rb_ary_store(VALUE, long, VALUE)
Definition: array.c:1079
on_exit
int on_exit(void(*__func)(int, void *), void *__arg)
id_core_hash_merge_ptr
@ id_core_hash_merge_ptr
Definition: rb_mjit_min_header-2.7.2.h:8562
Init_ext
void Init_ext(void)
Definition: dmyext.c:2
vm_special_object_type
vm_special_object_type
Definition: vm_core.h:1114
rb_execution_context_struct::interrupt_mask
rb_atomic_t interrupt_mask
Definition: vm_core.h:854
rb_iseq_coverage
VALUE rb_iseq_coverage(const rb_iseq_t *iseq)
Definition: iseq.c:1086
rb_vm_defineclass_type_t
rb_vm_defineclass_type_t
Definition: rb_mjit_min_header-2.7.2.h:9899
gmtime_r
struct tm * gmtime_r(const time_t *__restrict, struct tm *__restrict)
Definition: win32.c:7838
__mcontext::gs
__uint32_t gs
Definition: rb_mjit_min_header-2.7.2.h:2065
pthread_cond_t
struct __pthread_cond_t * pthread_cond_t
rb_iseq_constant_body::post_start
int post_start
Definition: vm_core.h:370
rb_method_entry_struct::called_id
ID called_id
Definition: method.h:55
st_hash_func
st_index_t st_hash_func(st_data_t)
Definition: rb_mjit_min_header-2.7.2.h:5365
rb_iseq_eval
int const void const char VALUE rb_iseq_eval(const rb_iseq_t *iseq)
Definition: vm.c:2163
memmove
#define memmove(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2854
fabs
double fabs(double)
__suseconds_t
long __suseconds_t
Definition: rb_mjit_min_header-2.7.2.h:908
SEGV_ACCERR
#define SEGV_ACCERR
Definition: rb_mjit_min_header-2.7.2.h:2210
rb_insns_name_array
VALUE rb_insns_name_array(void)
Definition: compile.c:8768
pthread_attr_destroy
int pthread_attr_destroy(pthread_attr_t *)
rb_ast_dispose
void rb_ast_dispose(rb_ast_t *)
Definition: node.c:1387
RHash::word
VALUE word
Definition: internal.h:896
__key_t
long long __key_t
Definition: rb_mjit_min_header-2.7.2.h:868
local_size
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int int int local_size
Definition: rb_mjit_min_header-2.7.2.h:14524
pthread_mutex_lock
int pthread_mutex_lock(pthread_mutex_t *)
execl
int execl(const char *__path, const char *,...)
rb_captured_block::code
union rb_captured_block::@11 code
rb_num2dbl
double rb_num2dbl(VALUE)
Converts a Numeric object to double.
Definition: object.c:3616
LAST_JIT_ISEQ_FUNC
@ LAST_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.2.h:11690
ruby_debug_counter_reset
void ruby_debug_counter_reset(void)
Definition: debug_counter.c:126
vm_offset_t
unsigned long vm_offset_t
Definition: rb_mjit_min_header-2.7.2.h:1441
flock::l_type
short l_type
Definition: rb_mjit_min_header-2.7.2.h:1433
__snprintf_chk
int int int __snprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
ruby_error_stream_closed
@ ruby_error_stream_closed
Definition: rb_mjit_min_header-2.7.2.h:9598
YARVINSN_trace_adjuststack
@ YARVINSN_trace_adjuststack
Definition: rb_mjit_min_header-2.7.2.h:12083
rb_fd_clr
void rb_fd_clr(int, rb_fdset_t *)
VM_METHOD_TYPE_CFUNC
@ VM_METHOD_TYPE_CFUNC
Definition: rb_mjit_min_header-2.7.2.h:8793
SI_USER
#define SI_USER
Definition: rb_mjit_min_header-2.7.2.h:2187
rb_threadptr_unlock_all_locking_mutexes
void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th)
Definition: thread.c:542
idNUMPARAM_1
@ idNUMPARAM_1
Definition: rb_mjit_min_header-2.7.2.h:8705
rb_cref_struct::flags
VALUE flags
Definition: method.h:42
NODE_ERRINFO
@ NODE_ERRINFO
Definition: rb_mjit_min_header-2.7.2.h:8140
lgammaf_r
float lgammaf_r(float, int *)
rb_vm_struct::defined_module_hash
st_table * defined_module_hash
Definition: vm_core.h:649
VM_CALL_VCALL_bit
@ VM_CALL_VCALL_bit
Definition: rb_mjit_min_header-2.7.2.h:9976
rb_cStat
VALUE rb_cStat
Definition: file.c:161
rb_obj_classname
const char * rb_obj_classname(VALUE)
Definition: variable.c:289
rb_sys_fail_str
void rb_sys_fail_str(VALUE mesg)
Definition: error.c:2801
vasprintf
int int int int int int int vasprintf(char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_ec_stack_overflow
MJIT_STATIC void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
Definition: vm_insnhelper.c:67
rb_objspace_data_type_name
const char * rb_objspace_data_type_name(VALUE obj)
Definition: gc.c:2432
VM_FRAME_MAGIC_RESCUE
@ VM_FRAME_MAGIC_RESCUE
Definition: rb_mjit_min_header-2.7.2.h:10032
RData::basic
struct RBasic basic
Definition: ruby.h:1140
_Bigint::_maxwds
int _maxwds
Definition: rb_mjit_min_header-2.7.2.h:943
ruby_xfree
void void ruby_xfree(void *)
Definition: gc.c:10170
idGE
@ idGE
Definition: rb_mjit_min_header-2.7.2.h:8531
YARVINSN_trace_opt_or
@ YARVINSN_trace_opt_or
Definition: rb_mjit_min_header-2.7.2.h:12123
pthread_key_delete
int pthread_key_delete(pthread_key_t)
rb_mod_private_constant
VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2982
rb_complex_mul
VALUE rb_complex_mul(VALUE x, VALUE y)
Definition: complex.c:872
rb_gcd
VALUE rb_gcd(VALUE x, VALUE y)
Definition: rational.c:1894
_reent::_mbrtowc_state
_mbstate_t _mbrtowc_state
Definition: rb_mjit_min_header-2.7.2.h:1093
rb_singleton_class
VALUE rb_singleton_class(VALUE)
Returns the singleton class of obj.
Definition: class.c:1725
NODE_BLOCK
@ NODE_BLOCK
Definition: rb_mjit_min_header-2.7.2.h:8045
rb_hash_dup
VALUE rb_hash_dup(VALUE)
Definition: hash.c:1564
rb_method_definition_eq
int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2)
Definition: vm_method.c:1504
rb_obj_info
const char * rb_obj_info(VALUE obj)
Definition: gc.c:11683
rb_str_modify_expand
void rb_str_modify_expand(VALUE, long)
Definition: string.c:2122
VM_FRAME_MAGIC_CFUNC
@ VM_FRAME_MAGIC_CFUNC
Definition: rb_mjit_min_header-2.7.2.h:10029
rb_range_new
VALUE rb_range_new(VALUE, VALUE, int)
Definition: range.c:54
RSTRING_EMBED_LEN_MAX
#define RSTRING_EMBED_LEN_MAX
ptrdiff_t
int ptrdiff_t
Definition: rb_mjit_min_header-2.7.2.h:799
rb_str_buf_cat_ascii
VALUE rb_str_buf_cat_ascii(VALUE, const char *)
Definition: string.c:2926
uintmax_t
__uintmax_t uintmax_t
Definition: rb_mjit_min_header-2.7.2.h:1186
pthread_setschedparam
int pthread_setschedparam(pthread_t, int, const struct sched_param *)
rb_code_location_struct::beg_pos
rb_code_position_t beg_pos
Definition: node.h:136
_strtoull_r
unsigned long long _strtoull_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_eKeyError
VALUE rb_eKeyError
Definition: error.c:927
RB_DEBUG_COUNTER_mjit_exec_not_ready
@ RB_DEBUG_COUNTER_mjit_exec_not_ready
Definition: rb_mjit_min_header-2.7.2.h:11653
rb_parser_realloc
void * rb_parser_realloc(struct parser_params *, void *, size_t)
Definition: ripper.c:19380
mktime
time_t mktime(struct tm *_timeptr)
rb_name_error_str
void rb_name_error_str(VALUE str, const char *fmt,...)
Definition: error.c:1530
__fsblkcnt_t
unsigned long __fsblkcnt_t
Definition: rb_mjit_min_header-2.7.2.h:858
hypot
double hypot(double, double)
Definition: hypot.c:6
pthread_mutex_unlock
int pthread_mutex_unlock(pthread_mutex_t *)
RUBY_T_MASK
@ RUBY_T_MASK
Definition: rb_mjit_min_header-2.7.2.h:4345
list_node
Definition: rb_mjit_min_header-2.7.2.h:8936
rb_define_const
void rb_define_const(VALUE, const char *, VALUE)
Definition: variable.c:2891
RB_DEBUG_COUNTER_obj_str_nofree
@ RB_DEBUG_COUNTER_obj_str_nofree
Definition: rb_mjit_min_header-2.7.2.h:11587
RB_DEBUG_COUNTER_mc_miss_spurious
@ RB_DEBUG_COUNTER_mc_miss_spurious
Definition: rb_mjit_min_header-2.7.2.h:11508
CONST_VISIBILITY_MASK
@ CONST_VISIBILITY_MASK
Definition: rb_mjit_min_header-2.7.2.h:12150
YARVINSN_trace_definemethod
@ YARVINSN_trace_definemethod
Definition: rb_mjit_min_header-2.7.2.h:12089
fileno_unlocked
int fileno_unlocked(FILE *)
pthread_yield
int pthread_yield(void)
rb_str_sublen
long rb_str_sublen(VALUE, long)
Definition: string.c:2463
CALL_VCALL
@ CALL_VCALL
Definition: rb_mjit_min_header-2.7.2.h:17143
rb_iseq_struct::obj
VALUE obj
Definition: vm_core.h:466
vscanf
int int int int vscanf(const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
BOP_SIZE
@ BOP_SIZE
Definition: rb_mjit_min_header-2.7.2.h:9615
NODE_LAST
@ NODE_LAST
Definition: rb_mjit_min_header-2.7.2.h:8148
idDot3
@ idDot3
Definition: rb_mjit_min_header-2.7.2.h:8516
rb_obj_call_init
void rb_obj_call_init(VALUE, int, const VALUE *)
Calls #initialize method of obj with the given arguments.
Definition: eval.c:1681
idBackquote
@ idBackquote
Definition: rb_mjit_min_header-2.7.2.h:8538
rb_catch
VALUE rb_catch(const char *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2290
chown
int chown(const char *__path, uid_t __owner, gid_t __group)
memmem
void * memmem(const void *, size_t, const void *, size_t)
VM_FRAME_MAGIC_IFUNC
@ VM_FRAME_MAGIC_IFUNC
Definition: rb_mjit_min_header-2.7.2.h:10030
_mkstemp_r
int _mkstemp_r(struct _reent *, char *)
_mkostemp_r
int _mkostemp_r(struct _reent *, char *, int)
YARVINSN_trace_checktype
@ YARVINSN_trace_checktype
Definition: rb_mjit_min_header-2.7.2.h:12087
MISSING_FCALL
@ MISSING_FCALL
Definition: rb_mjit_min_header-2.7.2.h:7809
sincosf
void sincosf(float, float *, float *)
rb_backref_get
VALUE rb_backref_get(void)
Definition: vm.c:1304
rb_eSystemCallError
VALUE rb_eSystemCallError
Definition: error.c:943
idEach
@ idEach
Definition: rb_mjit_min_header-2.7.2.h:8667
RB_DEBUG_COUNTER_obj_complex
@ RB_DEBUG_COUNTER_obj_complex
Definition: rb_mjit_min_header-2.7.2.h:11625
NODE_FLIP3
@ NODE_FLIP3
Definition: rb_mjit_min_header-2.7.2.h:8135
RUBY_T_TRUE
@ RUBY_T_TRUE
Definition: rb_mjit_min_header-2.7.2.h:4335
YARVINSN_putspecialobject
@ YARVINSN_putspecialobject
Definition: rb_mjit_min_header-2.7.2.h:11957
RTypedData::basic
struct RBasic basic
Definition: ruby.h:1169
__fp
__inline__ int FILE * __fp
Definition: rb_mjit_min_header-2.7.2.h:1923
rb_math_atan2
VALUE rb_math_atan2(VALUE, VALUE)
rb_nmin_run
VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary)
Definition: enum.c:1568
rb_is_local_id
int rb_is_local_id(ID id)
Definition: symbol.c:884
ILL_ILLTRP
#define ILL_ILLTRP
Definition: rb_mjit_min_header-2.7.2.h:2196
iseq_compile_data::insn
struct iseq_compile_data::@1 insn
_remove_r
int _remove_r(struct _reent *, const char *)
YARVINSN_nop
@ YARVINSN_nop
Definition: rb_mjit_min_header-2.7.2.h:11938
NODE_QCALL
@ NODE_QCALL
Definition: rb_mjit_min_header-2.7.2.h:8085
rb_sourcefile
const char * rb_sourcefile(void)
Definition: vm.c:1331
llrintl
long long int llrintl(long double)
ruby_init_setproctitle
void ruby_init_setproctitle(int argc, char *argv[])
_fread_r
size_t _fread_r(struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_thread_list_struct::th
struct rb_thread_struct * th
Definition: vm_core.h:825
fminf
float fminf(float, float)
rb_struct_aset
VALUE rb_struct_aset(VALUE, VALUE, VALUE)
Definition: struct.c:1088
_lcong48_r
void _lcong48_r(struct _reent *, unsigned short[7])
YARVINSN_trace_defined
@ YARVINSN_trace_defined
Definition: rb_mjit_min_header-2.7.2.h:12084
siginfo_t::si_status
int si_status
Definition: rb_mjit_min_header-2.7.2.h:2143
_funopen_r
FILE * _funopen_r(struct _reent *, const void *__cookie, int(*__readfn)(void *__c, char *__buf, size_t __n), int(*__writefn)(void *__c, const char *__buf, size_t __n), _fpos64_t(*__seekfn)(void *__c, _fpos64_t __off, int __whence), int(*__closefn)(void *__c))
__tzrule_struct
Definition: rb_mjit_min_header-2.7.2.h:2007
rb_iseq_constant_body::flags
struct rb_iseq_constant_body::@3::@5 flags
__time_t
long __time_t
Definition: rb_mjit_min_header-2.7.2.h:901
st_table::bins
st_index_t * bins
Definition: st.h:88
idSize
@ idSize
Definition: rb_mjit_min_header-2.7.2.h:8664
setproctitle
void setproctitle(const char *fmt,...)
Definition: setproctitle.c:139
THREAD_KILLED
@ THREAD_KILLED
Definition: rb_mjit_min_header-2.7.2.h:9782
NODE_BEGIN
@ NODE_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8062
rb_vm_struct::defined_strings
VALUE * defined_strings
Definition: vm_core.h:655
rb_mWaitWritable
VALUE rb_mWaitWritable
Definition: ruby.h:2007
rb_st_keys
st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size)
__mcontext::eax
__uint32_t eax
Definition: rb_mjit_min_header-2.7.2.h:2074
YARVINSN_trace_setblockparam
@ YARVINSN_trace_setblockparam
Definition: rb_mjit_min_header-2.7.2.h:12045
rb_reg_backref_number
int rb_reg_backref_number(VALUE match, VALUE backref)
Definition: re.c:1173
tm
Definition: rb_mjit_min_header-2.7.2.h:1964
YARVINSN_trace_putself
@ YARVINSN_trace_putself
Definition: rb_mjit_min_header-2.7.2.h:12058
rb_integer_float_eq
VALUE rb_integer_float_eq(VALUE x, VALUE y)
Definition: bignum.c:5386
rb_ary_shared_with_p
VALUE rb_ary_shared_with_p(VALUE, VALUE)
Definition: array.c:661
BOP_CALL
@ BOP_CALL
Definition: rb_mjit_min_header-2.7.2.h:9628
rb_ary_free
void rb_ary_free(VALUE)
Definition: array.c:786
llroundl
long long int llroundl(long double)
RB_DEBUG_COUNTER_mc_miss_reuse_call
@ RB_DEBUG_COUNTER_mc_miss_reuse_call
Definition: rb_mjit_min_header-2.7.2.h:11509
rb_fstring
VALUE rb_fstring(VALUE)
Definition: string.c:312
__sFILE64::_read
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
Definition: rb_mjit_min_header-2.7.2.h:1017
rb_cTrueClass
VALUE rb_cTrueClass
TrueClass class.
Definition: ruby.h:2049
_wctomb_r
int _wctomb_r(struct _reent *, char *, wchar_t, _mbstate_t *)
sigset_t
__sigset_t sigset_t
Definition: rb_mjit_min_header-2.7.2.h:1256
rb_call_info::flag
unsigned int flag
Definition: internal.h:2396
THREAD_STOPPED
@ THREAD_STOPPED
Definition: rb_mjit_min_header-2.7.2.h:9780
rb_mutex_sleep
VALUE rb_mutex_sleep(VALUE self, VALUE timeout)
Definition: thread_sync.c:465
rb_mod_const_at
void * rb_mod_const_at(VALUE, void *)
Definition: variable.c:2563
rb_method_entry_create
rb_method_entry_t * rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def)
Definition: vm_method.c:397
_fpos_t
long _fpos_t
Definition: rb_mjit_min_header-2.7.2.h:880
clock_getres
int clock_getres(clockid_t clock_id, struct timespec *res)
Definition: win32.c:4652
rb_gc_stat
size_t rb_gc_stat(VALUE)
Definition: gc.c:9177
rb_proc_lambda_p
VALUE rb_proc_lambda_p(VALUE)
Definition: proc.c:275
__mcontext::ctxflags
__uint32_t ctxflags
Definition: rb_mjit_min_header-2.7.2.h:2057
rb_big_mul_toom3
VALUE rb_big_mul_toom3(VALUE x, VALUE y)
Definition: bignum.c:2267
tQuo
@ tQuo
Definition: rb_mjit_min_header-2.7.2.h:8620
signal
_sig_func_ptr signal(int, _sig_func_ptr)
rb_iseq_method_name
VALUE rb_iseq_method_name(const rb_iseq_t *iseq)
Definition: iseq.c:1063
rb_data_type_struct
Definition: ruby.h:1148
RSTRUCT_ENUM_END
@ RSTRUCT_ENUM_END
Definition: rb_mjit_min_header-2.7.2.h:6899
tm::tm_year
int tm_year
Definition: rb_mjit_min_header-2.7.2.h:1970
__sFILE::_cookie
void * _cookie
Definition: rb_mjit_min_header-2.7.2.h:986
rb_objspace_data_type_memsize
size_t rb_objspace_data_type_memsize(VALUE obj)
Definition: gc.c:2419
YARVINSN_trace_once
@ YARVINSN_trace_once
Definition: rb_mjit_min_header-2.7.2.h:12108
rb_ensure_list_t
struct rb_ensure_list rb_ensure_list_t
rb_define_module_id
VALUE rb_define_module_id(ID)
Definition: class.c:766
rb_thread_struct::report_on_exception
unsigned int report_on_exception
Definition: vm_core.h:935
rb_make_metaclass
VALUE rb_make_metaclass(VALUE, VALUE)
Definition: class.c:580
rb_vm_struct
Definition: vm_core.h:576
mbtowc
int mbtowc(wchar_t *__restrict, const char *__restrict, size_t)
__tm::__tm_mday
int __tm_mday
Definition: rb_mjit_min_header-2.7.2.h:951
YARVINSN_opt_aref
@ YARVINSN_opt_aref
Definition: rb_mjit_min_header-2.7.2.h:12021
rb_proc_call_with_block_kw
VALUE rb_proc_call_with_block_kw(VALUE, int argc, const VALUE *argv, VALUE, int)
Definition: proc.c:986
rb_String
VALUE rb_String(VALUE)
Equivalent to Kernel#String in Ruby.
Definition: object.c:3652
YARVINSN_trace_opt_newarray_max
@ YARVINSN_trace_opt_newarray_max
Definition: rb_mjit_min_header-2.7.2.h:12096
rb_global_variable
Definition: variable.c:301
YARVINSN_trace_opt_le
@ YARVINSN_trace_opt_le
Definition: rb_mjit_min_header-2.7.2.h:12118
RB_DEBUG_COUNTER_obj_imemo_cref
@ RB_DEBUG_COUNTER_obj_imemo_cref
Definition: rb_mjit_min_header-2.7.2.h:11635
rb_eException
VALUE rb_eException
Definition: error.c:916
__attribute__
rb_control_frame_t * __attribute__((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *
Definition: rb_mjit_min_header-2.7.2.h:10018
__uint8_t
unsigned char __uint8_t
Definition: rb_mjit_min_header-2.7.2.h:618
rb_execarg::envp_buf
VALUE envp_buf
Definition: internal.h:2039
rb_io_ungetc
VALUE rb_io_ungetc(VALUE, VALUE)
Definition: io.c:4315
rb_big_or
VALUE rb_big_or(VALUE, VALUE)
Definition: bignum.c:6479
mjit_call_p
_Bool mjit_call_p
Definition: mjit_worker.c:180
RUBY_TAG_BREAK
@ RUBY_TAG_BREAK
Definition: rb_mjit_min_header-2.7.2.h:9393
st_data_t
unsigned long st_data_t
Definition: rb_mjit_min_header-2.7.2.h:5359
block_handler_type_ifunc
@ block_handler_type_ifunc
Definition: rb_mjit_min_header-2.7.2.h:9745
rb_method_definition_struct::original_id
ID original_id
Definition: method.h:179
rb_thread_struct::root_jmpbuf
rb_jmpbuf_t root_jmpbuf
Definition: vm_core.h:986
sched_set_thread_affinity
int sched_set_thread_affinity(void *, size_t, const cpu_set_t *)
rb_thread_list_t
struct rb_thread_list_struct rb_thread_list_t
y1
double y1(double)
rb_call_data::ci
struct rb_call_info ci
Definition: internal.h:2401
rb_execarg::close_others_do
unsigned close_others_do
Definition: internal.h:2047
st_table::rebuilds_num
unsigned int rebuilds_num
Definition: st.h:83
MEMO::value
const VALUE value
Definition: internal.h:1286
setsid
pid_t setsid(void)
localtime_r
struct tm * localtime_r(const time_t *__restrict, struct tm *__restrict)
Definition: win32.c:7862
_Bigint
Definition: rb_mjit_min_header-2.7.2.h:941
geteuid
uid_t geteuid(void)
Definition: win32.c:2772
pthread_mutexattr_t
struct __pthread_mutexattr_t * pthread_mutexattr_t
rb_big_uminus
VALUE rb_big_uminus(VALUE x)
Definition: bignum.c:5554
rb_vm_pop_frame
MJIT_STATIC void rb_vm_pop_frame(rb_execution_context_t *ec)
Definition: rb_mjit_min_header-2.7.2.h:12276
exit
void exit(int __status) __attribute__((__noreturn__))
_sigcommune::_si_str
char * _si_str
Definition: rb_mjit_min_header-2.7.2.h:2113
rb_execarg::path_env
VALUE path_env
Definition: internal.h:2067
rb_mark_end_proc
void rb_mark_end_proc(void)
Definition: eval_jump.c:78
rb_obj_private_methods
VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1395
rb_strterm_mark
void rb_strterm_mark(VALUE obj)
Definition: ripper.c:765
idLTLT
@ idLTLT
Definition: rb_mjit_min_header-2.7.2.h:8526
pthread_rwlockattr_t
struct __pthread_rwlockattr_t * pthread_rwlockattr_t
CONST_PRIVATE
@ CONST_PRIVATE
Definition: rb_mjit_min_header-2.7.2.h:12152
__sbuf::_size
int _size
Definition: rb_mjit_min_header-2.7.2.h:975
native_thread_data_struct::cond
struct native_thread_data_struct::@1 cond
rb_thread_struct::running_time_us
uint32_t running_time_us
Definition: vm_core.h:938
RUBY_T_BIGNUM
@ RUBY_T_BIGNUM
Definition: rb_mjit_min_header-2.7.2.h:4328
fdimf
float fdimf(float, float)
rb_provide
void rb_provide(const char *)
Definition: load.c:563
RNode::u2
union RNode::@1 u2
rb_string_value_ptr
char * rb_string_value_ptr(volatile VALUE *)
Definition: string.c:2186
strxfrm
size_t strxfrm(char *__restrict, const char *__restrict, size_t)
RB_DEBUG_COUNTER_obj_hash_4
@ RB_DEBUG_COUNTER_obj_hash_4
Definition: rb_mjit_min_header-2.7.2.h:11600
rb_ary_modify
void rb_ary_modify(VALUE)
Definition: array.c:548
rb_ary_pattern_info::imemo
VALUE imemo
Definition: node.h:458
printf
int int int printf(const char *__restrict,...) __attribute__((__format__(__printf__
size_t
unsigned int size_t
Definition: rb_mjit_min_header-2.7.2.h:663
tInitialize_dup
@ tInitialize_dup
Definition: rb_mjit_min_header-2.7.2.h:8595
_Bigint::_k
int _k
Definition: rb_mjit_min_header-2.7.2.h:943
rb_gvar_undef_getter
rb_gvar_getter_t rb_gvar_undef_getter
Definition: rb_mjit_min_header-2.7.2.h:5095
vsnprintf
#define vsnprintf(str, len, fmt, ap)
Definition: rb_mjit_min_header-2.7.2.h:6586
RB_DEBUG_COUNTER_mjit_cancel_ivar_inline
@ RB_DEBUG_COUNTER_mjit_cancel_ivar_inline
Definition: rb_mjit_min_header-2.7.2.h:11661
rb_xmalloc_mul_add
void * rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10176
strtoumax_l
uintmax_t strtoumax_l(const char *__restrict, char **_restrict, int, locale_t)
rb_define_class_variable
void rb_define_class_variable(VALUE, const char *, VALUE)
Definition: variable.c:3156
rb_tainted_str_new
VALUE rb_tainted_str_new(const char *, long)
Definition: string.c:896
modf
double modf(double, double *)
sigaltstack::ss_size
size_t ss_size
Definition: rb_mjit_min_header-2.7.2.h:2309
rb_Complex
VALUE rb_Complex(VALUE, VALUE)
Definition: complex.c:1545
rb_string_value_cstr
char * rb_string_value_cstr(volatile VALUE *)
Definition: string.c:2291
RB_DEBUG_COUNTER_obj_imemo_memo
@ RB_DEBUG_COUNTER_obj_imemo_memo
Definition: rb_mjit_min_header-2.7.2.h:11639
rb_env_clear
VALUE rb_env_clear(void)
Definition: hash.c:5628
pthread_cond_broadcast
int pthread_cond_broadcast(pthread_cond_t *)
tEach
@ tEach
Definition: rb_mjit_min_header-2.7.2.h:8586
pthread_getaffinity_np
int pthread_getaffinity_np(pthread_t, size_t, cpu_set_t *)
pclose
int pclose(FILE *)
pthread_mutex_timedlock
int pthread_mutex_timedlock(pthread_mutex_t *, const struct timespec *)
rb_method_definition_struct
Definition: method.h:163
st_update_callback_func
int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing)
Definition: rb_mjit_min_header-2.7.2.h:5417
Init_native_thread
void Init_native_thread(rb_thread_t *th)
rb_iseq_struct::aux
union rb_iseq_struct::@6 aux
rb_trace_arg_struct::event
rb_event_flag_t event
Definition: vm_core.h:1875
RNode::node_id
int node_id
Definition: node.h:173
iseq_compile_data::builtin_function_table
const struct rb_builtin_function * builtin_function_table
Definition: iseq.h:119
ruby_xmalloc
void * ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1)))
Definition: gc.c:11978
exp
double exp(double)
vm_svar::flags
VALUE flags
Definition: internal.h:1182
__sFILE::_blksize
int _blksize
Definition: rb_mjit_min_header-2.7.2.h:1000
rb_proc_exec
int rb_proc_exec(const char *)
Definition: process.c:1665
__sFILE::_ur
int _ur
Definition: rb_mjit_min_header-2.7.2.h:996
rb_iseq_constant_body::has_opt
unsigned int has_opt
Definition: vm_core.h:353
RB_DEBUG_COUNTER_obj_imemo_ifunc
@ RB_DEBUG_COUNTER_obj_imemo_ifunc
Definition: rb_mjit_min_header-2.7.2.h:11638
YARVINSN_setspecial
@ YARVINSN_setspecial
Definition: rb_mjit_min_header-2.7.2.h:11945
rb_gvar_marker_t
void rb_gvar_marker_t(VALUE *var)
Definition: rb_mjit_min_header-2.7.2.h:5094
rb_obj_call_init_kw
void rb_obj_call_init_kw(VALUE, int, const VALUE *, int)
Definition: eval.c:1688
nexttoward
double nexttoward(double, long double)
__tzrule_struct::ch
char ch
Definition: rb_mjit_min_header-2.7.2.h:2008
rb_method_attr_t
struct rb_method_attr_struct rb_method_attr_t
ruby_sysinit
void ruby_sysinit(int *argc, char ***argv)
Initializes the process for libruby.
Definition: ruby.c:2459
rb_int_equal
VALUE rb_int_equal(VALUE x, VALUE y)
Definition: numeric.c:4163
rb_eFatal
VALUE rb_eFatal
Definition: error.c:920
rb_vm_struct::global_hooks
rb_hook_list_t global_hooks
Definition: vm_core.h:630
rb_ary_new_from_args
#define rb_ary_new_from_args(n,...)
Definition: rb_mjit_min_header-2.7.2.h:7196
rb_set_class_path_string
void rb_set_class_path_string(VALUE, VALUE, VALUE)
Definition: variable.c:198
rb_iseq_location_struct::node_id
int node_id
Definition: vm_core.h:277
NODE_RETURN
@ NODE_RETURN
Definition: rb_mjit_min_header-2.7.2.h:8092
cookie_write_function_t
ssize_t cookie_write_function_t(void *__cookie, const char *__buf, size_t __n)
Definition: rb_mjit_min_header-2.7.2.h:1817
rb_check_typeddata
void * rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:891
__pthread_rwlock_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1393
idLT
@ idLT
Definition: rb_mjit_min_header-2.7.2.h:8528
Init_vm_eval
void Init_vm_eval(void)
Definition: vm_eval.c:2472
__pthread_t
Definition: rb_mjit_min_header-2.7.2.h:1377
rb_threadptr_interrupt
void rb_threadptr_interrupt(rb_thread_t *th)
Definition: thread.c:510
MISSING_VCALL
@ MISSING_VCALL
Definition: rb_mjit_min_header-2.7.2.h:7810
rb_big_remainder
VALUE rb_big_remainder(VALUE x, VALUE y)
Definition: bignum.c:6119
rb_ary_sort_bang
VALUE rb_ary_sort_bang(VALUE)
Definition: array.c:2777
rb_iter_break_value
void rb_iter_break_value(VALUE val)
Definition: vm.c:1552
rb_parser_compile_string_path
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line)
Definition: ripper.c:12878
ar_table_struct
Definition: hash.c:349
count
int count
Definition: encoding.c:57
RUBY_ID_INSTANCE
@ RUBY_ID_INSTANCE
Definition: rb_mjit_min_header-2.7.2.h:8460
RAISED_EXCEPTION
@ RAISED_EXCEPTION
Definition: rb_mjit_min_header-2.7.2.h:11148
id_core_define_method
@ id_core_define_method
Definition: rb_mjit_min_header-2.7.2.h:8559
VM_THROW_STATE_MASK
@ VM_THROW_STATE_MASK
Definition: rb_mjit_min_header-2.7.2.h:9414
NODE_NIL
@ NODE_NIL
Definition: rb_mjit_min_header-2.7.2.h:8137
list_node::next
struct list_node * next
Definition: rb_mjit_min_header-2.7.2.h:8937
idQuo
@ idQuo
Definition: rb_mjit_min_header-2.7.2.h:8701
rb_time_timespec_interval
struct timespec rb_time_timespec_interval(VALUE num)
Definition: time.c:2706
YARVINSN_trace_setconstant
@ YARVINSN_trace_setconstant
Definition: rb_mjit_min_header-2.7.2.h:12054
mjit_compile
_Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname)
rb_vm_struct::thgroup_default
VALUE thgroup_default
Definition: vm_core.h:596
rb_singleton_class_clone_and_attach
VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
Definition: class.c:376
rb_ast_add_local_table
void rb_ast_add_local_table(rb_ast_t *, ID *buf)
Definition: node.c:1219
rb_callable_method_entry_struct::def
struct rb_method_definition_struct *const def
Definition: method.h:62
iseq_inline_cache_entry::ic_serial
rb_serial_t ic_serial
Definition: vm_core.h:221
rb_big_even_p
VALUE rb_big_even_p(VALUE)
Definition: bignum.c:6840
idProc
@ idProc
Definition: rb_mjit_min_header-2.7.2.h:8668
scalbln
double scalbln(double, long int)
rb_proc_new
VALUE rb_proc_new(rb_block_call_func_t, VALUE)
Definition: proc.c:2991
rb_big_bit_length
VALUE rb_big_bit_length(VALUE big)
Definition: bignum.c:6790
rb_range_beg_len
VALUE rb_range_beg_len(VALUE, long *, long *, long, int)
Definition: range.c:1278
RB_DEBUG_COUNTER_frame_push_cfunc
@ RB_DEBUG_COUNTER_frame_push_cfunc
Definition: rb_mjit_min_header-2.7.2.h:11533
access
int access(const char *__path, int __amode)
rb_float_cmp
int rb_float_cmp(VALUE x, VALUE y)
Definition: numeric.c:1487
rb_time_succ
VALUE rb_time_succ(VALUE)
Definition: time.c:4229
_asprintf_r
int char char int _asprintf_r(struct _reent *, char **__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
idAREF
@ idAREF
Definition: rb_mjit_min_header-2.7.2.h:8541
rb_int_gt
VALUE rb_int_gt(VALUE x, VALUE y)
Definition: numeric.c:4252
tNUMPARAM_9
@ tNUMPARAM_9
Definition: rb_mjit_min_header-2.7.2.h:8632
copysign
double copysign(double, double)
id_core_undef_method
@ id_core_undef_method
Definition: rb_mjit_min_header-2.7.2.h:8558
ruby_vm_t
typedefRUBY_SYMBOL_EXPORT_BEGIN struct rb_vm_struct ruby_vm_t
Definition: vm.h:31
RUBY_T_STRING
@ RUBY_T_STRING
Definition: rb_mjit_min_header-2.7.2.h:4323
flsll
int flsll(long long) __attribute__((__const__))
tFreeze
@ tFreeze
Definition: rb_mjit_min_header-2.7.2.h:8570
rb_get_backtrace
VALUE rb_get_backtrace(VALUE info)
Definition: error.c:1231
rb_fd_set
void rb_fd_set(int, rb_fdset_t *)
rb_str_tmp_frozen_release
void rb_str_tmp_frozen_release(VALUE str, VALUE tmp)
Definition: string.c:1217
idInitialize_copy
@ idInitialize_copy
Definition: rb_mjit_min_header-2.7.2.h:8674
rb_iseq_constant_body::iseq_insn_info::size
unsigned int size
Definition: vm_core.h:405
RB_DEBUG_COUNTER_ccf_iseq_fix
@ RB_DEBUG_COUNTER_ccf_iseq_fix
Definition: rb_mjit_min_header-2.7.2.h:11514
pthread_rwlock_wrlock
int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock)
rb_method_entry_without_refinements
const rb_method_entry_t * rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class)
Definition: vm_method.c:925
_printf_r
int _printf_r(struct _reent *, const char *__restrict,...) __attribute__((__format__(__printf__
rb_str_setter
rb_gvar_setter_t rb_str_setter
Definition: rb_mjit_min_header-2.7.2.h:6102
rb_vm_rewrite_cref
void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
Definition: rb_mjit_min_header-2.7.2.h:12651
rb_genrand_int32
unsigned int rb_genrand_int32(void)
Definition: random.c:115
RB_DEBUG_COUNTER_gc_minor_method
@ RB_DEBUG_COUNTER_gc_minor_method
Definition: rb_mjit_min_header-2.7.2.h:11563
rb_vm_get_ruby_level_next_cfp
rb_control_frame_t * rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
Definition: vm.c:553
getpt
int getpt(void)
rb_rescue2
VALUE rb_rescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE,...)
An equivalent of rescue clause.
Definition: eval.c:962
YARVINSN_getlocal_WC_0
@ YARVINSN_getlocal_WC_0
Definition: rb_mjit_min_header-2.7.2.h:12035
VM_CHECKMATCH_TYPE_WHEN
@ VM_CHECKMATCH_TYPE_WHEN
Definition: rb_mjit_min_header-2.7.2.h:9966
imaxdiv_t::quot
intmax_t quot
Definition: rb_mjit_min_header-2.7.2.h:3198
pthread_setaffinity_np
int pthread_setaffinity_np(pthread_t, size_t, const cpu_set_t *)
NODE_LVAR
@ NODE_LVAR
Definition: rb_mjit_min_header-2.7.2.h:8094
rb_call_cache::aux
union rb_call_cache::@12 aux
rb_scope_visi_struct
Definition: method.h:35
fmaxf
float fmaxf(float, float)
rb_gc_mark
void rb_gc_mark(VALUE)
Definition: gc.c:5215
rb_exec_event_hooks
void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p)
Definition: vm_trace.c:362
rb_thread_current
VALUE rb_thread_current(void)
Definition: thread.c:2676
ISEQ
rb_iseq_t * ISEQ
Definition: rb_mjit_min_header-2.7.2.h:11911
RObject::ivptr
VALUE * ivptr
Definition: ruby.h:927
sched_param::sched_priority
int sched_priority
Definition: rb_mjit_min_header-2.7.2.h:9130
CALL_TYPE_MAX
@ CALL_TYPE_MAX
Definition: rb_mjit_min_header-2.7.2.h:17146
imemo_ifunc
@ imemo_ifunc
Definition: rb_mjit_min_header-2.7.2.h:7033
pthread_cond_wait
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *)
rb_mErrno
VALUE rb_mErrno
Definition: error.c:944
rb_mjit_wait_call
VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body)
rb_suppress_tracing
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
Definition: vm_trace.c:415
v
int VALUE v
Definition: rb_mjit_min_header-2.7.2.h:12300
idAnd
@ idAnd
Definition: rb_mjit_min_header-2.7.2.h:8536
rb_st_values
st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size)
rb_control_frame_struct::ep
const VALUE * ep
Definition: vm_core.h:765
__ssp_real_fread
size_t __ssp_real_fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp) __asm__("_" "fread")
rb_enumeratorize
VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *)
Definition: enumerator.c:516
__mcontext::edi
__uint32_t edi
Definition: rb_mjit_min_header-2.7.2.h:2069
rb_at_exit_list::next
struct rb_at_exit_list * next
Definition: vm_core.h:557
siginfo_t::si_code
int si_code
Definition: rb_mjit_min_header-2.7.2.h:2120
t__send__
@ t__send__
Definition: rb_mjit_min_header-2.7.2.h:8590
miss_argc
const rb_iseq_t const int miss_argc
Definition: rb_mjit_min_header-2.7.2.h:13470
rb_data_type_struct::data
void * data
Definition: ruby.h:1159
write
_ssize_t write(int __fd, const void *__buf, size_t __nbyte)
YARVINSN_setclassvariable
@ YARVINSN_setclassvariable
Definition: rb_mjit_min_header-2.7.2.h:11949
fsetpos
int fsetpos(FILE *, const fpos_t *)
rb_backref_set_string
void rb_backref_set_string(VALUE string, long pos, long len)
Definition: re.c:1340
YARVINSN_trace_nop
@ YARVINSN_trace_nop
Definition: rb_mjit_min_header-2.7.2.h:12041
rb_call_super_kw
VALUE rb_call_super_kw(int, const VALUE *, int)
Definition: vm_eval.c:298
mjit_options
Definition: rb_mjit_min_header-2.7.2.h:11692
rb_check_copyable
void rb_check_copyable(VALUE obj, VALUE orig)
Definition: error.c:3049
reallocarray
void * reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2
rb_ary_subseq
VALUE rb_ary_subseq(VALUE, long, long)
Definition: array.c:1518
llround
long long int llround(double)
rb_iseq_ibf_load_bytes
const rb_iseq_t * rb_iseq_ibf_load_bytes(const char *cstr, size_t)
Definition: compile.c:11617
__tm::__tm_yday
int __tm_yday
Definition: rb_mjit_min_header-2.7.2.h:955
__id_t
__uint32_t __id_t
Definition: rb_mjit_min_header-2.7.2.h:875
rb_vm_struct::ubf_async_safe
volatile int ubf_async_safe
Definition: vm_core.h:600
rb_is_const_name
int rb_is_const_name(VALUE name)
Definition: symbol.c:1050
rb_vm_env_prev_env
const rb_env_t * rb_vm_env_prev_env(const rb_env_t *env)
Definition: vm.c:796
strxfrm_l
size_t strxfrm_l(char *__restrict, const char *__restrict, size_t, locale_t)
__sFILE::_data
struct _reent * _data
Definition: rb_mjit_min_header-2.7.2.h:1002
rb_io_flush_raw
VALUE rb_io_flush_raw(VALUE, int)
Definition: io.c:1864
rb_absint_numwords
size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
Definition: bignum.c:3382
rb_vm_protect_tag::prev
struct rb_vm_protect_tag * prev
Definition: vm_core.h:813
tInspect
@ tInspect
Definition: rb_mjit_min_header-2.7.2.h:8571
_sigcommune::_si_fd
int _si_fd
Definition: rb_mjit_min_header-2.7.2.h:2109
pthread_once_t
Definition: rb_mjit_min_header-2.7.2.h:1387
rb_load_with_builtin_functions
void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table)
Definition: builtin.c:39
rb_const_entry_struct::file
VALUE file
Definition: constant.h:35
rb_vsprintf
VALUE VALUE rb_vsprintf(const char *, va_list)
Definition: sprintf.c:1191
rb_eEncCompatError
VALUE rb_eEncCompatError
Definition: error.c:931
rb_exec_recursive_outer
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5098
YARVINSN_trace_setglobal
@ YARVINSN_trace_setglobal
Definition: rb_mjit_min_header-2.7.2.h:12056
tLambda
@ tLambda
Definition: rb_mjit_min_header-2.7.2.h:8588
rb_last_status_get
VALUE rb_last_status_get(void)
Definition: process.c:518
rb_fiber_current
VALUE rb_fiber_current(void)
Definition: cont.c:1957
intptr_t
int intptr_t
Definition: win32.h:90
cc
const struct rb_call_cache * cc
Definition: rb_mjit_min_header-2.7.2.h:13196
node_buffer_struct
Definition: node.c:1120
rb_keyword_given_p
int rb_keyword_given_p(void)
Definition: eval.c:911
method_optimized_type
method_optimized_type
Definition: method.h:156
rb_builtin_function::argc
const int argc
Definition: builtin.h:9
mjit_free_iseq
void mjit_free_iseq(const rb_iseq_t *iseq)
rb_memerror
void rb_memerror(void)
Definition: gc.c:9598
rb_eEINPROGRESS
VALUE rb_eEINPROGRESS
Definition: error.c:56
sched_yield
int sched_yield(void)
BOP_EQQ
@ BOP_EQQ
Definition: rb_mjit_min_header-2.7.2.h:9608
max_align_t::__attribute__
long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))))
rb_struct_define_under
VALUE rb_struct_define_under(VALUE, const char *,...)
Definition: struct.c:446
caddr_t
char * caddr_t
Definition: rb_mjit_min_header-2.7.2.h:1306
rb_funcall_with_block
VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:1050
rb_str_strlen
long rb_str_strlen(VALUE)
Definition: string.c:1829
RHASH_AR_TABLE_SIZE_SHIFT
#define RHASH_AR_TABLE_SIZE_SHIFT
Definition: rb_mjit_min_header-2.7.2.h:6862
rb_insns_name
const char * rb_insns_name(int i)
Definition: compile.c:8762
rb_method_entry_struct
Definition: method.h:51
rb_iseq_struct::body
struct rb_iseq_constant_body * body
Definition: vm_core.h:460
rb_objspace_marked_object_p
int rb_objspace_marked_object_p(VALUE obj)
Definition: gc.c:5225
rb_subclass_entry
Definition: internal.h:998
_raise_r
int _raise_r(struct _reent *, int)
random
long random(void)
__ssp_real_pread
ssize_t __ssp_real_pread(int __fd, void *__buf, size_t __len, off_t __off) __asm__("_" "pread")
ruby_threadptr_data_type
const rb_data_type_t ruby_threadptr_data_type
Definition: vm.c:2643
RB_DEBUG_COUNTER_obj_file_ptr
@ RB_DEBUG_COUNTER_obj_file_ptr
Definition: rb_mjit_min_header-2.7.2.h:11628
rb_flt_rationalize
VALUE rb_flt_rationalize(VALUE)
Definition: rational.c:2242
tm::tm_yday
int tm_yday
Definition: rb_mjit_min_header-2.7.2.h:1972
lldiv_t::quot
long long int quot
Definition: rb_mjit_min_header-2.7.2.h:2563
rb_big_divmod
VALUE rb_big_divmod(VALUE, VALUE)
Definition: bignum.c:6135
fflush
int fflush(FILE *)
NODE_ARGSCAT
@ NODE_ARGSCAT
Definition: rb_mjit_min_header-2.7.2.h:8118
rb_cBinding
VALUE rb_cBinding
Definition: ruby.h:2015
iseq_catch_table_entry::sp
unsigned int sp
Definition: iseq.h:252
rb_str_dup_frozen
#define rb_str_dup_frozen
Definition: rb_mjit_min_header-2.7.2.h:6066
YARVINSN_trace_setclassvariable
@ YARVINSN_trace_setclassvariable
Definition: rb_mjit_min_header-2.7.2.h:12052
RStruct
Definition: internal.h:942
sys_nerr
int sys_nerr
rb_control_frame_struct::pc
const VALUE * pc
Definition: vm_core.h:761
rb_class_new_instance
VALUE rb_class_new_instance(int, const VALUE *, VALUE)
Allocates and initializes an instance of klass.
Definition: object.c:1955
idMULT
@ idMULT
Definition: rb_mjit_min_header-2.7.2.h:8523
RB_DEBUG_COUNTER_heap_xfree
@ RB_DEBUG_COUNTER_heap_xfree
Definition: rb_mjit_min_header-2.7.2.h:11646
n_trail
const VALUE int int int n_trail
Definition: rb_mjit_min_header-2.7.2.h:6458
rb_reg_init_str
VALUE rb_reg_init_str(VALUE re, VALUE s, int options)
Definition: re.c:2901
_reent::_unused
struct _reent::@8::@10 _unused
isinf
#define isinf(__x)
Definition: rb_mjit_min_header-2.7.2.h:3686
rb_mod_class_variables
VALUE rb_mod_class_variables(int, const VALUE *, VALUE)
Definition: variable.c:3248
llroundf
long long int llroundf(float)
ldexpl
long double ldexpl(long double, int)
stat::st_gid
gid_t st_gid
Definition: rb_mjit_min_header-2.7.2.h:2397
VM_CALL_OPT_SEND_bit
@ VM_CALL_OPT_SEND_bit
Definition: rb_mjit_min_header-2.7.2.h:9984
defined_type
defined_type
Definition: iseq.h:283
NODE_UNTIL
@ NODE_UNTIL
Definition: rb_mjit_min_header-2.7.2.h:8054
rb_fork_async_signal_safe
pid_t rb_fork_async_signal_safe(int *status, int(*chfunc)(void *, char *, size_t), void *charg, VALUE fds, char *errmsg, size_t errmsg_buflen)
__int_least64_t
long long int __int_least64_t
Definition: rb_mjit_min_header-2.7.2.h:638
tTo_hash
@ tTo_hash
Definition: rb_mjit_min_header-2.7.2.h:8600
rb_gc_mark_maybe
void rb_gc_mark_maybe(VALUE)
Definition: gc.c:5047
iseq_compile_data::catch_table_ary
const VALUE catch_table_ary
Definition: iseq.h:95
rb_reserved_word
const struct kwtable * rb_reserved_word(const char *, unsigned int)
Definition: ripper.c:19200
__uint16_t
short unsigned int __uint16_t
Definition: rb_mjit_min_header-2.7.2.h:621
__ssp_real_readlinkat
ssize_t __ssp_real_readlinkat(int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__("_" "readlinkat")
rb_iseq_constant_body::has_kw
unsigned int has_kw
Definition: vm_core.h:356
RB_DEBUG_COUNTER_MAX
@ RB_DEBUG_COUNTER_MAX
Definition: rb_mjit_min_header-2.7.2.h:11670
_snprintf_r
int int int int int _snprintf_r(struct _reent *, char *__restrict, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
timespec
Definition: missing.h:60
buf
struct rb_call_cache buf
Definition: rb_mjit_min_header-2.7.2.h:13228
NODE_OP_CDECL
@ NODE_OP_CDECL
Definition: rb_mjit_min_header-2.7.2.h:8080
rb_make_internal_id
ID rb_make_internal_id(void)
Definition: symbol.c:810
select
int select(int __n, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, struct timeval *__timeout)
sigevent::sigev_notify
int sigev_notify
Definition: rb_mjit_min_header-2.7.2.h:2095
RBignum::ary
BDIGIT ary[BIGNUM_EMBED_LEN_MAX]
Definition: internal.h:756
_strtold_r
long double _strtold_r(struct _reent *, const char *__restrict, char **__restrict)
rb_str_times
VALUE rb_str_times(VALUE, VALUE)
Definition: string.c:1966
RB_DEBUG_COUNTER_obj_obj_transient
@ RB_DEBUG_COUNTER_obj_obj_transient
Definition: rb_mjit_min_header-2.7.2.h:11582
_freopen_r
FILE * _freopen_r(struct _reent *, const char *__restrict, const char *__restrict, FILE *__restrict)
rb_adjust_argv_kw_splat
VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *)
Definition: vm_eval.c:237
gamma
double gamma(double)
RUBY_T_CLASS
@ RUBY_T_CLASS
Definition: rb_mjit_min_header-2.7.2.h:4320
rb_obj_gc_flags
size_t rb_obj_gc_flags(VALUE, ID[], size_t)
rb_parser_calloc
void * rb_parser_calloc(struct parser_params *, size_t, size_t)
Definition: ripper.c:19370
ldiv_t::rem
long rem
Definition: rb_mjit_min_header-2.7.2.h:2559
rb_sprintf
VALUE rb_sprintf(const char *,...) __attribute__((format(printf
__getreent
struct _reent * __getreent(void)
_reent::_cvtlen
int _cvtlen
Definition: rb_mjit_min_header-2.7.2.h:1073
fill_values_arg::vals
VALUE * vals
Definition: vm_args.c:558
YARVINSN_opt_newarray_min
@ YARVINSN_opt_newarray_min
Definition: rb_mjit_min_header-2.7.2.h:11994
rb_vm_call_cfunc
VALUE rb_vm_call_cfunc(VALUE recv, VALUE(*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename)
Definition: vm.c:2212
suseconds_t
__suseconds_t suseconds_t
Definition: rb_mjit_min_header-2.7.2.h:1233
native_thread_data_struct
Definition: thread_pthread.h:23
cbrtl
long double cbrtl(long double)
succ_index_table
Definition: iseq.c:3420
__src
__inline__ const char * __src
Definition: rb_mjit_min_header-2.7.2.h:2718
idMOD
@ idMOD
Definition: rb_mjit_min_header-2.7.2.h:8525
idDIV
@ idDIV
Definition: rb_mjit_min_header-2.7.2.h:8524
strncat
#define strncat(dst, src, len)
Definition: rb_mjit_min_header-2.7.2.h:2862
__off_t
_off64_t __off_t
Definition: rb_mjit_min_header-2.7.2.h:878
RB_DEBUG_COUNTER_obj_wb_unprotect
@ RB_DEBUG_COUNTER_obj_wb_unprotect
Definition: rb_mjit_min_header-2.7.2.h:11580
__tzinfo_type
struct __tzinfo_struct __tzinfo_type
rb_block::symbol
VALUE symbol
Definition: vm_core.h:754
rb_gcd_normal
VALUE rb_gcd_normal(VALUE self, VALUE other)
Definition: rational.c:344
rb_iseq_constant_body::iseq_size
unsigned int iseq_size
Definition: vm_core.h:324
rb_big2ll
long long rb_big2ll(VALUE)
getdomainname
int getdomainname(char *__name, size_t __len)
rb_ast_newnode
NODE * rb_ast_newnode(rb_ast_t *, enum node_type type)
Definition: node.c:1198
st_table::entries_bound
st_index_t entries_bound
Definition: st.h:92
pthread_getattr_np
int pthread_getattr_np(pthread_t, pthread_attr_t *)
rb_big_ge
VALUE rb_big_ge(VALUE x, VALUE y)
Definition: bignum.c:5495
RBasicRaw
Definition: internal.h:1982
rb_ary_aref
VALUE rb_ary_aref(int, const VALUE *, VALUE)
Definition: array.c:1574
iseq_compile_data::node
struct iseq_compile_data::@0 node
read
_ssize_t read(int __fd, void *__buf, size_t __nbyte)
logb
double logb(double)
rb_mark_tbl_no_pin
void rb_mark_tbl_no_pin(struct st_table *)
Definition: gc.c:5014
rb_exc_fatal
void rb_exc_fatal(VALUE mesg)
Raises a fatal error in the current thread.
Definition: eval.c:684
strerror_r
char * strerror_r(int, char *, size_t)
log2f
float log2f(float)
_vsprintf_r
int char char int int int int int int int int int int int int int int int int _vsprintf_r(struct _reent *, char *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
rb_iseq_new_top
rb_iseq_t * rb_iseq_new_top(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent)
Definition: iseq.c:769
arc4random_buf
void arc4random_buf(void *, size_t)
RB_DEBUG_COUNTER_obj_ary_shared_root_occupied
@ RB_DEBUG_COUNTER_obj_ary_shared_root_occupied
Definition: rb_mjit_min_header-2.7.2.h:11595
rb_gc_latest_gc_info
VALUE rb_gc_latest_gc_info(VALUE)
Definition: gc.c:8819
rb_class_detach_subclasses
void rb_class_detach_subclasses(VALUE)
Definition: class.c:133
RB_DEBUG_COUNTER_obj_ary_embed
@ RB_DEBUG_COUNTER_obj_ary_embed
Definition: rb_mjit_min_header-2.7.2.h:11589
rb_classext_struct::iv_index_tbl
struct st_table * iv_index_tbl
Definition: internal.h:1021
ruby_vsnprintf
int int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap)
Definition: sprintf.c:1004
mjit_init
void mjit_init(const struct mjit_options *opts)
ruby_vm_event_enabled_global_flags
rb_event_flag_t ruby_vm_event_enabled_global_flags
Definition: vm.c:376
sqrtl
long double sqrtl(long double)
args_info::rest
VALUE rest
Definition: vm_args.c:32
rb_data_is_encoding
int rb_data_is_encoding(VALUE obj)
Definition: encoding.c:89
rb_hash_uint
#define rb_hash_uint(h, i)
Definition: rb_mjit_min_header-2.7.2.h:6089
MISSING_PRIVATE
@ MISSING_PRIVATE
Definition: rb_mjit_min_header-2.7.2.h:7807
rb_imemo_tmpbuf_t
struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t
RUBY_FL_DUPPED
@ RUBY_FL_DUPPED
Definition: ruby.h:882
BOP_NOT
@ BOP_NOT
Definition: rb_mjit_min_header-2.7.2.h:9621
rb_atomic_t
int rb_atomic_t
Definition: ruby_atomic.h:124
YARVINSN_trace_opt_aset
@ YARVINSN_trace_opt_aset
Definition: rb_mjit_min_header-2.7.2.h:12125
RClass::class_serial
rb_serial_t class_serial
Definition: internal.h:1054
fmaxl
long double fmaxl(long double, long double)
BOP_LT
@ BOP_LT
Definition: rb_mjit_min_header-2.7.2.h:9609
rb_threadptr_pending_interrupt_enque
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v)
Definition: thread.c:1757
iseq_compile_data::last_line
int last_line
Definition: iseq.h:112
rb_block
Definition: vm_core.h:751
rb_funcallv
#define rb_funcallv(recv, mid, argc, argv)
Definition: rb_mjit_min_header-2.7.2.h:7862
rb_ary_aref1
VALUE rb_ary_aref1(VALUE ary, VALUE i)
Definition: array.c:1595
rb_big_plus
VALUE rb_big_plus(VALUE, VALUE)
Definition: bignum.c:5824
__pthread_rwlockattr_t
Definition: rb_mjit_min_header-2.7.2.h:1394
rb_attr_get
VALUE rb_attr_get(VALUE, ID)
Definition: variable.c:1084
rb_eval_cmd_kw
VALUE rb_eval_cmd_kw(VALUE, VALUE, int)
Definition: vm_eval.c:1801
rb_ary_tmp_new_fill
VALUE rb_ary_tmp_new_fill(long capa)
Definition: array.c:776
nexttowardf
float nexttowardf(float, long double)
rb_vm_cref_replace_with_duplicated_cref
rb_cref_t * rb_vm_cref_replace_with_duplicated_cref(void)
Definition: vm.c:1391
rb_data_object_wrap_warning
#define rb_data_object_wrap_warning(klass, ptr, mark, free)
Definition: rb_mjit_min_header-2.7.2.h:4885
dup2
int dup2(int __fildes, int __fildes2)
Definition: dup2.c:27
parser_params
Definition: ripper.c:270
__tzinfo_struct::__tznorth
int __tznorth
Definition: rb_mjit_min_header-2.7.2.h:2018
rb_unblock_callback::arg
void * arg
Definition: vm_core.h:818
idConst_missing
@ idConst_missing
Definition: rb_mjit_min_header-2.7.2.h:8655
strptime
char * strptime(const char *__restrict, const char *__restrict, struct tm *__restrict)
CALL_PUBLIC
@ CALL_PUBLIC
Definition: rb_mjit_min_header-2.7.2.h:17141
rb_hash_new
VALUE rb_hash_new(void)
Definition: hash.c:1523
rb_define_class_under
VALUE rb_define_class_under(VALUE, const char *, VALUE)
Defines a class under the namespace of outer.
Definition: class.c:698
tanh
double tanh(double)
Definition: math.c:284
NODE_DVAR
@ NODE_DVAR
Definition: rb_mjit_min_header-2.7.2.h:8095
VM_CALL_BLOCKISEQ_bit
@ VM_CALL_BLOCKISEQ_bit
Definition: rb_mjit_min_header-2.7.2.h:9978
rb_sym2str
VALUE rb_sym2str(VALUE)
Definition: symbol.c:784
locale_t
struct __locale_t * locale_t
Definition: rb_mjit_min_header-2.7.2.h:1961
old
VALUE ID VALUE old
Definition: rb_mjit_min_header-2.7.2.h:16113
rb_gc_free_dsymbol
void rb_gc_free_dsymbol(VALUE)
Definition: symbol.c:678
rb_execarg::exception_given
unsigned exception_given
Definition: internal.h:2053
sigismember
int sigismember(const sigset_t *, int)
__ssp_real_fgets
char * __ssp_real_fgets(char *__restrict __buf, int __len, FILE *__fp) __asm__("_" "fgets")
rb_size_mul_or_raise
size_t rb_size_mul_or_raise(size_t, size_t, VALUE)
Definition: gc.c:192
rb_execarg::chdir_given
unsigned chdir_given
Definition: internal.h:2048
rb_thread_struct::interrupt_lock
rb_nativethread_lock_t interrupt_lock
Definition: vm_core.h:956
remquol
long double remquol(long double, long double, int *)
RHash::ary
ar_hint_t ary[RHASH_AR_TABLE_MAX_SIZE]
Definition: internal.h:895
rb_marshal_define_compat
void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE(*dumper)(VALUE), VALUE(*loader)(VALUE, VALUE))
Definition: marshal.c:134
getpass
char * getpass(const char *__prompt)
index
int index
Definition: rb_mjit_min_header-2.7.2.h:11214
_siscanf_r
int int int _siscanf_r(struct _reent *, const char *, const char *,...) __attribute__((__format__(__scanf__
rb_args_info::block_arg
ID block_arg
Definition: node.h:442
rb_int2str
VALUE rb_int2str(VALUE num, int base)
Definition: numeric.c:3562
OFFSET
long OFFSET
Definition: rb_mjit_min_header-2.7.2.h:11908
getsubopt
int getsubopt(char **, char *const *, char **)
stat::st_blksize
blksize_t st_blksize
Definition: rb_mjit_min_header-2.7.2.h:2403
rb_iseq_constant_body::ci_kw_size
unsigned int ci_kw_size
Definition: vm_core.h:438
scalbnl
long double scalbnl(long double, int)
rb_block::as
union rb_block::@12 as
YARVINSN_trace_setlocal_WC_1
@ YARVINSN_trace_setlocal_WC_1
Definition: rb_mjit_min_header-2.7.2.h:12141
rb_iseq_constant_body::required_num
int required_num
Definition: vm_core.h:391
rb_cStruct
VALUE rb_cStruct
Definition: ruby.h:2045
vsniprintf
int int int int int int int int char char int int int int int int int int int char char int int int int int int int int vsniprintf(char *, size_t, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_file_expand_path_fast
VALUE rb_file_expand_path_fast(VALUE, VALUE)
Definition: file.c:4025
rb_safe_level
int rb_safe_level(void)
Definition: safe.c:31
size
unsigned int size
rb_num_coerce_bin
VALUE rb_num_coerce_bin(VALUE, VALUE, ID)
Definition: numeric.c:446
_reent::_new
union _reent::@8 _new
_reent::__cleanup
void(* __cleanup)(struct _reent *)
Definition: rb_mjit_min_header-2.7.2.h:1068
if
if((__builtin_expect(!!(!me), 0)))
Definition: rb_mjit_min_header-2.7.2.h:13197
id__send__
@ id__send__
Definition: rb_mjit_min_header-2.7.2.h:8671
rb_file_absolute_path
VALUE rb_file_absolute_path(VALUE, VALUE)
Definition: file.c:4072
YARVINSN_opt_getinlinecache
@ YARVINSN_opt_getinlinecache
Definition: rb_mjit_min_header-2.7.2.h:12003
ruby_digitmap
const char ruby_digitmap[]
Definition: bignum.c:38
rb_mod_include_p
VALUE rb_mod_include_p(VALUE, VALUE)
Definition: class.c:1067
_fclose_r
int char char int int int int _fclose_r(struct _reent *, FILE *)
rb_ary_sort
VALUE rb_ary_sort(VALUE)
Definition: array.c:2866
sched_rr_get_interval
int sched_rr_get_interval(pid_t __pid, struct timespec *__interval)
YARVINSN_opt_plus
@ YARVINSN_opt_plus
Definition: rb_mjit_min_header-2.7.2.h:12007
_iscanf_r
int int _iscanf_r(struct _reent *, const char *,...) __attribute__((__format__(__scanf__
__blksize_t
__int32_t __blksize_t
Definition: rb_mjit_min_header-2.7.2.h:854
malloc
void * malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1)))
RB_DEBUG_COUNTER_ccf_iseq_setup
@ RB_DEBUG_COUNTER_ccf_iseq_setup
Definition: rb_mjit_min_header-2.7.2.h:11511
rb_thread_struct::pending_interrupt_queue
VALUE pending_interrupt_queue
Definition: vm_core.h:952
rb_float_uminus
VALUE rb_float_uminus(VALUE num)
Definition: numeric.c:1011
rb_cref_t
struct rb_cref_struct rb_cref_t
rb_gv_get
VALUE rb_gv_get(const char *)
Definition: variable.c:680
rb_sym_intern_ascii
VALUE rb_sym_intern_ascii(const char *ptr, long len)
Definition: symbol.c:1032
RB_DEBUG_COUNTER_gc_minor_malloc
@ RB_DEBUG_COUNTER_gc_minor_malloc
Definition: rb_mjit_min_header-2.7.2.h:11562
rb_uint2inum
VALUE rb_uint2inum(uintptr_t)
Definition: bignum.c:3201
rb_str_comparable
int rb_str_comparable(VALUE, VALUE)
Definition: string.c:3203
rb_yield
VALUE rb_yield(VALUE)
Definition: vm_eval.c:1237
rb_block_call_kw
VALUE rb_block_call_kw(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE, int)
Definition: vm_eval.c:1484
rb_ary_includes
VALUE rb_ary_includes(VALUE, VALUE)
Definition: array.c:4340
tTOKEN_INSTANCE_BEGIN
@ tTOKEN_INSTANCE_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8634
rb_random_real
double rb_random_real(VALUE rnd)
Definition: random.c:870
rb_str_offset
long rb_str_offset(VALUE, long)
Definition: string.c:2416
YARVINSN_checktype
@ YARVINSN_checktype
Definition: rb_mjit_min_header-2.7.2.h:11984
RB_DEBUG_COUNTER_frame_push_method
@ RB_DEBUG_COUNTER_frame_push_method
Definition: rb_mjit_min_header-2.7.2.h:11529
iseq_compile_data::ci_index
unsigned int ci_index
Definition: iseq.h:115
rb_vm_cbase
VALUE rb_vm_cbase(void)
Definition: vm.c:1425
RB_DEBUG_COUNTER_obj_newobj
@ RB_DEBUG_COUNTER_obj_newobj
Definition: rb_mjit_min_header-2.7.2.h:11575
rb_iseq_constant_body::num
int num
Definition: vm_core.h:390
rb_env_path_tainted
int rb_env_path_tainted(void)
Definition: hash.c:4904
asprintf
int int int int int int asprintf(char **__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
NOT_COMPILED_JIT_ISEQ_FUNC
@ NOT_COMPILED_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.2.h:11689
rb_str_new_cstr
#define rb_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.2.h:6113
RB_DEBUG_COUNTER_artable_hint_notfound
@ RB_DEBUG_COUNTER_artable_hint_notfound
Definition: rb_mjit_min_header-2.7.2.h:11643
RUBY_ID_ATTRSET
@ RUBY_ID_ATTRSET
Definition: rb_mjit_min_header-2.7.2.h:8462
fmin
double fmin(double, double)
NODE_CLASS
@ NODE_CLASS
Definition: rb_mjit_min_header-2.7.2.h:8127
rb_iseq_constant_body::catch_except_p
char catch_except_p
Definition: vm_core.h:441
_glue::_iobs
__FILE * _iobs
Definition: rb_mjit_min_header-2.7.2.h:1042
RB_DEBUG_COUNTER_gc_isptr_range
@ RB_DEBUG_COUNTER_gc_isptr_range
Definition: rb_mjit_min_header-2.7.2.h:11572
rb_cstr_to_rat
VALUE rb_cstr_to_rat(const char *, int)
Definition: rational.c:2541
rb_method_cfunc_struct
Definition: method.h:131
rb_deprecate_constant
void rb_deprecate_constant(VALUE mod, const char *name)
Definition: variable.c:2958
uint16_t
__uint16_t uint16_t
Definition: rb_mjit_min_header-2.7.2.h:1171
rb_st_values_check
st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never)
rb_iseq_ibf_load
const rb_iseq_t * rb_iseq_ibf_load(VALUE str)
Definition: compile.c:11603
rb_obj_setup
VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type)
Fills common (RBasic) fields in obj.
Definition: object.c:112
YARVINSN_defineclass
@ YARVINSN_defineclass
Definition: rb_mjit_min_header-2.7.2.h:11985
RUBY_T_MOVED
@ RUBY_T_MOVED
Definition: rb_mjit_min_header-2.7.2.h:4344
rb_big_mul_balance
VALUE rb_big_mul_balance(VALUE x, VALUE y)
Definition: bignum.c:1689
rb_int_succ
VALUE rb_int_succ(VALUE num)
Definition: numeric.c:3321
rb_lastline_set
void rb_lastline_set(VALUE)
Definition: vm.c:1322
rb_call_info
Definition: internal.h:2393
exp2
double exp2(double)
CALL_DATA
struct rb_call_data * CALL_DATA
Definition: rb_mjit_min_header-2.7.2.h:10015
setdtablesize
int setdtablesize(int)
rb_ensure
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
Definition: eval.c:1115
_sig_func_ptr
void(* _sig_func_ptr)(int)
Definition: rb_mjit_min_header-2.7.2.h:2229
__uint32_t
unsigned int __uint32_t
Definition: rb_mjit_min_header-2.7.2.h:624
rb_global_vm_lock_struct::timer
const struct rb_thread_struct * timer
Definition: thread_pthread.h:65
CONST_VISIBILITY_MAX
@ CONST_VISIBILITY_MAX
Definition: rb_mjit_min_header-2.7.2.h:12153
RB_DEBUG_COUNTER_obj_hash_ar
@ RB_DEBUG_COUNTER_obj_hash_ar
Definition: rb_mjit_min_header-2.7.2.h:11604
idCmp
@ idCmp
Definition: rb_mjit_min_header-2.7.2.h:8520
fread_unlocked
size_t fread_unlocked(void *__restrict, size_t _size, size_t _n, FILE *__restrict)
YARVINSN_setglobal
@ YARVINSN_setglobal
Definition: rb_mjit_min_header-2.7.2.h:11953
rb_thread_struct::vmlt_node
struct list_node vmlt_node
Definition: vm_core.h:911
rb_str_inspect
VALUE rb_str_inspect(VALUE)
Definition: string.c:5930
RComplex::imag
VALUE imag
Definition: internal.h:808
rb_execarg_get
struct rb_execarg * rb_execarg_get(VALUE execarg_obj)
Definition: process.c:2608
rb_iseq_constant_body::iseq_insn_info::positions
unsigned int * positions
Definition: vm_core.h:404
siprintf
int int int int int int int int char char int int int int int int siprintf(char *, const char *,...) __attribute__((__format__(__printf__
RStruct::heap
struct RStruct::@6::@7 heap
rb_vm_struct::fork_gen
rb_serial_t fork_gen
Definition: vm_core.h:590
DEFINED_IVAR2
@ DEFINED_IVAR2
Definition: rb_mjit_min_header-2.7.2.h:10863
rb_builtin_class_name
const char * rb_builtin_class_name(VALUE x)
Definition: error.c:799
RUBY_T_REGEXP
@ RUBY_T_REGEXP
Definition: rb_mjit_min_header-2.7.2.h:4324
rb_dbl_complex_new_polar_pi
VALUE rb_dbl_complex_new_polar_pi(double abs, double ang)
Definition: complex.c:667
ruby_vm_special_exception_copy
MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE)
Definition: rb_mjit_min_header-2.7.2.h:12187
ruby_float_mod
double ruby_float_mod(double x, double y)
Definition: numeric.c:1207
ruby_xcalloc
void void * ruby_xcalloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
log2
#define log2(x)
Definition: rb_mjit_min_header-2.7.2.h:3731
_strtoimax_r
intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int)
rb_complex_raw
VALUE rb_complex_raw(VALUE, VALUE)
Definition: complex.c:1521
uid_t
__uid_t uid_t
Definition: rb_mjit_min_header-2.7.2.h:1319
vsprintf
#define vsprintf(str, fmt, ap)
Definition: rb_mjit_min_header-2.7.2.h:1918
__clockid_t
unsigned long __clockid_t
Definition: rb_mjit_min_header-2.7.2.h:903
RB_DEBUG_COUNTER_obj_struct_embed
@ RB_DEBUG_COUNTER_obj_struct_embed
Definition: rb_mjit_min_header-2.7.2.h:11608
RFile::basic
struct RBasic basic
Definition: ruby.h:1135
rb_vm_struct::default_params
struct rb_vm_struct::@10 default_params
rb_code_location_struct::end_pos
rb_code_position_t end_pos
Definition: node.h:137
rb_code_location_struct
Definition: node.h:135
RArray::ptr
const VALUE * ptr
Definition: ruby.h:1062
rb_class_instance_methods
VALUE rb_class_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1272
rb_execarg::cmd
struct rb_execarg::@9::@11 cmd
copysignf
float copysignf(float, float)
gen_ivtbl
Definition: variable.h:4
rb_iseq_compile_node
VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
Definition: compile.c:644
rb_require_internal
int rb_require_internal(VALUE fname)
Definition: load.c:1066
rb_cNameErrorMesg
VALUE rb_cNameErrorMesg
Definition: error.c:936
renameat
int int renameat(int, const char *, int, const char *)
rb_define_virtual_variable
void rb_define_virtual_variable(const char *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Definition: variable.c:511
pthread_attr_getscope
int pthread_attr_getscope(const pthread_attr_t *, int *)
rb_memcicmp
int rb_memcicmp(const void *, const void *, long)
Definition: re.c:80
rb_iseq_constant_body::has_block
unsigned int has_block
Definition: vm_core.h:358
clock_gettime
int clock_gettime(clockid_t clock_id, struct timespec *tp)
Definition: win32.c:4612
vm_ifunc_argc
Definition: internal.h:1205
rb_num_to_dbl
double rb_num_to_dbl(VALUE val)
Definition: object.c:3576
_fpstate::_st
struct _uc_fpreg _st[8]
Definition: rb_mjit_min_header-2.7.2.h:2052
VM_FRAME_FLAG_CFRAME_KW
@ VM_FRAME_FLAG_CFRAME_KW
Definition: rb_mjit_min_header-2.7.2.h:10041
rb_ivar_defined
VALUE rb_ivar_defined(VALUE, ID)
Definition: variable.c:1317
rb_execution_context_struct::root_svar
VALUE root_svar
Definition: vm_core.h:866
NODE_UNLESS
@ NODE_UNLESS
Definition: rb_mjit_min_header-2.7.2.h:8047
lldiv_t::rem
long long int rem
Definition: rb_mjit_min_header-2.7.2.h:2564
wchar_t
short unsigned int wchar_t
Definition: rb_mjit_min_header-2.7.2.h:818
rb_imemo_tmpbuf_struct
Definition: internal.h:1231
confstr
size_t confstr(int __name, char *__buf, size_t __len)
tTo_str
@ tTo_str
Definition: rb_mjit_min_header-2.7.2.h:8598
rb_ast_body_struct::root
const NODE * root
Definition: node.h:395
rb_obj_as_string
VALUE rb_obj_as_string(VALUE)
Definition: string.c:1440
RHASH_PROC_DEFAULT
@ RHASH_PROC_DEFAULT
Definition: rb_mjit_min_header-2.7.2.h:6839
rb_int_and
VALUE rb_int_and(VALUE x, VALUE y)
Definition: numeric.c:4467
rb_thread_struct::keeping_mutexes
struct rb_mutex_struct * keeping_mutexes
Definition: vm_core.h:959
RB_IO_WAIT_WRITABLE
#define RB_IO_WAIT_WRITABLE
Definition: rb_mjit_min_header-2.7.2.h:5181
CONST_PUBLIC
@ CONST_PUBLIC
Definition: rb_mjit_min_header-2.7.2.h:12151
rb_free_const_table
void rb_free_const_table(struct rb_id_table *tbl)
Definition: gc.c:2493
rb_obj_remove_instance_variable
VALUE rb_obj_remove_instance_variable(VALUE, VALUE)
Definition: variable.c:1634
sigaltstack
int sigaltstack(const stack_t *__restrict, stack_t *__restrict)
rb_str_new
#define rb_str_new(str, len)
Definition: rb_mjit_min_header-2.7.2.h:6112
tLocals
@ tLocals
Definition: rb_mjit_min_header-2.7.2.h:8613
ruby_binding_data_type
const rb_data_type_t ruby_binding_data_type
Definition: proc.c:319
rb_thread_sleep_forever
void rb_thread_sleep_forever(void)
Definition: thread.c:1314
environ
char ** environ
lrand48
long lrand48(void)
rb_iseq_load_iseq
const rb_iseq_t * rb_iseq_load_iseq(VALUE fname)
Definition: iseq.c:847
rb_call_info_with_kwarg::ci
struct rb_call_info ci
Definition: vm_core.h:246
atoll
long long atoll(const char *__nptr)
argv
const VALUE * argv
Definition: rb_mjit_min_header-2.7.2.h:5738
_dtoa_r
char * _dtoa_r(struct _reent *, double, int, int, int *, int *, char **)
rb_struct_init_copy
VALUE rb_struct_init_copy(VALUE copy, VALUE s)
Definition: struct.c:974
rb_captured_block::ifunc
const struct vm_ifunc * ifunc
Definition: vm_core.h:732
YARVINSN_trace_putobject_INT2FIX_1_
@ YARVINSN_trace_putobject_INT2FIX_1_
Definition: rb_mjit_min_header-2.7.2.h:12143
Init_vm_objects
void Init_vm_objects(void)
Definition: vm.c:3324
rb_imemo_tmpbuf_struct::flags
VALUE flags
Definition: internal.h:1232
method_missing_reason
method_missing_reason
Definition: internal.h:2335
RB_WARN_CATEGORY_EXPERIMENTAL
@ RB_WARN_CATEGORY_EXPERIMENTAL
Definition: rb_mjit_min_header-2.7.2.h:7299
_on_exit_args
Definition: rb_mjit_min_header-2.7.2.h:959
rb_obj_id
VALUE rb_obj_id(VALUE)
Definition: gc.c:3773
rb_symname_p
int rb_symname_p(const char *)
Definition: symbol.c:182
rb_thread_atfork_before_exec
void rb_thread_atfork_before_exec(void)
Definition: thread.c:4553
mjit_gc_exit_hook
void mjit_gc_exit_hook(void)
ruby_debug_counter_show_at_exit
void ruby_debug_counter_show_at_exit(int enable)
Definition: debug_counter.c:131
rb_rational_mul
VALUE rb_rational_mul(VALUE self, VALUE other)
Definition: rational.c:874
rb_f_kill
VALUE rb_f_kill(int, const VALUE *)
Definition: signal.c:418
ptsname_r
int ptsname_r(int, char *, size_t)
__pthread_key_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.2.h:1379
rb_nativethread_lock_initialize
void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock)
Definition: thread.c:433
VM_CALL__END
@ VM_CALL__END
Definition: rb_mjit_min_header-2.7.2.h:9985
rb_f_notimplement
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker)
Definition: vm_method.c:120
RHASH_AR_TABLE_SIZE_MASK
#define RHASH_AR_TABLE_SIZE_MASK
Definition: rb_mjit_min_header-2.7.2.h:6861
NODE_CALL
@ NODE_CALL
Definition: rb_mjit_min_header-2.7.2.h:8081
rb_block_call_func_t
rb_block_call_func * rb_block_call_func_t
Definition: rb_mjit_min_header-2.7.2.h:5211
lroundf
long int lroundf(float)
rb_ruby_verbose_ptr
VALUE * rb_ruby_verbose_ptr(void)
Definition: vm.c:3375
_Bigint::_wds
int _wds
Definition: rb_mjit_min_header-2.7.2.h:943
tMin
@ tMin
Definition: rb_mjit_min_header-2.7.2.h:8569
sched_get_priority_max
int sched_get_priority_max(int __policy)
rb_ensure_entry
Definition: vm_core.h:828
rb_str_export
VALUE rb_str_export(VALUE)
Definition: string.c:1123
ruby_thread_has_gvl_p
int ruby_thread_has_gvl_p(void)
Definition: thread.c:1705
sigaction::sa_mask
sigset_t sa_mask
Definition: rb_mjit_min_header-2.7.2.h:2237
rb_mjit_recompile_iseq
void rb_mjit_recompile_iseq(const rb_iseq_t *iseq)
VM_CALL_SUPER_bit
@ VM_CALL_SUPER_bit
Definition: rb_mjit_min_header-2.7.2.h:9982
rb_iseq_constant_body::ambiguous_param0
unsigned int ambiguous_param0
Definition: vm_core.h:360
__sFILE::_read
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
Definition: rb_mjit_min_header-2.7.2.h:987
YARVINSN_throw
@ YARVINSN_throw
Definition: rb_mjit_min_header-2.7.2.h:11998
rb_big_le
VALUE rb_big_le(VALUE x, VALUE y)
Definition: bignum.c:5507
rb_vm_struct::workqueue_lock
rb_nativethread_lock_t workqueue_lock
Definition: vm_core.h:643
mjit_mark
void mjit_mark(void)
realloc
void * realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
rb_iseq_ibf_load_extra_data
VALUE rb_iseq_ibf_load_extra_data(VALUE str)
Definition: compile.c:11631
NODE_KW_ARG
@ NODE_KW_ARG
Definition: rb_mjit_min_header-2.7.2.h:8116
FPE_FLTUND
#define FPE_FLTUND
Definition: rb_mjit_min_header-2.7.2.h:2205
rb_define_class_id_under
VALUE rb_define_class_id_under(VALUE, ID, VALUE)
Defines a class under the namespace of outer.
Definition: class.c:721
rb_ivar_generic_ivtbl
struct st_table * rb_ivar_generic_ivtbl(void)
Definition: variable.c:803
__nlink_t
unsigned short __nlink_t
Definition: rb_mjit_min_header-2.7.2.h:907
acosh
double acosh(double)
Definition: acosh.c:36
rb_str2inum
VALUE rb_str2inum(VALUE, int)
Definition: bignum.c:4544
rb_execution_context_struct::local_storage_recursive_hash_for_trace
VALUE local_storage_recursive_hash_for_trace
Definition: vm_core.h:862
_glue::_niobs
int _niobs
Definition: rb_mjit_min_header-2.7.2.h:1041
rb_imemo_tmpbuf_struct::reserved
VALUE reserved
Definition: internal.h:1233
RB_DEBUG_COUNTER_obj_bignum_ptr
@ RB_DEBUG_COUNTER_obj_bignum_ptr
Definition: rb_mjit_min_header-2.7.2.h:11622
ruby_debug_print_node
NODE * ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
Definition: debug.c:125
tTOKEN_GLOBAL_BEGIN
@ tTOKEN_GLOBAL_BEGIN
Definition: rb_mjit_min_header-2.7.2.h:8636
rb_obj_info_dump_loc
void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func)
Definition: gc.c:11696
pthread_rwlockattr_init
int pthread_rwlockattr_init(pthread_rwlockattr_t *rwlockattr)
rb_execarg::command_name
VALUE command_name
Definition: internal.h:2031
RIMemo::v3
VALUE v3
Definition: internal.h:1129
RB_DEBUG_COUNTER_lvar_set
@ RB_DEBUG_COUNTER_lvar_set
Definition: rb_mjit_min_header-2.7.2.h:11557
rb_set_end_proc
void rb_set_end_proc(void(*)(VALUE), VALUE)
Definition: eval_jump.c:59
idCFUNC
@ idCFUNC
Definition: rb_mjit_min_header-2.7.2.h:8555
YARVINSN_trace_intern
@ YARVINSN_trace_intern
Definition: rb_mjit_min_header-2.7.2.h:12066
tInitialize_copy
@ tInitialize_copy
Definition: rb_mjit_min_header-2.7.2.h:8593
NODE_LASGN
@ NODE_LASGN
Definition: rb_mjit_min_header-2.7.2.h:8069
rb_int_positive_p
int rb_int_positive_p(VALUE num)
Definition: numeric.c:301
vm_size_t
unsigned long vm_size_t
Definition: rb_mjit_min_header-2.7.2.h:1443
modff
float modff(float, float *)
RSTRING_FSTR
#define RSTRING_FSTR
node_buffer_t
typedefRUBY_SYMBOL_EXPORT_BEGIN struct node_buffer_struct node_buffer_t
Definition: node.h:392
drand48
double drand48(void)
tm::tm_gmtoff
long tm_gmtoff
Definition: rb_mjit_min_header-2.7.2.h:1974
rb_parser_dump_tree
VALUE rb_parser_dump_tree(const NODE *node, int comment)
Definition: node.c:1076
__int_least16_t
short int __int_least16_t
Definition: rb_mjit_min_header-2.7.2.h:632
PENDING_INTERRUPT_MASK
@ PENDING_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.2.h:10536
copysignl
long double copysignl(long double, long double)
clock_settime
int clock_settime(clockid_t clock_id, const struct timespec *tp)
pthread_cancel
int pthread_cancel(pthread_t)
rb_define_private_method
void rb_define_private_method(VALUE, const char *, VALUE(*)(), int)
_off_t
long _off_t
Definition: rb_mjit_min_header-2.7.2.h:873
RB_DEBUG_COUNTER_mc_search_super
@ RB_DEBUG_COUNTER_mc_search_super
Definition: rb_mjit_min_header-2.7.2.h:11503
rb_at_exit_list
struct rb_at_exit_list rb_at_exit_list
rb_float_eql
VALUE rb_float_eql(VALUE x, VALUE y)
Definition: numeric.c:1654
vm_ifunc::reserved
VALUE reserved
Definition: internal.h:1217
rb_ary_pattern_info
Definition: node.h:454
sigaddset
int sigaddset(sigset_t *, const int)
rb_eInterrupt
VALUE rb_eInterrupt
Definition: error.c:918
iseq_catch_table
Definition: rb_mjit_min_header-2.7.2.h:10828
pthread_self
pthread_t pthread_self(void)
remove
int int remove(const char *)
vm_throw_data::throw_state
int throw_state
Definition: internal.h:1198
__sFILE64::_write
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
Definition: rb_mjit_min_header-2.7.2.h:1019
rb_cEnumerator
VALUE rb_cEnumerator
Definition: enumerator.c:109
rb_thread_struct::kw_splat
int kw_splat
Definition: vm_core.h:967
rb_iseq_constant_body::ISEQ_TYPE_PLAIN
@ ISEQ_TYPE_PLAIN
Definition: vm_core.h:321
MISSING_PROTECTED
@ MISSING_PROTECTED
Definition: rb_mjit_min_header-2.7.2.h:7808
rb_get_path_check_convert
VALUE rb_get_path_check_convert(VALUE)
Definition: file.c:211
rb_iseq_event_flags
rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1774
RB_DEBUG_COUNTER_frame_C2R
@ RB_DEBUG_COUNTER_frame_C2R
Definition: rb_mjit_min_header-2.7.2.h:11541
rb_iseq_constant_body::call_data
struct rb_call_data * call_data
Definition: vm_core.h:421
rb_file_load_ok
int rb_file_load_ok(const char *)
Definition: file.c:6222
rb_io_t
Definition: io.h:66
cmp_opt_data::opt_methods
unsigned int opt_methods
Definition: internal.h:1323
fgetc
int int int int int int int int int fgetc(FILE *)
_vfscanf_r
int char char int int int int int int int _vfscanf_r(struct _reent *, FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_iseq_constant_body::has_rest
unsigned int has_rest
Definition: vm_core.h:354
siscanf
int int int int int int int int char char int int int int int int int siscanf(const char *, const char *,...) __attribute__((__format__(__scanf__
mkdirat
int mkdirat(int, const char *, mode_t)
ttyname
char * ttyname(int __fildes)
rb_vm_get_insns_address_table
const void ** rb_vm_get_insns_address_table(void)
Definition: vm_exec.c:126
rb_warning_category_from_name
rb_warning_category_t rb_warning_category_from_name(VALUE category)
Definition: error.c:142
calloc
void * calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1
sigprocmask
int sigprocmask(int, const sigset_t *, sigset_t *)
YARVINSN_trace_opt_and
@ YARVINSN_trace_opt_and
Definition: rb_mjit_min_header-2.7.2.h:12122
rb_clear_method_cache_by_class
void rb_clear_method_cache_by_class(VALUE)
Definition: vm_method.c:93
rb_classext_struct
Definition: internal.h:1020
rb_eStandardError
VALUE rb_eStandardError
Definition: error.c:921
floorf
float floorf(float)
RNode::entry
struct rb_global_entry * entry
Definition: node.h:167
strcasecmp
int strcasecmp(const char *, const char *) __attribute__((__pure__))
rb_cRegexp
VALUE rb_cRegexp
Definition: ruby.h:2042
ldiv_t
Definition: rb_mjit_min_header-2.7.2.h:2557
rb_rational_pow
VALUE rb_rational_pow(VALUE self, VALUE other)
Definition: rational.c:1002
idGT
@ idGT
Definition: rb_mjit_min_header-2.7.2.h:8530
rb_get_argv
VALUE rb_get_argv(void)
Definition: io.c:12893
fchown
int fchown(int __fildes, uid_t __owner, gid_t __group)
RB_DEBUG_COUNTER_ivar_set_ic_miss
@ RB_DEBUG_COUNTER_ivar_set_ic_miss
Definition: rb_mjit_min_header-2.7.2.h:11548
rb_keyword_error_new
VALUE rb_keyword_error_new(const char *error, VALUE keys)
Definition: class.c:1819
rb_ary_to_ary
VALUE rb_ary_to_ary(VALUE)
Definition: array.c:1853
rb_fd_term
void rb_fd_term(rb_fdset_t *)
rb_is_local_name
int rb_is_local_name(VALUE name)
Definition: symbol.c:1068
rand
int rand(void)
rb_mRubyVMFrozenCore
VALUE rb_mRubyVMFrozenCore
Definition: vm.c:367
rb_ast_new
rb_ast_t * rb_ast_new(void)
Definition: node.c:1235
getopt
int getopt(int, char *const *, const char *)
rb_check_arity
#define rb_check_arity
Definition: rb_mjit_min_header-2.7.2.h:5700
log1pl
long double log1pl(long double)
hypotf
float hypotf(float, float)
YARVINSN_trace_splatarray
@ YARVINSN_trace_splatarray
Definition: rb_mjit_min_header-2.7.2.h:12073
rb_iseq_code_location
void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column)
Definition: iseq.c:1076
ruby_snprintf
int ruby_snprintf(char *str, size_t n, char const *fmt,...) __attribute__((format(printf
ruby_default_signal
void ruby_default_signal(int)
Definition: signal.c:402
bsearch
void * bsearch(const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
RNode::u1
union RNode::@0 u1
_sniprintf_r
int int int int _sniprintf_r(struct _reent *, char *, size_t, const char *,...) __attribute__((__format__(__printf__
rb_struct_members
VALUE rb_struct_members(VALUE)
Definition: struct.c:72
rb_vm_struct::running
unsigned int running
Definition: vm_core.h:602
__strcat_chk
char * __strcat_chk(char *, const char *, size_t)
rb_thread_struct
Definition: vm_core.h:910
rb_hash_set_ifnone
VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone)
Definition: hash.c:99
tmpfile
FILE * tmpfile(void)
RString::as
union RString::@2 as
pipe2
int pipe2(int __fildes[2], int flags)
rindex
char * rindex(const char *, int) __attribute__((__pure__))
rb_big_mul_normal
VALUE rb_big_mul_normal(VALUE x, VALUE y)
Definition: bignum.c:1561
idTo_sym
@ idTo_sym
Definition: rb_mjit_min_header-2.7.2.h:8680
rb_random_int
VALUE rb_random_int(VALUE rnd, VALUE max)
rb_close_before_exec
void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds)
rb_binding_new
VALUE rb_binding_new(void)
Definition: proc.c:364
rb_init_identtable
st_table * rb_init_identtable(void)
Definition: hash.c:4286
fprintf
int fprintf(FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
execve
int execve(const char *__path, char *const __argv[], char *const __envp[])
RNode::id
ID id
Definition: node.h:153
ferror_unlocked
#define ferror_unlocked(p)
Definition: rb_mjit_min_header-2.7.2.h:1864
DEFINED_NIL
@ DEFINED_NIL
Definition: rb_mjit_min_header-2.7.2.h:10849
rb_execution_context_struct::local_storage_recursive_hash
VALUE local_storage_recursive_hash
Definition: vm_core.h:861
tInitialize
@ tInitialize
Definition: rb_mjit_min_header-2.7.2.h:8592
rb_thread_list_struct::next
struct rb_thread_list_struct * next
Definition: vm_core.h:824
_on_exit_args::_fntypes
__ULong _fntypes
Definition: rb_mjit_min_header-2.7.2.h:962
rb_call_data
Definition: internal.h:2399
rb_intern_str
ID rb_intern_str(VALUE str)
Definition: symbol.c:666
rb_mark_tbl
void rb_mark_tbl(struct st_table *)
Definition: gc.c:5008
opt_pc
rb_control_frame_t struct rb_calling_info const rb_callable_method_entry_t int opt_pc
Definition: rb_mjit_min_header-2.7.2.h:14524
VM_SVAR_FLIPFLOP_START
@ VM_SVAR_FLIPFLOP_START
Definition: rb_mjit_min_header-2.7.2.h:10008
rb_iseq_constant_body::is_size
unsigned int is_size
Definition: vm_core.h:436
rb_rescue
VALUE rb_rescue(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE)
An equivalent of rescue clause.
Definition: eval.c:1047
YARVINSN_reverse
@ YARVINSN_reverse
Definition: rb_mjit_min_header-2.7.2.h:11977
MEMO::state
long state
Definition: internal.h:1285
rb_classext_struct::origin_
const VALUE origin_
Definition: internal.h:1039
NODE_DASGN
@ NODE_DASGN
Definition: rb_mjit_min_header-2.7.2.h:8070
callee
my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2)
Definition: problem1.c:16
RB_DEBUG_COUNTER_frame_C2C
@ RB_DEBUG_COUNTER_frame_C2C
Definition: rb_mjit_min_header-2.7.2.h:11540
rb_mjit_add_iseq_to_process
void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq)
char
#define char
Definition: rb_mjit_min_header-2.7.2.h:2884
rb_proc_t
Definition: vm_core.h:1049
rb_event_flag_t
uint32_t rb_event_flag_t
Definition: rb_mjit_min_header-2.7.2.h:6323
tTo_io
@ tTo_io
Definition: rb_mjit_min_header-2.7.2.h:8602
rb_loaderror_with_path
void rb_loaderror_with_path(VALUE path, const char *fmt,...)
Definition: error.c:2702
rb_eNoMemError
VALUE rb_eNoMemError
Definition: error.c:935
_reent::_nmalloc
unsigned int _nmalloc[30]
Definition: rb_mjit_min_header-2.7.2.h:1103
exp2l
long double exp2l(long double)
rb_obj_methods
VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1361
rb_obj_singleton_methods
VALUE rb_obj_singleton_methods(int, const VALUE *, VALUE)
Definition: class.c:1449
rb_ary_assoc
VALUE rb_ary_assoc(VALUE, VALUE)
Definition: array.c:4156
rb_thread_wakeup_timer_thread
void rb_thread_wakeup_timer_thread(int)
rb_classext_struct::parent_subclasses
rb_subclass_entry_t ** parent_subclasses
Definition: internal.h:1029
st_table
Definition: st.h:79
nanf
float nanf(const char *)
wcstoimax
intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int)
siginfo_t::si_utime
clock_t si_utime
Definition: rb_mjit_min_header-2.7.2.h:2144
rb_complex_minus
VALUE rb_complex_minus(VALUE x, VALUE y)
Definition: complex.c:812
time_t
long time_t
Definition: rb_mjit_min_header-2.7.2.h:1235
RB_DEBUG_COUNTER_mc_miss_by_visi
@ RB_DEBUG_COUNTER_mc_miss_by_visi
Definition: rb_mjit_min_header-2.7.2.h:11507
ruby_initial_gc_stress_ptr
VALUE * ruby_initial_gc_stress_ptr
Definition: gc.c:905
rb_iseq_location_t
struct rb_iseq_location_struct rb_iseq_location_t
strtoull_l
unsigned long long strtoull_l(const char *__restrict, char **__restrict, int, locale_t __loc)
renameat2
int renameat2(int, const char *, int, const char *, unsigned int)
_reent::_wcrtomb_state
_mbstate_t _wcrtomb_state
Definition: rb_mjit_min_header-2.7.2.h:1095
nearbyintf
float nearbyintf(float)
ruby_check_sizeof_voidp
char ruby_check_sizeof_voidp[4==sizeof(void *) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.2.h:4001
RB_DEBUG_COUNTER_lvar_get_dynamic
@ RB_DEBUG_COUNTER_lvar_get_dynamic
Definition: rb_mjit_min_header-2.7.2.h:11556
rb_call_info_with_kwarg
Definition: vm_core.h:245
_strtod_r
double _strtod_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR)
rb_thread_list_struct
Definition: vm_core.h:823
RSTRUCT_EMBED_LEN_MAX
#define RSTRUCT_EMBED_LEN_MAX
Definition: rb_mjit_min_header-2.7.2.h:6891
rb_str_subseq
VALUE rb_str_subseq(VALUE, long, long)
Definition: string.c:2474
rb_args_info::rest_arg
ID rest_arg
Definition: node.h:441
rb_bigzero_p
int rb_bigzero_p(VALUE x)
Definition: bignum.c:2919
YARVINSN_trace_checkmatch
@ YARVINSN_trace_checkmatch
Definition: rb_mjit_min_header-2.7.2.h:12085
NODE_CVASGN
@ NODE_CVASGN
Definition: rb_mjit_min_header-2.7.2.h:8075
timer_getoverrun
int timer_getoverrun(timer_t timerid)
NODE_VALUES
@ NODE_VALUES
Definition: rb_mjit_min_header-2.7.2.h:8090
iseq_catch_table_entry::start
unsigned int start
Definition: iseq.h:249
rb_cArray
VALUE rb_cArray
Definition: array.c:27
timer_gettime
int timer_gettime(timer_t timerid, struct itimerspec *value)
RData
Definition: ruby.h:1139
YARVINSN_trace_getlocal_WC_1
@ YARVINSN_trace_getlocal_WC_1
Definition: rb_mjit_min_header-2.7.2.h:12139
rb_execarg::sh
struct rb_execarg::@9::@10 sh
srandom
void srandom(unsigned)
uint8_t
__uint8_t uint8_t
Definition: rb_mjit_min_header-2.7.2.h:1166
iseq_catch_table_entry::CATCH_TYPE_ENSURE
@ CATCH_TYPE_ENSURE
Definition: iseq.h:228
rb_yield_force_blockarg
VALUE rb_yield_force_blockarg(VALUE values)
Definition: vm_eval.c:1309
RB_DEBUG_COUNTER_obj_hash_1
@ RB_DEBUG_COUNTER_obj_hash_1
Definition: rb_mjit_min_header-2.7.2.h:11597
rb_call_inits
void rb_call_inits(void)
Definition: inits.c:19
rb_ensure_list::next
struct rb_ensure_list * next
Definition: vm_core.h:835
rb_mod_const_missing
VALUE rb_mod_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1739
__timer_t
unsigned long __timer_t
Definition: rb_mjit_min_header-2.7.2.h:905
pthread_rwlock_timedrdlock
int pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *abstime)
rb_any_to_s
VALUE rb_any_to_s(VALUE)
Default implementation of #to_s.
Definition: object.c:527
YARVINSN_opt_invokebuiltin_delegate_leave
@ YARVINSN_opt_invokebuiltin_delegate_leave
Definition: rb_mjit_min_header-2.7.2.h:12034
_wcstoimax_r
intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int)
rb_snum_t
signed long rb_snum_t
Definition: rb_mjit_min_header-2.7.2.h:9389
rb_size_mul_add_or_raise
size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE)
Definition: gc.c:219
rb_fd_zero
void rb_fd_zero(rb_fdset_t *)
rb_cFile
VALUE rb_cFile
Definition: file.c:159
iseq_compile_data_storage::next
struct iseq_compile_data_storage * next
Definition: iseq.h:275
tm::tm_zone
const char * tm_zone
Definition: rb_mjit_min_header-2.7.2.h:1975
idTo_r
@ idTo_r
Definition: rb_mjit_min_header-2.7.2.h:8688
rb_iseq_path
VALUE rb_iseq_path(const rb_iseq_t *iseq)
Definition: iseq.c:1027
pthread_attr_setschedparam
int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *)
rb_eThreadError
VALUE rb_eThreadError
Definition: eval.c:924
tBt_locations
@ tBt_locations
Definition: rb_mjit_min_header-2.7.2.h:8609
rb_obj_reveal
VALUE rb_obj_reveal(VALUE obj, VALUE klass)
Make a hidden object visible again.
Definition: object.c:95
RArray::aux
union RArray::@5::@6::@7 aux
strlen
size_t strlen(const char *)
ruby_vminsn_type
ruby_vminsn_type
Definition: rb_mjit_min_header-2.7.2.h:11937
div_t::quot
int quot
Definition: rb_mjit_min_header-2.7.2.h:2553
idUPlus
@ idUPlus
Definition: rb_mjit_min_header-2.7.2.h:8517
roundf
float roundf(float)
VM_METHOD_TYPE_ZSUPER
@ VM_METHOD_TYPE_ZSUPER
Definition: rb_mjit_min_header-2.7.2.h:8797
rb_vm_check_optimizable_mid
int rb_vm_check_optimizable_mid(VALUE mid)
Definition: vm.c:1581
id_core_raise
@ id_core_raise
Definition: rb_mjit_min_header-2.7.2.h:8564
rb_thread_struct::stat_insn_usage
VALUE stat_insn_usage
Definition: vm_core.h:982
rb_iseq_constant_body::original_iseq
VALUE * original_iseq
Definition: vm_core.h:432
rb_objspace_each_objects
void rb_objspace_each_objects(int(*callback)(void *start, void *end, size_t stride, void *data), void *data)
ruby_special_consts
ruby_special_consts
Definition: ruby.h:436
_signal_r
_sig_func_ptr _signal_r(struct _reent *, int, _sig_func_ptr)
_vfiscanf_r
int char char int int int int int _vfiscanf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
readlink
ssize_t readlink(const char *__restrict __path, char *__restrict __buf, size_t __buflen)
fill_values_arg
Definition: vm_args.c:556
idMax
@ idMax
Definition: rb_mjit_min_header-2.7.2.h:8649
arg_setup_method
@ arg_setup_method
Definition: rb_mjit_min_header-2.7.2.h:13487
mjit_pause
VALUE mjit_pause(_Bool wait_p)
rb_vm_rewind_cfp
void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp)
Definition: vm.c:604
id__attached__
@ id__attached__
Definition: rb_mjit_min_header-2.7.2.h:8672
_rename_r
int _rename_r(struct _reent *, const char *_old, const char *_new)
rb_data_object_alloc
#define rb_data_object_alloc
Definition: gc.c:14
rb_hook_list_struct::running
unsigned int running
Definition: vm_core.h:569
rb_str_locktmp
VALUE rb_str_locktmp(VALUE)
rb_thread_status
rb_thread_status
Definition: vm_core.h:782
rb_const_entry_struct
Definition: constant.h:31
_fiscanf_r
int int _fiscanf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__scanf__
rb_require_string
VALUE rb_require_string(VALUE)
Definition: load.c:1101
rb_mod_public_constant
VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2996
pthread_spin_destroy
int pthread_spin_destroy(pthread_spinlock_t *)
ruby_debug_gc_check_func
void ruby_debug_gc_check_func(void)
FPE_INTOVF
#define FPE_INTOVF
Definition: rb_mjit_min_header-2.7.2.h:2202
MEMO::func
void(* func)(void)
Definition: internal.h:1287
_mbstowcs_r
size_t _mbstowcs_r(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *)
idBt
@ idBt
Definition: rb_mjit_min_header-2.7.2.h:8689
rb_newobj
VALUE rb_newobj(void)
Definition: gc.c:2290
idTo_i
@ idTo_i
Definition: rb_mjit_min_header-2.7.2.h:8686
rb_class_path_cached
VALUE rb_class_path_cached(VALUE)
Definition: variable.c:162
rb_st_update
int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg)
rb_attr_delete
VALUE rb_attr_delete(VALUE, ID)
Definition: variable.c:1126
rb_obj_is_kind_of
VALUE rb_obj_is_kind_of(VALUE, VALUE)
Determines if obj is a kind of c.
Definition: object.c:692
rb_big_size_m
VALUE rb_big_size_m(VALUE big)
Definition: bignum.c:6784
rb_trace_arg_struct::klass
VALUE klass
Definition: vm_core.h:1881
ruby_tag_type
ruby_tag_type
Definition: vm_core.h:184
NODE_YIELD
@ NODE_YIELD
Definition: rb_mjit_min_header-2.7.2.h:8093
YARVINSN_trace_putnil
@ YARVINSN_trace_putnil
Definition: rb_mjit_min_header-2.7.2.h:12057
rb_encdb_declare
void rb_encdb_declare(const char *name)
Definition: encoding.c:350
rb_alloc_tmp_buffer_with_count
void * rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len, size_t count) __attribute__((alloc_size(2
jrand48
long jrand48(unsigned short[3])
RB_DEBUG_COUNTER_ivar_get_base
@ RB_DEBUG_COUNTER_ivar_get_base
Definition: rb_mjit_min_header-2.7.2.h:11553
iseq_compile_data::option
const rb_compile_option_t * option
Definition: iseq.h:117
rb_warning_category_t
rb_warning_category_t
Definition: internal.h:1560
rb_builtin_function::name
const char *const name
Definition: builtin.h:13
block_type_ifunc
@ block_type_ifunc
Definition: rb_mjit_min_header-2.7.2.h:9751
rb_filesystem_str_new_cstr
VALUE rb_filesystem_str_new_cstr(const char *)
Definition: string.c:1117
RUBY_FL_USER19
#define RUBY_FL_USER19
Definition: ruby.h:878
rb_time_num_new
VALUE rb_time_num_new(VALUE, VALUE)
Definition: time.c:2553
getc
int getc(FILE *)
YARVINSN_trace_freezestring
@ YARVINSN_trace_freezestring
Definition: rb_mjit_min_header-2.7.2.h:12064
rb_iseq_base_label
VALUE rb_iseq_base_label(const rb_iseq_t *iseq)
Definition: iseq.c:1051
rb_check_safe_str
void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete
sigaltstack::ss_sp
void * ss_sp
Definition: rb_mjit_min_header-2.7.2.h:2307
rb_iseq_constant_body::flip_count
rb_snum_t flip_count
Definition: vm_core.h:429
iseq_compile_data::start_label
struct iseq_label_data * start_label
Definition: iseq.h:98
rb_vm_struct::loading_table
struct st_table * loading_table
Definition: vm_core.h:622
ruby::backward::cxxanyargs::type
VALUE type(ANYARGS)
ANYARGS-ed function type.
Definition: cxxanyargs.hpp:39
sched_setparam
int sched_setparam(pid_t __pid, const struct sched_param *__param)
rb_const_remove
VALUE rb_const_remove(VALUE, ID)
Definition: variable.c:2494
rb_ary_rotate
VALUE rb_ary_rotate(VALUE, long)
Definition: array.c:2617
RB_DEBUG_COUNTER_ccf_opt_block_call
@ RB_DEBUG_COUNTER_ccf_opt_block_call
Definition: rb_mjit_min_header-2.7.2.h:11526
__sFILE64::_lock
_flock_t _lock
Definition: rb_mjit_min_header-2.7.2.h:1034
rb_vm_struct::waiting_pids
struct list_head waiting_pids
Definition: vm_core.h:592
fgetpos
int fgetpos(FILE *__restrict, fpos_t *__restrict)
__gets_chk
int int int int char * __gets_chk(char *, size_t)
rb_add_refined_method_entry
void rb_add_refined_method_entry(VALUE refined_class, ID mid)
Definition: vm_method.c:491
rb_hash_start
st_index_t rb_hash_start(st_index_t)
Definition: random.c:1434
rb_iv_set
VALUE rb_iv_set(VALUE, const char *, VALUE)
Definition: variable.c:3318
ctime
char * ctime(const time_t *_time)
RB_DEBUG_COUNTER_mc_miss_by_nome
@ RB_DEBUG_COUNTER_mc_miss_by_nome
Definition: rb_mjit_min_header-2.7.2.h:11504
iseq_compile_data::err_info
const VALUE err_info
Definition: iseq.h:94
rb_exc_set_backtrace
VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt)
Definition: error.c:1312
_mktemp_r
char * _mktemp_r(struct _reent *, char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
rb_hash_aref
VALUE rb_hash_aref(VALUE, VALUE)
Definition: hash.c:2037
rb_unblock_callback::func
rb_unblock_function_t * func
Definition: vm_core.h:817
rb_cIO
VALUE rb_cIO
Definition: ruby.h:2030
strcmp
int strcmp(const char *, const char *)
rb_method_iseq
const rb_iseq_t * rb_method_iseq(VALUE body)
Definition: proc.c:2691
u_int
unsigned int u_int
Definition: rb_mjit_min_header-2.7.2.h:1289
rb_thread_struct::pending_interrupt_queue_checked
unsigned int pending_interrupt_queue_checked
Definition: vm_core.h:936
tNUMPARAM_7
@ tNUMPARAM_7
Definition: rb_mjit_min_header-2.7.2.h:8630
RNode
Definition: node.h:149
rb_unexpected_type
void rb_unexpected_type(VALUE x, int t)
Definition: error.c:854
rb_cRandom
VALUE rb_cRandom
Definition: ruby.h:2039
strftime_l
size_t strftime_l(char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t, locale_t _l)
rb_objspace_set_event_hook
void rb_objspace_set_event_hook(const rb_event_flag_t event)
Definition: gc.c:2082
ST_DELETE
@ ST_DELETE
Definition: rb_mjit_min_header-2.7.2.h:5386
rb_iseq_location_struct::base_label
VALUE base_label
Definition: vm_core.h:274
ruby_fl_type
ruby_fl_type
Definition: ruby.h:841
rb_vm_opt_struct_aref
rb_control_frame_t *FUNC_FASTCALL() rb_vm_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
Definition: vm_insnhelper.c:3467
SI_ASYNCIO
#define SI_ASYNCIO
Definition: rb_mjit_min_header-2.7.2.h:2188
rb_str_buf_cat_escaped_char
int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p)
Definition: string.c:5815
RB_DEBUG_COUNTER_mc_inline_miss
@ RB_DEBUG_COUNTER_mc_inline_miss
Definition: rb_mjit_min_header-2.7.2.h:11496
rb_thread_start_timer_thread
void rb_thread_start_timer_thread(void)
Definition: thread.c:4431
rb_iseq_insns_info_decode_positions
unsigned int * rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body)
Definition: iseq.c:613
optional
Definition: gc.c:90
RB_DEBUG_COUNTER_ivar_get_ic_miss_serial
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_serial
Definition: rb_mjit_min_header-2.7.2.h:11544
rb_free_method_entry
void rb_free_method_entry(const rb_method_entry_t *me)
Definition: vm_method.c:174
rb_imemo_new
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
Definition: gc.c:2308
__cpu_mask
unsigned int __cpu_mask
Definition: rb_mjit_min_header-2.7.2.h:1344
rb_mod_sys_fail_str
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
Definition: error.c:2843
__sFILE
Definition: vsnprintf.c:169
_fputs_unlocked_r
int _fputs_unlocked_r(struct _reent *, const char *__restrict, FILE *__restrict)
cookie_io_functions_t::read
cookie_read_function_t * read
Definition: rb_mjit_min_header-2.7.2.h:1824
RUBY_Qnil
#define RUBY_Qnil
Definition: rb_mjit_min_header-2.7.2.h:4303
YARVINSN_trace_invokebuiltin
@ YARVINSN_trace_invokebuiltin
Definition: rb_mjit_min_header-2.7.2.h:12135
rb_global_entry
Definition: internal.h:1350
strpbrk
char * strpbrk(const char *, const char *)
rb_execution_context_struct::stack_end
VALUE * stack_end
Definition: vm_core.h:888
tNUMPARAM_2
@ tNUMPARAM_2
Definition: rb_mjit_min_header-2.7.2.h:8625
rb_eSystemExit
VALUE rb_eSystemExit
Definition: error.c:917
d1
#define d1
TIMER_INTERRUPT_MASK
@ TIMER_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.2.h:10535
expm1l
long double expm1l(long double)
rb_hash_new_with_size
VALUE rb_hash_new_with_size(st_index_t size)
Definition: hash.c:1529
RB_DEBUG_COUNTER_obj_module_ptr
@ RB_DEBUG_COUNTER_obj_module_ptr
Definition: rb_mjit_min_header-2.7.2.h:11621
rb_mutex_new
VALUE rb_mutex_new(void)
Definition: thread_sync.c:165
_srand48_r
void _srand48_r(struct _reent *, long)
rb_lambda_call
VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv, rb_block_call_func_t bl_proc, int min_argc, int max_argc, VALUE data2)
Definition: vm_eval.c:1501
RUBY_FL_SEEN_OBJ_ID
@ RUBY_FL_SEEN_OBJ_ID
Definition: ruby.h:849
iseq
const rb_iseq_t * iseq
Definition: rb_mjit_min_header-2.7.2.h:13469
rb_cloexec_pipe
int rb_cloexec_pipe(int fildes[2])
Definition: io.c:378
chroot
int chroot(const char *__path)
rb_copy_wb_protected_attribute
void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj)
Definition: gc.c:6941
rb_get_alloc_func
rb_alloc_func_t rb_get_alloc_func(VALUE)
Definition: vm_method.c:728
_atexit::_next
struct _atexit * _next
Definition: rb_mjit_min_header-2.7.2.h:966
rb_class_public_instance_methods
VALUE rb_class_public_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1325
__srget_r
int __srget_r(struct _reent *, FILE *)
__intmax_t
long long int __intmax_t
Definition: rb_mjit_min_header-2.7.2.h:641
rb_st_init_strtable_with_size
st_table * rb_st_init_strtable_with_size(st_index_t)
idLength
@ idLength
Definition: rb_mjit_min_header-2.7.2.h:8663
rb_obj_tainted
VALUE rb_obj_tainted(VALUE obj)
call-seq: obj.tainted? -> false
Definition: object.c:985
setpgrp
int setpgrp(void)
rb_obj_clone
VALUE rb_obj_clone(VALUE)
Almost same as Object::clone.
Definition: object.c:410
VM_METHOD_TYPE_REFINED
@ VM_METHOD_TYPE_REFINED
Definition: rb_mjit_min_header-2.7.2.h:8803
_reent::_wctomb_state
_mbstate_t _wctomb_state
Definition: rb_mjit_min_header-2.7.2.h:1088
YARVINSN_trace_setlocal
@ YARVINSN_trace_setlocal
Definition: rb_mjit_min_header-2.7.2.h:12043
_reent::_result_k
int _result_k
Definition: rb_mjit_min_header-2.7.2.h:1070
rb_thread_wait_for
void rb_thread_wait_for(struct timeval)
Definition: thread.c:1347
rb_global_vm_lock_struct::lock
rb_nativethread_lock_t lock
Definition: thread_pthread.h:51
a64l
long a64l(const char *__input)
rb_define_alloc_func
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
vfprintf
int int int int int int vfprintf(FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
rb_iseq_constant_body::stack_max
unsigned int stack_max
Definition: vm_core.h:439
rb_mod_ancestors
VALUE rb_mod_ancestors(VALUE)
Definition: class.c:1099
rb_call_end_proc
void rb_call_end_proc(VALUE data)
Definition: eval_jump.c:11
__ssp_real_explicit_bzero
void __ssp_real_explicit_bzero(void *__buf, size_t __len) __asm__("_" "explicit_bzero")
rb_thread_alloc
VALUE rb_thread_alloc(VALUE klass)
Definition: vm.c:2756
_atexit::_fns
void(* _fns[32])(void)
Definition: rb_mjit_min_header-2.7.2.h:968
idNUMPARAM_5
@ idNUMPARAM_5
Definition: rb_mjit_min_header-2.7.2.h:8709
rb_exec_recursive_paired
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5086
RB_DEBUG_COUNTER_obj_obj_ptr
@ RB_DEBUG_COUNTER_obj_obj_ptr
Definition: rb_mjit_min_header-2.7.2.h:11583
pthread_attr_getinheritsched
int pthread_attr_getinheritsched(const pthread_attr_t *, int *)
euidaccess
int euidaccess(const char *__path, int __mode)
rb_provided
int rb_provided(const char *)
Definition: load.c:513
YARVINSN_trace_getinstancevariable
@ YARVINSN_trace_getinstancevariable
Definition: rb_mjit_min_header-2.7.2.h:12049
vdprintf
int vdprintf(int, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
rb_eFrozenError
VALUE rb_eFrozenError
Definition: error.c:923
rb_thread_stop_timer_thread
void rb_thread_stop_timer_thread(void)
Definition: thread.c:4417
rb_st_delete_safe
int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t)
iseq_insn_info_entry::line_no
int line_no
Definition: iseq.h:221
rb_io_write
VALUE rb_io_write(VALUE, VALUE)
Definition: io.c:1804
fd_set::__fds_bits
__fd_mask __fds_bits[(((64)+((((int) sizeof(__fd_mask) *8)) - 1))/(((int) sizeof(__fd_mask) *8)))]
Definition: rb_mjit_min_header-2.7.2.h:1265
rb_ary_tmp_new_from_values
VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *)
Definition: array.c:748
rb_check_to_float
VALUE rb_check_to_float(VALUE)
Tries to convert an object into Float.
Definition: object.c:3559
__builtin_object_size
__builtin_object_size((cc), 0) !
rb_syserr_fail_str
void rb_syserr_fail_str(int e, VALUE mesg)
Definition: error.c:2789
RMODULE_INCLUDED_INTO_REFINEMENT
#define RMODULE_INCLUDED_INTO_REFINEMENT
RB_DEBUG_COUNTER_obj_match_ge4
@ RB_DEBUG_COUNTER_obj_match_ge4
Definition: rb_mjit_min_header-2.7.2.h:11616
_viprintf_r
int char char int int int int int int int int _viprintf_r(struct _reent *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_math_hypot
VALUE rb_math_hypot(VALUE, VALUE)
rb_vm_struct::waitpid_lock
rb_nativethread_lock_t waitpid_lock
Definition: vm_core.h:591
rb_str2big_poweroftwo
VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
Definition: bignum.c:4274
rb_iseq_constant_body::iseq_type
iseq_type
Definition: vm_core.h:312
tTo_f
@ tTo_f
Definition: rb_mjit_min_header-2.7.2.h:8606
rb_rational_cmp
VALUE rb_rational_cmp(VALUE self, VALUE other)
Definition: rational.c:1097
idNUMPARAM_3
@ idNUMPARAM_3
Definition: rb_mjit_min_header-2.7.2.h:8707
rb_add_method_cfunc
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE(*func)(), int argc, rb_method_visibility_t visi)
RClass
Definition: internal.h:1048
seed48
unsigned short * seed48(unsigned short[3])
mrand48
long mrand48(void)
st_foreach_check_callback_func
int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int)
Definition: rb_mjit_min_header-2.7.2.h:5421
iseq_catch_table_entry::CATCH_TYPE_RETRY
@ CATCH_TYPE_RETRY
Definition: iseq.h:229
rb_iseq_ibf_dump
VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
Definition: compile.c:11379
st_hash_type::hash
st_index_t(* hash)(st_data_t)
Definition: st.h:63
RStruct::ary
const VALUE ary[RSTRUCT_EMBED_LEN_MAX]
Definition: internal.h:949
rb_iseq_constant_body::ISEQ_TYPE_MAIN
@ ISEQ_TYPE_MAIN
Definition: vm_core.h:320
rb_cref_struct::next
struct rb_cref_struct * next
Definition: method.h:45
rb_class_inherited_p
VALUE rb_class_inherited_p(VALUE mod, VALUE arg)
Determines if mod inherits arg.
Definition: object.c:1574
rb_proc_t::is_lambda
unsigned int is_lambda
Definition: vm_core.h:1052
iseq_compile_data::label_no
int label_no
Definition: iseq.h:113
iseq_inline_storage_entry
Definition: vm_core.h:231
rb_add_event_hook
void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data)
Definition: vm_trace.c:157
rb_encdb_alias
int rb_encdb_alias(const char *alias, const char *orig)
Definition: encoding.c:565
rb_check_inheritable
void rb_check_inheritable(VALUE)
Ensures a class can be derived from super.
Definition: class.c:219
rb_io_puts
VALUE rb_io_puts(int, const VALUE *, VALUE)
Definition: io.c:7747
idNUMPARAM_6
@ idNUMPARAM_6
Definition: rb_mjit_min_header-2.7.2.h:8710
rb_class_real
VALUE rb_class_real(VALUE cl)
Looks up the nearest ancestor of cl, skipping singleton classes or module inclusions.
Definition: object.c:202
rb_sym_all_symbols
VALUE rb_sym_all_symbols(void)
Definition: symbol.c:840
RUBY_FL_TAINT
@ RUBY_FL_TAINT
Definition: ruby.h:847
NODE_MATCH
@ NODE_MATCH
Definition: rb_mjit_min_header-2.7.2.h:8102
RB_DEBUG_COUNTER_obj_imemo_tmpbuf
@ RB_DEBUG_COUNTER_obj_imemo_tmpbuf
Definition: rb_mjit_min_header-2.7.2.h:11633
rb_st_init_numtable_with_size
st_table * rb_st_init_numtable_with_size(st_index_t)
name
const char * name
Definition: nkf.c:208
rb_next_class_serial
rb_serial_t rb_next_class_serial(void)
Definition: vm.c:358
idCOLON2
@ idCOLON2
Definition: rb_mjit_min_header-2.7.2.h:8543
NODE_LAMBDA
@ NODE_LAMBDA
Definition: rb_mjit_min_header-2.7.2.h:8145
lockf
int lockf(int __fd, int __cmd, off_t __len)
diprintf
int int int int int int int int char char int diprintf(int, const char *,...) __attribute__((__format__(__printf__
mjit_options::debug
char debug
Definition: rb_mjit_min_header-2.7.2.h:11696
timer_create
int timer_create(clockid_t clock_id, struct sigevent *__restrict evp, timer_t *__restrict timerid)
rb_execution_context_struct::root_lep
const VALUE * root_lep
Definition: vm_core.h:865
rb_execution_context_struct
Definition: vm_core.h:843
YARVINSN_trace_defineclass
@ YARVINSN_trace_defineclass
Definition: rb_mjit_min_header-2.7.2.h:12088
ffsl
int ffsl(long) __attribute__((__const__))
modfl
long double modfl(long double, long double *)
sigwaitinfo
int sigwaitinfo(const sigset_t *, siginfo_t *)
rb_warn_deprecated
void rb_warn_deprecated(const char *fmt, const char *suggest,...) __attribute__((format(printf
RNode::u3
union RNode::@2 u3
RB_DEBUG_COUNTER_frame_push_top
@ RB_DEBUG_COUNTER_frame_push_top
Definition: rb_mjit_min_header-2.7.2.h:11532
int_fast64_t
long long int int_fast64_t
Definition: rb_mjit_min_header-2.7.2.h:2941
n
const char size_t n
Definition: rb_mjit_min_header-2.7.2.h:5452
__sFILE64::_seek64
_fpos64_t(* _seek64)(struct _reent *, void *, _fpos64_t, int)
Definition: rb_mjit_min_header-2.7.2.h:1033
mjit_options::min_calls
unsigned int min_calls
Definition: rb_mjit_min_header-2.7.2.h:11699
rb_equal
VALUE rb_equal(VALUE, VALUE)
Same as Object#===, case equality.
Definition: object.c:124
fopen
FILE * fopen(const char *__restrict _name, const char *__restrict _type)
VM_SPECIAL_OBJECT_VMCORE
@ VM_SPECIAL_OBJECT_VMCORE
Definition: rb_mjit_min_header-2.7.2.h:10000
__restrict
#define __restrict
Definition: rb_mjit_min_header-2.7.2.h:739
rb_math_cosh
VALUE rb_math_cosh(VALUE)
NODE_IN
@ NODE_IN
Definition: rb_mjit_min_header-2.7.2.h:8052
rb_compile_option_struct::operands_unification
unsigned int operands_unification
Definition: iseq.h:211
setusershell
void setusershell(void)