Ruby 2.7.0p0(2019-12-25revision647ee6f091eafcce70ffb75ddf7e121e192ab217)

rb_mjit_min_header-2.7.0.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 8
86 #define SIZEOF_LONG_LONG 8
87 #define SIZEOF___INT64 0
88 #define SIZEOF___INT128 16
89 #define SIZEOF_OFF_T 8
90 #define SIZEOF_VOIDP 8
91 #define SIZEOF_FLOAT 4
92 #define SIZEOF_DOUBLE 8
93 #define SIZEOF_TIME_T 8
94 #define SIZEOF_CLOCK_T 8
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) LONG2NUM(v)
144 #define NUM2OFFT(v) NUM2LONG(v)
145 #define PRI_OFFT_PREFIX PRI_LONG_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 8
195 #define SIZEOF_PTRDIFF_T 8
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
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_INT128_T 1
232 #define int128_t __int128
233 #define SIZEOF_INT128_T SIZEOF___INT128
234 #define HAVE_UINT128_T 1
235 #define uint128_t unsigned __int128
236 #define SIZEOF_UINT128_T SIZEOF___INT128
237 #define HAVE_INTPTR_T 1
238 #define SIZEOF_INTPTR_T 8
239 #define HAVE_UINTPTR_T 1
240 #define SIZEOF_UINTPTR_T 8
241 #define PRI_PTR_PREFIX "l"
242 #define HAVE_SSIZE_T 1
243 #define SIZEOF_SSIZE_T 8
244 #define PRI_64_PREFIX "l"
245 #define GETGROUPS_T gid_t
246 #define RETSIGTYPE void
247 #define HAVE_ALLOCA_H 1
248 #define HAVE_ALLOCA 1
249 #define HAVE_ACOSH 1
250 #define HAVE_CBRT 1
251 #define HAVE_CRYPT 1
252 #define HAVE_DUP2 1
253 #define HAVE_ERF 1
254 #define HAVE_EXPLICIT_BZERO 1
255 #define HAVE_FFS 1
256 #define HAVE_FLOCK 1
257 #define HAVE_HYPOT 1
258 #define HAVE_LGAMMA_R 1
259 #define HAVE_MEMMOVE 1
260 #define HAVE_NAN 1
261 #define HAVE_NEXTAFTER 1
262 #define HAVE_STRCHR 1
263 #define HAVE_STRERROR 1
264 #define HAVE_STRLCAT 1
265 #define HAVE_STRLCPY 1
266 #define HAVE_STRSTR 1
267 #define HAVE_TGAMMA 1
268 #define HAVE_FINITE 1
269 #define HAVE_ISINF 1
270 #define HAVE_ISNAN 1
271 #define HAVE_SIGNBIT 1
272 #define HAVE_FORK 1
273 #define HAVE_VFORK 1
274 #define HAVE_WORKING_VFORK 1
275 #define HAVE_WORKING_FORK 1
276 #define HAVE__LONGJMP 1
277 #define HAVE_ARC4RANDOM_BUF 1
278 #define HAVE_ATAN2L 1
279 #define HAVE_ATAN2F 1
280 #define HAVE_CHROOT 1
281 #define HAVE_CLOCK_GETTIME 1
282 #define HAVE_COSH 1
283 #define HAVE_CRYPT_R 1
284 #define HAVE_DIRFD 1
285 #define HAVE_DLOPEN 1
286 #define HAVE_DLADDR 1
287 #define HAVE_DUP 1
288 #define HAVE_DUP3 1
289 #define HAVE_EACCESS 1
290 #define HAVE_ENDGRENT 1
291 #define HAVE_FCHMOD 1
292 #define HAVE_FCHOWN 1
293 #define HAVE_FCNTL 1
294 #define HAVE_FDATASYNC 1
295 #define HAVE_FDOPENDIR 1
296 #define HAVE_FMOD 1
297 #define HAVE_FSTATAT 1
298 #define HAVE_FSYNC 1
299 #define HAVE_FTRUNCATE 1
300 #define HAVE_GETCWD 1
301 #define HAVE_GETGRNAM 1
302 #define HAVE_GETGRNAM_R 1
303 #define HAVE_GETGROUPS 1
304 #define HAVE_GETPGID 1
305 #define HAVE_GETPGRP 1
306 #define HAVE_GETPRIORITY 1
307 #define HAVE_GETPWNAM_R 1
308 #define HAVE_GETRANDOM 1
309 #define HAVE_GETRLIMIT 1
310 #define HAVE_GETSID 1
311 #define HAVE_GETTIMEOFDAY 1
312 #define HAVE_GMTIME_R 1
313 #define HAVE_GRANTPT 1
314 #define HAVE_INITGROUPS 1
315 #define HAVE_IOCTL 1
316 #define HAVE_ISSETUGID 1
317 #define HAVE_KILLPG 1
318 #define HAVE_LCHOWN 1
319 #define HAVE_LINK 1
320 #define HAVE_LLABS 1
321 #define HAVE_LOCKF 1
322 #define HAVE_LOG2 1
323 #define HAVE_LSTAT 1
324 #define HAVE_LUTIMES 1
325 #define HAVE_MALLOC_USABLE_SIZE 1
326 #define HAVE_MBLEN 1
327 #define HAVE_MEMALIGN 1
328 #define HAVE_WRITEV 1
329 #define HAVE_MEMRCHR 1
330 #define HAVE_MEMMEM 1
331 #define HAVE_MKFIFO 1
332 #define HAVE_MKNOD 1
333 #define HAVE_MKTIME 1
334 #define HAVE_OPENAT 1
335 #define HAVE_PIPE2 1
336 #define HAVE_POLL 1
337 #define HAVE_POSIX_FADVISE 1
338 #define HAVE_POSIX_MEMALIGN 1
339 #define HAVE_PPOLL 1
340 #define HAVE_PREAD 1
341 #define HAVE_PWRITE 1
342 #define HAVE_QSORT_R 1
343 #define HAVE_READLINK 1
344 #define HAVE_REALPATH 1
345 #define HAVE_ROUND 1
346 #define HAVE_SEEKDIR 1
347 #define HAVE_SETEGID 1
348 #define HAVE_SETENV 1
349 #define HAVE_SETEUID 1
350 #define HAVE_SETGID 1
351 #define HAVE_SETGROUPS 1
352 #define HAVE_SETPGID 1
353 #define HAVE_SETPGRP 1
354 #define HAVE_SETREGID 1
355 #define HAVE_SETREUID 1
356 #define HAVE_SETRLIMIT 1
357 #define HAVE_SETSID 1
358 #define HAVE_SETUID 1
359 #define HAVE_SHUTDOWN 1
360 #define HAVE_SIGACTION 1
361 #define HAVE_SIGALTSTACK 1
362 #define HAVE_SIGPROCMASK 1
363 #define HAVE_SINH 1
364 #define HAVE_SPAWNV 1
365 #define HAVE_SYMLINK 1
366 #define HAVE_SYSCONF 1
367 #define HAVE_TANH 1
368 #define HAVE_TELLDIR 1
369 #define HAVE_TIMEGM 1
370 #define HAVE_TIMES 1
371 #define HAVE_TRUNCATE 1
372 #define HAVE_UNSETENV 1
373 #define HAVE_UTIMENSAT 1
374 #define HAVE_UTIMES 1
375 #define HAVE_WAIT4 1
376 #define HAVE_WAITPID 1
377 #define HAVE_CRYPT_H 1
378 #define HAVE_STRUCT_CRYPT_DATA_INITIALIZED 1
379 #define HAVE_BUILTIN___BUILTIN_ALLOCA_WITH_ALIGN 1
380 #define HAVE_BUILTIN___BUILTIN_ASSUME_ALIGNED 1
381 #define HAVE_BUILTIN___BUILTIN_BSWAP16 1
382 #define HAVE_BUILTIN___BUILTIN_BSWAP32 1
383 #define HAVE_BUILTIN___BUILTIN_BSWAP64 1
384 #define HAVE_BUILTIN___BUILTIN_POPCOUNT 1
385 #define HAVE_BUILTIN___BUILTIN_POPCOUNTLL 1
386 #define HAVE_BUILTIN___BUILTIN_CLZ 1
387 #define HAVE_BUILTIN___BUILTIN_CLZL 1
388 #define HAVE_BUILTIN___BUILTIN_CLZLL 1
389 #define HAVE_BUILTIN___BUILTIN_CTZ 1
390 #define HAVE_BUILTIN___BUILTIN_CTZLL 1
391 #define HAVE_BUILTIN___BUILTIN_ADD_OVERFLOW 1
392 #define HAVE_BUILTIN___BUILTIN_SUB_OVERFLOW 1
393 #define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW 1
394 #define HAVE_BUILTIN___BUILTIN_MUL_OVERFLOW_P 1
395 #define HAVE_BUILTIN___BUILTIN_CONSTANT_P 1
396 #define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR 1
397 #define HAVE_BUILTIN___BUILTIN_CHOOSE_EXPR_CONSTANT_P 1
398 #define HAVE_BUILTIN___BUILTIN_TYPES_COMPATIBLE_P 1
399 #define HAVE_BUILTIN___BUILTIN_TRAP 1
400 #define HAVE_GNU_QSORT_R 1
401 #define ATAN2_INF_C99 1
402 #define HAVE_CLOCK_GETRES 1
403 #define HAVE_LIBRT 1
404 #define HAVE_LIBRT 1
405 #define HAVE_TIMER_CREATE 1
406 #define HAVE_TIMER_SETTIME 1
407 #define HAVE_STRUCT_TM_TM_ZONE 1
408 #define HAVE_TM_ZONE 1
409 #define HAVE_STRUCT_TM_TM_GMTOFF 1
410 #define HAVE_DAYLIGHT 1
411 #define NEGATIVE_TIME_T 1
412 #define POSIX_SIGNAL 1
413 #define HAVE_SIG_T 1
414 #define RSHIFT(x,y) ((x)>>(int)(y))
415 #define HAVE__SC_CLK_TCK 1
416 #define STACK_GROW_DIRECTION -1
417 #define COROUTINE_H "coroutine/ucontext/Context.h"
418 #define _REENTRANT 1
419 #define _THREAD_SAFE 1
420 #define HAVE_LIBPTHREAD 1
421 #define HAVE_SCHED_YIELD 1
422 #define HAVE_PTHREAD_ATTR_SETINHERITSCHED 1
423 #define HAVE_PTHREAD_ATTR_GETSTACK 1
424 #define HAVE_PTHREAD_ATTR_GETGUARDSIZE 1
425 #define HAVE_PTHREAD_CONDATTR_SETCLOCK 1
426 #define HAVE_PTHREAD_SIGMASK 1
427 #define HAVE_PTHREAD_SETNAME_NP 1
428 #define HAVE_PTHREAD_GETATTR_NP 1
429 #define SET_CURRENT_THREAD_NAME(name) pthread_setname_np(pthread_self(), name)
430 #define SET_ANOTHER_THREAD_NAME(thid,name) pthread_setname_np(thid, name)
431 #define DEFINE_MCONTEXT_PTR(mc,uc) mcontext_t *mc = &(uc)->uc_mcontext
432 #define HAVE_GETCONTEXT 1
433 #define HAVE_SETCONTEXT 1
434 #define DLEXT_MAXLEN 3
435 #define DLEXT ".so"
436 #define LIBDIR_BASENAME "lib"
437 #define EXECUTABLE_EXTS ".exe",".com",".cmd",".bat"
438 #define HAVE__SETJMP 1
439 #define RUBY_SETJMP(env) __builtin_setjmp((env))
440 #define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
441 #define USE_MJIT 1
442 #define HAVE_PTHREAD_H 1
443 #define RUBY_PLATFORM "x86_64-msys"
444 #define RUBY_DEFINES_H 1
445 #define HAVE_ATTRIBUTE_ERRORFUNC 1
446 #define HAVE_ATTRIBUTE_WARNINGFUNC 1
447 #define GCC_VERSION_SINCE(major,minor,patchlevel) ((__GNUC__ > (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ > (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ >= (patchlevel))))))
448 #define GCC_VERSION_BEFORE(major,minor,patchlevel) ((__GNUC__ < (major)) || ((__GNUC__ == (major) && ((__GNUC_MINOR__ < (minor)) || (__GNUC_MINOR__ == (minor) && __GNUC_PATCHLEVEL__ <= (patchlevel))))))
449 #define RB_LIKELY(x) (__builtin_expect(!!(x), 1))
450 #define RB_UNLIKELY(x) (__builtin_expect(!!(x), 0))
451 #define COLDFUNC __attribute__((cold))
452 #define PRINTF_ARGS(decl,string_index,first_to_check) decl __attribute__((format(printf, string_index, first_to_check)))
453 #define RB_GNUC_EXTENSION __extension__
454 #define RB_GNUC_EXTENSION_BLOCK(x) __extension__ ({ x; })
455 #define _STDIO_H_
456 #define _ANSIDECL_H_
457 #define __NEWLIB_H__ 1
458 #define _NEWLIB_VERSION_H__ 1
459 #define _NEWLIB_VERSION "3.1.0"
460 #define __NEWLIB__ 3
461 #define __NEWLIB_MINOR__ 1
462 #define __NEWLIB_PATCHLEVEL__ 0
463 #define _WANT_IO_C99_FORMATS 1
464 #define _WANT_IO_LONG_LONG 1
465 #define _WANT_IO_LONG_DOUBLE 1
466 #define _WANT_IO_POS_ARGS 1
467 #define _MB_CAPABLE 1
468 #define _MB_LEN_MAX 8
469 #define _ATEXIT_DYNAMIC_ALLOC 1
470 #define _HAVE_LONG_DOUBLE 1
471 #define _HAVE_CC_INHIBIT_LOOP_TO_LIBCALL 1
472 #define _FVWRITE_IN_STREAMIO 1
473 #define _FSEEK_OPTIMIZATION 1
474 #define _WIDE_ORIENT 1
475 #define _UNBUF_STREAM_OPT 1
476 #define __SYS_CONFIG_H__
477 #define __IEEE_LITTLE_ENDIAN
478 #define __OBSOLETE_MATH_DEFAULT 0
479 #define __OBSOLETE_MATH __OBSOLETE_MATH_DEFAULT
480 #define _SYS_FEATURES_H
481 #define __GNUC_PREREQ(maj,min) ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
482 #define __GNUC_PREREQ__(ma,mi) __GNUC_PREREQ(ma, mi)
483 #undef _ATFILE_SOURCE
484 #define _ATFILE_SOURCE 1
485 #undef _DEFAULT_SOURCE
486 #define _DEFAULT_SOURCE 1
487 #undef _ISOC99_SOURCE
488 #define _ISOC99_SOURCE 1
489 #undef _ISOC11_SOURCE
490 #define _ISOC11_SOURCE 1
491 #undef _POSIX_SOURCE
492 #define _POSIX_SOURCE 1
493 #undef _POSIX_C_SOURCE
494 #define _POSIX_C_SOURCE 200809L
495 #undef _XOPEN_SOURCE
496 #define _XOPEN_SOURCE 700
497 #undef _XOPEN_SOURCE_EXTENDED
498 #define _XOPEN_SOURCE_EXTENDED 1
499 #undef _POSIX_SOURCE
500 #define _POSIX_SOURCE 1
501 #undef _POSIX_C_SOURCE
502 #define _POSIX_C_SOURCE 200809L
503 #undef _ATFILE_SOURCE
504 #define _ATFILE_SOURCE 1
505 #define __ATFILE_VISIBLE 1
506 #define __BSD_VISIBLE 1
507 #define __GNU_VISIBLE 1
508 #define __ISO_C_VISIBLE 2011
509 #define __LARGEFILE_VISIBLE 1
510 #define __MISC_VISIBLE 1
511 #define __POSIX_VISIBLE 200809
512 #define __SVID_VISIBLE 1
513 #define __XSI_VISIBLE 700
514 #define __SSP_FORTIFY_LEVEL 2
515 #define _POSIX_VERSION 200809L
516 #define _POSIX2_VERSION 200809L
517 #define _XOPEN_VERSION __XSI_VISIBLE
518 #define _POSIX_ADVISORY_INFO 200809L
519 #define _POSIX_ASYNCHRONOUS_IO 200809L
520 #define _POSIX_BARRIERS 200809L
521 #define _POSIX_CHOWN_RESTRICTED 1
522 #define _POSIX_CLOCK_SELECTION 200809L
523 #define _POSIX_CPUTIME 200809L
524 #define _POSIX_FSYNC 200809L
525 #define _POSIX_IPV6 200809L
526 #define _POSIX_JOB_CONTROL 1
527 #define _POSIX_MAPPED_FILES 200809L
528 #define _POSIX_MEMLOCK_RANGE 200809L
529 #define _POSIX_MEMORY_PROTECTION 200809L
530 #define _POSIX_MESSAGE_PASSING 200809L
531 #define _POSIX_MONOTONIC_CLOCK 200809L
532 #define _POSIX_NO_TRUNC 1
533 #define _POSIX_PRIORITY_SCHEDULING 200809L
534 #define _POSIX_RAW_SOCKETS 200809L
535 #define _POSIX_READER_WRITER_LOCKS 200809L
536 #define _POSIX_REALTIME_SIGNALS 200809L
537 #define _POSIX_REGEXP 1
538 #define _POSIX_SAVED_IDS 1
539 #define _POSIX_SEMAPHORES 200809L
540 #define _POSIX_SHARED_MEMORY_OBJECTS 200809L
541 #define _POSIX_SHELL 1
542 #define _POSIX_SPAWN 200809L
543 #define _POSIX_SPIN_LOCKS 200809L
544 #define _POSIX_SYNCHRONIZED_IO 200809L
545 #define _POSIX_THREAD_ATTR_STACKADDR 200809L
546 #define _POSIX_THREAD_ATTR_STACKSIZE 200809L
547 #define _POSIX_THREAD_CPUTIME 200809L
548 #define _POSIX_THREAD_PRIORITY_SCHEDULING 200809L
549 #define _POSIX_THREAD_PROCESS_SHARED 200809L
550 #define _POSIX_THREAD_SAFE_FUNCTIONS 200809L
551 #define _POSIX_THREADS 200809L
552 #define _POSIX_TIMEOUTS 200809L
553 #define _POSIX_TIMERS 200809L
554 #define _POSIX_VDISABLE '\0'
555 #define _POSIX2_C_VERSION _POSIX2_VERSION
556 #define _POSIX2_C_BIND _POSIX2_VERSION
557 #define _POSIX2_C_DEV _POSIX2_VERSION
558 #define _POSIX2_CHAR_TERM _POSIX2_VERSION
559 #define _POSIX2_SW_DEV _POSIX2_VERSION
560 #define _POSIX2_UPE _POSIX2_VERSION
561 #define _POSIX_V6_ILP32_OFF32 -1
562 #define _POSIX_V6_ILP32_OFFBIG -1
563 #define _POSIX_V6_LP64_OFF64 1
564 #define _POSIX_V6_LPBIG_OFFBIG 1
565 #define _POSIX_V7_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
566 #define _POSIX_V7_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
567 #define _POSIX_V7_LP64_OFF64 _POSIX_V6_LP64_OFF64
568 #define _POSIX_V7_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
569 #define _XBS5_ILP32_OFF32 _POSIX_V6_ILP32_OFF32
570 #define _XBS5_ILP32_OFFBIG _POSIX_V6_ILP32_OFFBIG
571 #define _XBS5_LP64_OFF64 _POSIX_V6_LP64_OFF64
572 #define _XBS5_LPBIG_OFFBIG _POSIX_V6_LPBIG_OFFBIG
573 #define _XOPEN_CRYPT 1
574 #define _XOPEN_ENH_I18N 1
575 #define _XOPEN_SHM 1
576 #define __STDC_ISO_10646__ 200910L
577 #define _POINTER_INT long
578 #undef __RAND_MAX
579 #define __RAND_MAX 0x7fffffff
580 #define _CYGWIN_CONFIG_H
581 #define __DYNAMIC_REENT__
582 #define __SYMBOL_PREFIX
583 #define _SYMSTR(x) __SYMBOL_PREFIX #x
584 #define __FILENAME_MAX__ 4096
585 #define _READ_WRITE_RETURN_TYPE _ssize_t
586 #define _READ_WRITE_BUFSIZE_TYPE size_t
587 #define __LARGE64_FILES 1
588 #define __USE_INTERNAL_STAT64 1
589 #define __LINUX_ERRNO_EXTENSIONS__ 1
590 #define _MB_EXTENDED_CHARSETS_ALL 1
591 #define __HAVE_LOCALE_INFO__ 1
592 #define __HAVE_LOCALE_INFO_EXTENDED__ 1
593 #define _WANT_C99_TIME_FORMATS 1
594 #define _GLIBC_EXTENSION 1
595 #define _STDIO_BSD_SEMANTICS 1
596 #define __TM_GMTOFF tm_gmtoff
597 #define __TM_ZONE tm_zone
598 #define _USE_LONG_TIME_T 1
599 #define __EXPORT
600 #define __IMPORT __declspec(dllimport)
601 #define DEFAULT_LOCALE "C.UTF-8"
602 #define _MB_EXTENDED_CHARSETS_ISO 1
603 #define _MB_EXTENDED_CHARSETS_WINDOWS 1
604 #define _BEGIN_STD_C
605 #define _END_STD_C
606 #define _NOTHROW
607 #define _LONG_DOUBLE long double
608 #define _ATTRIBUTE(attrs) __attribute__ (attrs)
609 #define _ELIDABLE_INLINE static __inline__
610 #define _NOINLINE __attribute__ ((__noinline__))
611 #define _NOINLINE_STATIC _NOINLINE static
612 #define _FSTDIO
613 #define __need_size_t
614 #define __need_NULL
615 #define _SYS_CDEFS_H_
616 #define _MACHINE__DEFAULT_TYPES_H
617 #define __EXP(x) __ ##x ##__
618 #define __have_longlong64 1
619 #define __have_long64 1
620 typedef signed char __int8_t;
621 typedef unsigned char __uint8_t;
622 #define ___int8_t_defined 1
623 typedef short int __int16_t;
624 typedef short unsigned int __uint16_t;
625 #define ___int16_t_defined 1
626 typedef int __int32_t;
627 typedef unsigned int __uint32_t;
628 #define ___int32_t_defined 1
629 typedef long int __int64_t;
630 typedef long unsigned int __uint64_t;
631 #define ___int64_t_defined 1
632 typedef signed char __int_least8_t;
633 typedef unsigned char __uint_least8_t;
634 #define ___int_least8_t_defined 1
635 typedef short int __int_least16_t;
636 typedef short unsigned int __uint_least16_t;
637 #define ___int_least16_t_defined 1
638 typedef int __int_least32_t;
639 typedef unsigned int __uint_least32_t;
640 #define ___int_least32_t_defined 1
641 typedef long int __int_least64_t;
642 typedef long unsigned int __uint_least64_t;
643 #define ___int_least64_t_defined 1
644 typedef long int __intmax_t;
645 typedef long unsigned int __uintmax_t;
646 typedef long int __intptr_t;
647 typedef long unsigned int __uintptr_t;
648 #undef __EXP
649 #define __size_t__
650 #define __SIZE_T__
651 #define _SIZE_T
652 #define _SYS_SIZE_T_H
653 #define _T_SIZE_
654 #define _T_SIZE
655 #define __SIZE_T
656 #define _SIZE_T_
657 #define _BSD_SIZE_T_
658 #define _SIZE_T_DEFINED_
659 #define _SIZE_T_DEFINED
660 #define _BSD_SIZE_T_DEFINED_
661 #define _SIZE_T_DECLARED
662 #define ___int_size_t_h
663 #define _GCC_SIZE_T
664 #define _SIZET_
665 #define __size_t
666 typedef long unsigned int size_t;
667 #undef __need_size_t
668 #undef NULL
669 #define NULL ((void *)0)
670 #undef __need_NULL
671 #define __PMT(args) args
672 #define __DOTS , ...
673 #define __THROW
674 #define __ASMNAME(cname) __XSTRING (__USER_LABEL_PREFIX__) cname
675 #define __ptr_t void *
676 #define __long_double_t long double
677 #define __attribute_malloc__
678 #define __attribute_pure__
679 #define __attribute_format_strfmon__(a,b)
680 #define __flexarr [0]
681 #define __bounded
682 #define __unbounded
683 #define __ptrvalue
684 #define __has_extension __has_feature
685 #define __has_feature(x) 0
686 #define __has_builtin(x) 0
687 #define __BEGIN_DECLS
688 #define __END_DECLS
689 #define __GNUCLIKE_ASM 3
690 #define __GNUCLIKE_MATH_BUILTIN_CONSTANTS
691 #define __GNUCLIKE___TYPEOF 1
692 #define __GNUCLIKE___OFFSETOF 1
693 #define __GNUCLIKE___SECTION 1
694 #define __GNUCLIKE_CTOR_SECTION_HANDLING 1
695 #define __GNUCLIKE_BUILTIN_CONSTANT_P 1
696 #define __GNUCLIKE_BUILTIN_VARARGS 1
697 #define __GNUCLIKE_BUILTIN_STDARG 1
698 #define __GNUCLIKE_BUILTIN_VAALIST 1
699 #define __GNUC_VA_LIST_COMPATIBILITY 1
700 #define __compiler_membar() __asm __volatile(" " : : : "memory")
701 #define __GNUCLIKE_BUILTIN_NEXT_ARG 1
702 #define __GNUCLIKE_MATH_BUILTIN_RELOPS
703 #define __GNUCLIKE_BUILTIN_MEMCPY 1
704 #define __CC_SUPPORTS_INLINE 1
705 #define __CC_SUPPORTS___INLINE 1
706 #define __CC_SUPPORTS___INLINE__ 1
707 #define __CC_SUPPORTS___FUNC__ 1
708 #define __CC_SUPPORTS_WARNING 1
709 #define __CC_SUPPORTS_VARADIC_XXX 1
710 #define __CC_SUPPORTS_DYNAMIC_ARRAY_INIT 1
711 #define __P(protos) protos
712 #define __CONCAT1(x,y) x ## y
713 #define __CONCAT(x,y) __CONCAT1(x,y)
714 #define __STRING(x) #x
715 #define __XSTRING(x) __STRING(x)
716 #define __const const
717 #define __signed signed
718 #define __volatile volatile
719 #define __weak_symbol __attribute__((__weak__))
720 #define __dead2 __attribute__((__noreturn__))
721 #define __pure2 __attribute__((__const__))
722 #define __unused __attribute__((__unused__))
723 #define __used __attribute__((__used__))
724 #define __packed __attribute__((__packed__))
725 #define __aligned(x) __attribute__((__aligned__(x)))
726 #define __section(x) __attribute__((__section__(x)))
727 #define __alloc_size(x) __attribute__((__alloc_size__(x)))
728 #define __alloc_size2(n,x) __attribute__((__alloc_size__(n, x)))
729 #define __alloc_align(x) __attribute__((__alloc_align__(x)))
730 #define __generic(expr,t,yes,no) _Generic(expr, t: yes, default: no)
731 #define __min_size(x) static (x)
732 #define __malloc_like __attribute__((__malloc__))
733 #define __pure __attribute__((__pure__))
734 #define __always_inline __inline__ __attribute__((__always_inline__))
735 #define __noinline __attribute__ ((__noinline__))
736 #define __nonnull(x) __attribute__((__nonnull__ x))
737 #define __nonnull_all __attribute__((__nonnull__))
738 #define __fastcall __attribute__((__fastcall__))
739 #define __result_use_check __attribute__((__warn_unused_result__))
740 #define __returns_twice __attribute__((__returns_twice__))
741 #define __unreachable() __builtin_unreachable()
742 #define __restrict restrict
743 #define __predict_true(exp) __builtin_expect((exp), 1)
744 #define __predict_false(exp) __builtin_expect((exp), 0)
745 #define __null_sentinel __attribute__((__sentinel__))
746 #define __exported __attribute__((__visibility__("default")))
747 #define __hidden
748 #define __offsetof(type,field) offsetof(type, field)
749 #define __rangeof(type,start,end) (__offsetof(type, end) - __offsetof(type, start))
750 #define __containerof(x,s,m) ({ const volatile __typeof(((s *)0)->m) *__x = (x); __DEQUALIFY(s *, (const volatile char *)__x - __offsetof(s, m));})
751 #define __printflike(fmtarg,firstvararg) __attribute__((__format__ (__printf__, fmtarg, firstvararg)))
752 #define __scanflike(fmtarg,firstvararg) __attribute__((__format__ (__scanf__, fmtarg, firstvararg)))
753 #define __format_arg(fmtarg) __attribute__((__format_arg__ (fmtarg)))
754 #define __strfmonlike(fmtarg,firstvararg) __attribute__((__format__ (__strfmon__, fmtarg, firstvararg)))
755 #define __strftimelike(fmtarg,firstvararg) __attribute__((__format__ (__strftime__, fmtarg, firstvararg)))
756 #define __printf0like(fmtarg,firstvararg)
757 #define __strong_reference(sym,aliassym) extern __typeof (sym) aliassym __attribute__ ((__alias__ (#sym)))
758 #define __weak_reference(sym,alias) __asm__(".stabs \"_" #alias "\",11,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
759 #define __warn_references(sym,msg) __asm__(".stabs \"" msg "\",30,0,0,0"); __asm__(".stabs \"_" #sym "\",1,0,0,0")
760 #define __FBSDID(s) struct __hack
761 #define __RCSID(s) struct __hack
762 #define __RCSID_SOURCE(s) struct __hack
763 #define __SCCSID(s) struct __hack
764 #define __COPYRIGHT(s) struct __hack
765 #define __DECONST(type,var) ((type)(__uintptr_t)(const void *)(var))
766 #define __DEVOLATILE(type,var) ((type)(__uintptr_t)(volatile void *)(var))
767 #define __DEQUALIFY(type,var) ((type)(__uintptr_t)(const volatile void *)(var))
768 #define _Nonnull
769 #define _Nullable
770 #define _Null_unspecified
771 #define __NULLABILITY_PRAGMA_PUSH
772 #define __NULLABILITY_PRAGMA_POP
773 #define __arg_type_tag(arg_kind,arg_idx,type_tag_idx)
774 #define __datatype_type_tag(kind,type)
775 #define __lock_annotate(x)
776 #define __lockable __lock_annotate(lockable)
777 #define __locks_exclusive(...) __lock_annotate(exclusive_lock_function(__VA_ARGS__))
778 #define __locks_shared(...) __lock_annotate(shared_lock_function(__VA_ARGS__))
779 #define __trylocks_exclusive(...) __lock_annotate(exclusive_trylock_function(__VA_ARGS__))
780 #define __trylocks_shared(...) __lock_annotate(shared_trylock_function(__VA_ARGS__))
781 #define __unlocks(...) __lock_annotate(unlock_function(__VA_ARGS__))
782 #define __asserts_exclusive(...) __lock_annotate(assert_exclusive_lock(__VA_ARGS__))
783 #define __asserts_shared(...) __lock_annotate(assert_shared_lock(__VA_ARGS__))
784 #define __requires_exclusive(...) __lock_annotate(exclusive_locks_required(__VA_ARGS__))
785 #define __requires_shared(...) __lock_annotate(shared_locks_required(__VA_ARGS__))
786 #define __requires_unlocked(...) __lock_annotate(locks_excluded(__VA_ARGS__))
787 #define __no_lock_analysis __lock_annotate(no_thread_safety_analysis)
788 #define __guarded_by(x) __lock_annotate(guarded_by(x))
789 #define __pt_guarded_by(x) __lock_annotate(pt_guarded_by(x))
790 #define _STDDEF_H
791 #define _STDDEF_H_
792 #define _ANSI_STDDEF_H
793 #define _PTRDIFF_T
794 #define _T_PTRDIFF_
795 #define _T_PTRDIFF
796 #define __PTRDIFF_T
797 #define _PTRDIFF_T_
798 #define _BSD_PTRDIFF_T_
799 #define ___int_ptrdiff_t_h
800 #define _GCC_PTRDIFF_T
801 #define _PTRDIFF_T_DECLARED
802 typedef long int ptrdiff_t;
803 #undef __need_ptrdiff_t
804 #undef __need_size_t
805 #define __wchar_t__
806 #define __WCHAR_T__
807 #define _WCHAR_T
808 #define _T_WCHAR_
809 #define _T_WCHAR
810 #define __WCHAR_T
811 #define _WCHAR_T_
812 #define _BSD_WCHAR_T_
813 #define _WCHAR_T_DEFINED_
814 #define _WCHAR_T_DEFINED
815 #define _WCHAR_T_H
816 #define ___int_wchar_t_h
817 #define __INT_WCHAR_T_H
818 #define _GCC_WCHAR_T
819 #define _WCHAR_T_DECLARED
820 #undef _BSD_WCHAR_T_
821 typedef short unsigned int wchar_t;
822 #undef __need_wchar_t
823 #undef NULL
824 #define NULL ((void *)0)
825 #undef __need_NULL
826 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
827 #define _GCC_MAX_ALIGN_T
828 typedef struct {
829 long long __max_align_ll __attribute__((__aligned__(__alignof__(long long))));
830 long double __max_align_ld __attribute__((__aligned__(__alignof__(long double))));
831 } max_align_t;
832 #define __need___va_list
833 #undef __need___va_list
834 #define __GNUC_VA_LIST
835 typedef __builtin_va_list __gnuc_va_list;
836 typedef __gnuc_va_list va_list;
837 #define _VA_LIST_DEFINED
838 #define _SYS_REENT_H_
839 #define _SYS__TYPES_H
840 #define _MACHINE__TYPES_H
841 #define __machine_blkcnt_t_defined
842 typedef __int64_t __blkcnt_t;
843 #define __machine_blksize_t_defined
844 typedef __int32_t __blksize_t;
845 #define __machine_dev_t_defined
846 typedef __uint32_t __dev_t;
847 #define __machine_fsblkcnt_t_defined
848 typedef unsigned long __fsblkcnt_t;
849 #define __machine_fsfilcnt_t_defined
850 typedef unsigned long __fsfilcnt_t;
851 #define __machine_uid_t_defined
852 typedef __uint32_t __uid_t;
853 #define __machine_gid_t_defined
854 typedef __uint32_t __gid_t;
855 #define __machine_ino_t_defined
856 typedef __uint64_t __ino_t;
857 #define __machine_key_t_defined
858 typedef long long __key_t;
859 #define __machine_sa_family_t_defined
860 typedef __uint16_t __sa_family_t;
861 #define __machine_socklen_t_defined
862 typedef int __socklen_t;
863 #define _SYS_LOCK_H_
864 typedef void *_LOCK_T;
865 #define _LOCK_RECURSIVE_T _LOCK_T
866 #define _LOCK_T_RECURSIVE_INITIALIZER ((_LOCK_T)18)
867 #define _LOCK_T_INITIALIZER ((_LOCK_T)19)
868 #define __LOCK_INIT(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_INITIALIZER;
869 #define __LOCK_INIT_RECURSIVE(CLASS,NAME) CLASS _LOCK_T NAME = _LOCK_T_RECURSIVE_INITIALIZER;
870 #define __lock_init(__lock) __cygwin_lock_init(&__lock)
871 #define __lock_init_recursive(__lock) __cygwin_lock_init_recursive(&__lock)
872 #define __lock_close(__lock) __cygwin_lock_fini(&__lock)
873 #define __lock_close_recursive(__lock) __cygwin_lock_fini(&__lock)
874 #define __lock_acquire(__lock) __cygwin_lock_lock(&__lock)
875 #define __lock_acquire_recursive(__lock) __cygwin_lock_lock(&__lock)
876 #define __lock_try_acquire(lock) __cygwin_lock_trylock(&__lock)
877 #define __lock_try_acquire_recursive(lock) __cygwin_lock_trylock(&__lock)
878 #define __lock_release(__lock) __cygwin_lock_unlock(&__lock)
879 #define __lock_release_recursive(__lock) __cygwin_lock_unlock(&__lock)
880 void __cygwin_lock_init(_LOCK_T *);
881 void __cygwin_lock_init_recursive(_LOCK_T *);
882 void __cygwin_lock_fini(_LOCK_T *);
883 void __cygwin_lock_lock(_LOCK_T *);
884 int __cygwin_lock_trylock(_LOCK_T *);
885 void __cygwin_lock_unlock(_LOCK_T *);
886 typedef long _off_t;
887 typedef int __pid_t;
888 typedef __uint32_t __id_t;
889 typedef __uint32_t __mode_t;
890 __extension__ typedef long long _off64_t;
891 typedef _off_t __off_t;
892 typedef _off64_t __loff_t;
893 typedef long _fpos_t;
894 typedef _off64_t _fpos64_t;
895 #undef __size_t
896 typedef long unsigned int __size_t;
897 #define unsigned signed
898 typedef long signed int _ssize_t;
899 #undef unsigned
900 typedef _ssize_t __ssize_t;
901 #define __need_wint_t
902 #undef __need_ptrdiff_t
903 #undef __need_size_t
904 #undef __need_wchar_t
905 #define _WINT_T
906 typedef unsigned int wint_t;
907 #undef __need_wint_t
908 #undef NULL
909 #define NULL ((void *)0)
910 #undef __need_NULL
911 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
912 typedef struct
913 {
914 int __count;
915 union
916 {
917 wint_t __wch;
918 unsigned char __wchb[4];
919 } __value;
920 } _mbstate_t;
921 typedef _LOCK_T _flock_t;
922 typedef void *_iconv_t;
923 #define _CLOCK_T_ unsigned long
924 typedef unsigned long __clock_t;
925 #define _TIME_T_ long
926 typedef long __time_t;
927 #define _CLOCKID_T_ unsigned long
928 typedef unsigned long __clockid_t;
929 #define _TIMER_T_ unsigned long
930 typedef unsigned long __timer_t;
931 typedef int __nl_item;
932 typedef unsigned short __nlink_t;
933 typedef long __suseconds_t;
934 typedef unsigned long __useconds_t;
935 typedef __builtin_va_list __va_list;
936 #define _NULL 0
937 #define __Long int
938 typedef unsigned int __ULong;
939 struct _reent;
940 struct __locale_t;
941 struct _Bigint
942 {
943 struct _Bigint *_next;
944 int _k, _maxwds, _sign, _wds;
945 __ULong _x[1];
946 };
947 struct __tm
948 {
949 int __tm_sec;
950 int __tm_min;
951 int __tm_hour;
952 int __tm_mday;
953 int __tm_mon;
954 int __tm_year;
955 int __tm_wday;
956 int __tm_yday;
957 int __tm_isdst;
958 };
959 #define _ATEXIT_SIZE 32
960 struct _on_exit_args {
961 void * _fnargs[32];
962 void * _dso_handle[32];
963 __ULong _fntypes;
964 __ULong _is_cxa;
965 };
966 struct _atexit {
967 struct _atexit *_next;
968 int _ind;
969 void (*_fns[32])(void);
970 struct _on_exit_args _on_exit_args;
971 };
972 #define _ATEXIT_INIT {_NULL, 0, {_NULL}, {{_NULL}, {_NULL}, 0, 0}}
973 #define _REENT_INIT_ATEXIT _NULL, _ATEXIT_INIT,
974 struct __sbuf {
975 unsigned char *_base;
976 int _size;
977 };
978 #define _REENT_SMALL_CHECK_INIT(ptr)
979 struct __sFILE {
980 unsigned char *_p;
981 int _r;
982 int _w;
983 short _flags;
984 short _file;
985 struct __sbuf _bf;
986 int _lbfsize;
987 void * _cookie;
988 _ssize_t (*_read) (struct _reent *, void *,
989 char *, size_t);
990 _ssize_t (*_write) (struct _reent *, void *,
991 const char *,
992 size_t);
993 _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
994 int (*_close) (struct _reent *, void *);
995 struct __sbuf _ub;
996 unsigned char *_up;
997 int _ur;
998 unsigned char _ubuf[3];
999 unsigned char _nbuf[1];
1000 struct __sbuf _lb;
1001 int _blksize;
1002 _off_t _offset;
1003 struct _reent *_data;
1004 _flock_t _lock;
1005 _mbstate_t _mbstate;
1006 int _flags2;
1007 };
1008 struct __sFILE64 {
1009 unsigned char *_p;
1010 int _r;
1011 int _w;
1012 short _flags;
1013 short _file;
1014 struct __sbuf _bf;
1015 int _lbfsize;
1016 struct _reent *_data;
1017 void * _cookie;
1018 _ssize_t (*_read) (struct _reent *, void *,
1019 char *, size_t);
1020 _ssize_t (*_write) (struct _reent *, void *,
1021 const char *,
1022 size_t);
1023 _fpos_t (*_seek) (struct _reent *, void *, _fpos_t, int);
1024 int (*_close) (struct _reent *, void *);
1025 struct __sbuf _ub;
1026 unsigned char *_up;
1027 int _ur;
1028 unsigned char _ubuf[3];
1029 unsigned char _nbuf[1];
1030 struct __sbuf _lb;
1031 int _blksize;
1032 int _flags2;
1033 _off64_t _offset;
1034 _fpos64_t (*_seek64) (struct _reent *, void *, _fpos64_t, int);
1035 _flock_t _lock;
1036 _mbstate_t _mbstate;
1037 };
1038 typedef struct __sFILE64 __FILE;
1039 struct _glue
1040 {
1041 struct _glue *_next;
1042 int _niobs;
1043 __FILE *_iobs;
1044 };
1045 #define _RAND48_SEED_0 (0x330e)
1046 #define _RAND48_SEED_1 (0xabcd)
1047 #define _RAND48_SEED_2 (0x1234)
1048 #define _RAND48_MULT_0 (0xe66d)
1049 #define _RAND48_MULT_1 (0xdeec)
1050 #define _RAND48_MULT_2 (0x0005)
1051 #define _RAND48_ADD (0x000b)
1052 struct _rand48 {
1053 unsigned short _seed[3];
1054 unsigned short _mult[3];
1055 unsigned short _add;
1056 };
1057 #define _REENT_EMERGENCY_SIZE 25
1058 #define _REENT_ASCTIME_SIZE 26
1059 #define _REENT_SIGNAL_SIZE 24
1060 struct _reent
1061 {
1062 int _errno;
1063 __FILE *_stdin, *_stdout, *_stderr;
1064 int _inc;
1065 char _emergency[25];
1066 int _unspecified_locale_info;
1067 struct __locale_t *_locale;
1068 int __sdidinit;
1069 void (*__cleanup) (struct _reent *);
1070 struct _Bigint *_result;
1071 int _result_k;
1072 struct _Bigint *_p5s;
1073 struct _Bigint **_freelist;
1074 int _cvtlen;
1075 char *_cvtbuf;
1076 union
1077 {
1078 struct
1079 {
1080 unsigned int _unused_rand;
1081 char * _strtok_last;
1082 char _asctime_buf[26];
1083 struct __tm _localtime_buf;
1084 int _gamma_signgam;
1085 __extension__ unsigned long long _rand_next;
1086 struct _rand48 _r48;
1087 _mbstate_t _mblen_state;
1088 _mbstate_t _mbtowc_state;
1089 _mbstate_t _wctomb_state;
1090 char _l64a_buf[8];
1091 char _signal_buf[24];
1092 int _getdate_err;
1093 _mbstate_t _mbrlen_state;
1094 _mbstate_t _mbrtowc_state;
1095 _mbstate_t _mbsrtowcs_state;
1096 _mbstate_t _wcrtomb_state;
1097 _mbstate_t _wcsrtombs_state;
1098 int _h_errno;
1099 } _reent;
1100 struct
1101 {
1102 #define _N_LISTS 30
1103 unsigned char * _nextf[30];
1104 unsigned int _nmalloc[30];
1105 } _unused;
1106 } _new;
1107 struct _atexit *_atexit;
1108 struct _atexit _atexit0;
1109 void (**(_sig_func))(int);
1110 struct _glue __sglue;
1111 __FILE __sf[3];
1112 };
1113 #define _REENT_STDIO_STREAM(var,index) &(var)->__sf[index]
1114 #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} }
1115 #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; }
1116 #define _REENT_CHECK_RAND48(ptr)
1117 #define _REENT_CHECK_MP(ptr)
1118 #define _REENT_CHECK_TM(ptr)
1119 #define _REENT_CHECK_ASCTIME_BUF(ptr)
1120 #define _REENT_CHECK_EMERGENCY(ptr)
1121 #define _REENT_CHECK_MISC(ptr)
1122 #define _REENT_CHECK_SIGNAL_BUF(ptr)
1123 #define _REENT_SIGNGAM(ptr) ((ptr)->_new._reent._gamma_signgam)
1124 #define _REENT_RAND_NEXT(ptr) ((ptr)->_new._reent._rand_next)
1125 #define _REENT_RAND48_SEED(ptr) ((ptr)->_new._reent._r48._seed)
1126 #define _REENT_RAND48_MULT(ptr) ((ptr)->_new._reent._r48._mult)
1127 #define _REENT_RAND48_ADD(ptr) ((ptr)->_new._reent._r48._add)
1128 #define _REENT_MP_RESULT(ptr) ((ptr)->_result)
1129 #define _REENT_MP_RESULT_K(ptr) ((ptr)->_result_k)
1130 #define _REENT_MP_P5S(ptr) ((ptr)->_p5s)
1131 #define _REENT_MP_FREELIST(ptr) ((ptr)->_freelist)
1132 #define _REENT_ASCTIME_BUF(ptr) ((ptr)->_new._reent._asctime_buf)
1133 #define _REENT_TM(ptr) (&(ptr)->_new._reent._localtime_buf)
1134 #define _REENT_EMERGENCY(ptr) ((ptr)->_emergency)
1135 #define _REENT_STRTOK_LAST(ptr) ((ptr)->_new._reent._strtok_last)
1136 #define _REENT_MBLEN_STATE(ptr) ((ptr)->_new._reent._mblen_state)
1137 #define _REENT_MBTOWC_STATE(ptr) ((ptr)->_new._reent._mbtowc_state)
1138 #define _REENT_WCTOMB_STATE(ptr) ((ptr)->_new._reent._wctomb_state)
1139 #define _REENT_MBRLEN_STATE(ptr) ((ptr)->_new._reent._mbrlen_state)
1140 #define _REENT_MBRTOWC_STATE(ptr) ((ptr)->_new._reent._mbrtowc_state)
1141 #define _REENT_MBSRTOWCS_STATE(ptr) ((ptr)->_new._reent._mbsrtowcs_state)
1142 #define _REENT_WCRTOMB_STATE(ptr) ((ptr)->_new._reent._wcrtomb_state)
1143 #define _REENT_WCSRTOMBS_STATE(ptr) ((ptr)->_new._reent._wcsrtombs_state)
1144 #define _REENT_L64A_BUF(ptr) ((ptr)->_new._reent._l64a_buf)
1145 #define _REENT_SIGNAL_BUF(ptr) ((ptr)->_new._reent._signal_buf)
1146 #define _REENT_GETDATE_ERR_P(ptr) (&((ptr)->_new._reent._getdate_err))
1147 #define _REENT_INIT_PTR(var) { memset((var), 0, sizeof(*(var))); _REENT_INIT_PTR_ZEROED(var); }
1148 #define _Kmax (sizeof (size_t) << 3)
1149 #define __ATTRIBUTE_IMPURE_PTR__
1150 extern struct _reent *_impure_ptr ;
1151 extern struct _reent *const _global_impure_ptr ;
1152 void _reclaim_reent (struct _reent *);
1153 struct _reent * __getreent (void);
1154 #define _REENT (__getreent())
1155 #define _GLOBAL_REENT _global_impure_ptr
1156 #define _GLOBAL_ATEXIT (_GLOBAL_REENT->_atexit)
1157 typedef __uint8_t u_int8_t;
1158 typedef __uint16_t u_int16_t;
1159 typedef __uint32_t u_int32_t;
1160 typedef __uint64_t u_int64_t;
1161 typedef __intptr_t register_t;
1162 #define __BIT_TYPES_DEFINED__ 1
1163 #define _SYS_TYPES_H
1164 #define _SYS__STDINT_H
1165 typedef __int8_t int8_t ;
1166 #define _INT8_T_DECLARED
1167 typedef __uint8_t uint8_t ;
1168 #define _UINT8_T_DECLARED
1169 #define __int8_t_defined 1
1170 typedef __int16_t int16_t ;
1171 #define _INT16_T_DECLARED
1172 typedef __uint16_t uint16_t ;
1173 #define _UINT16_T_DECLARED
1174 #define __int16_t_defined 1
1175 typedef __int32_t int32_t ;
1176 #define _INT32_T_DECLARED
1177 typedef __uint32_t uint32_t ;
1178 #define _UINT32_T_DECLARED
1179 #define __int32_t_defined 1
1180 typedef __int64_t int64_t ;
1181 #define _INT64_T_DECLARED
1182 typedef __uint64_t uint64_t ;
1183 #define _UINT64_T_DECLARED
1184 #define __int64_t_defined 1
1185 typedef __intmax_t intmax_t;
1186 #define _INTMAX_T_DECLARED
1187 typedef __uintmax_t uintmax_t;
1188 #define _UINTMAX_T_DECLARED
1189 typedef __intptr_t intptr_t;
1190 #define _INTPTR_T_DECLARED
1191 typedef __uintptr_t uintptr_t;
1192 #define _UINTPTR_T_DECLARED
1193 #define __MACHINE_ENDIAN_H__
1194 #define _BITS_ENDIAN_H_
1195 #define __BIG_ENDIAN 4321
1196 #define __LITTLE_ENDIAN 1234
1197 #define __BYTE_ORDER __LITTLE_ENDIAN
1198 #define _LITTLE_ENDIAN __LITTLE_ENDIAN
1199 #define _BIG_ENDIAN __BIG_ENDIAN
1200 #define _PDP_ENDIAN __PDP_ENDIAN
1201 #define _BYTE_ORDER __BYTE_ORDER
1202 #define __machine_host_to_from_network_defined
1203 static __inline__ __uint32_t __ntohl(__uint32_t);
1204 static __inline__ __uint16_t __ntohs(__uint16_t);
1205 static __inline__ __uint32_t
1206 __ntohl(__uint32_t _x)
1207 {
1208 __asm__("bswap %0" : "=r" (_x) : "0" (_x));
1209 return _x;
1210 }
1211 static __inline__ __uint16_t
1212 __ntohs(__uint16_t _x)
1213 {
1214 __asm__("xchgb %b0,%h0"
1215 : "=Q" (_x)
1216 : "0" (_x));
1217 return _x;
1218 }
1219 #define __htonl(_x) __ntohl(_x)
1220 #define __htons(_x) __ntohs(_x)
1221 #define _QUAD_HIGHWORD 1
1222 #define _QUAD_LOWWORD 0
1223 #define LITTLE_ENDIAN _LITTLE_ENDIAN
1224 #define BIG_ENDIAN _BIG_ENDIAN
1225 #define PDP_ENDIAN _PDP_ENDIAN
1226 #define BYTE_ORDER _BYTE_ORDER
1227 #define __bswap16(_x) __builtin_bswap16(_x)
1228 #define __bswap32(_x) __builtin_bswap32(_x)
1229 #define __bswap64(_x) __builtin_bswap64(_x)
1230 #define _SYS_SELECT_H
1231 #define _SYS__SIGSET_H_
1232 typedef unsigned long __sigset_t;
1233 #define _SYS__TIMEVAL_H_
1234 typedef __suseconds_t suseconds_t;
1235 #define _SUSECONDS_T_DECLARED
1236 typedef long time_t;
1237 #define __time_t_defined
1238 #define _TIME_T_DECLARED
1239 #define _TIMEVAL_DEFINED
1240 struct timeval {
1241 time_t tv_sec;
1242 suseconds_t tv_usec;
1243 };
1244 #define timerclear(tvp) ((tvp)->tv_sec = (tvp)->tv_usec = 0)
1245 #define timerisset(tvp) ((tvp)->tv_sec || (tvp)->tv_usec)
1246 #define timercmp(tvp,uvp,cmp) (((tvp)->tv_sec == (uvp)->tv_sec) ? ((tvp)->tv_usec cmp (uvp)->tv_usec) : ((tvp)->tv_sec cmp (uvp)->tv_sec))
1247 #define timeradd(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec + (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec + (uvp)->tv_usec; if ((vvp)->tv_usec >= 1000000) { (vvp)->tv_sec++; (vvp)->tv_usec -= 1000000; } } while (0)
1248 #define timersub(tvp,uvp,vvp) do { (vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec; (vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec; if ((vvp)->tv_usec < 0) { (vvp)->tv_sec--; (vvp)->tv_usec += 1000000; } } while (0)
1249 #define _SYS_TIMESPEC_H_
1250 #define _SYS__TIMESPEC_H_
1251 struct timespec {
1252 time_t tv_sec;
1253 long tv_nsec;
1254 };
1255 #define TIMEVAL_TO_TIMESPEC(tv,ts) do { (ts)->tv_sec = (tv)->tv_sec; (ts)->tv_nsec = (tv)->tv_usec * 1000; } while (0)
1256 #define TIMESPEC_TO_TIMEVAL(tv,ts) do { (tv)->tv_sec = (ts)->tv_sec; (tv)->tv_usec = (ts)->tv_nsec / 1000; } while (0)
1257 struct itimerspec {
1258 struct timespec it_interval;
1259 struct timespec it_value;
1260 };
1261 #define _SIGSET_T_DECLARED
1262 typedef __sigset_t sigset_t;
1263 #define _SYS_TYPES_FD_SET
1264 #define FD_SETSIZE 64
1265 typedef unsigned long fd_mask;
1266 #define NFDBITS (sizeof (fd_mask) * 8)
1267 #define _howmany(x,y) (((x)+((y)-1))/(y))
1268 typedef struct _types_fd_set {
1269 fd_mask fds_bits[(((64)+(((sizeof (fd_mask) * 8))-1))/((sizeof (fd_mask) * 8)))];
1270 } _types_fd_set;
1271 #define fd_set _types_fd_set
1272 #define FD_SET(n,p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
1273 #define FD_CLR(n,p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
1274 #define FD_ISSET(n,p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
1275 #define FD_ZERO(p) (__extension__ (void)({ size_t __i; char *__tmp = (char *)p; for (__i = 0; __i < sizeof (*(p)); ++__i) *__tmp++ = 0; }))
1276
1277 int select (int __n, _types_fd_set *__readfds, _types_fd_set *__writefds, _types_fd_set *__exceptfds, struct timeval *__timeout);
1278 int pselect (int __n, _types_fd_set *__readfds, _types_fd_set *__writefds, _types_fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set);
1279
1280 #define physadr physadr_t
1281 #define quad quad_t
1282 typedef __uint32_t in_addr_t;
1283 #define _IN_ADDR_T_DECLARED
1284 typedef __uint16_t in_port_t;
1285 #define _IN_PORT_T_DECLARED
1286 typedef __uintptr_t u_register_t;
1287 typedef unsigned char u_char;
1288 #define __u_char_defined
1289 typedef unsigned short u_short;
1290 #define __u_short_defined
1291 typedef unsigned int u_int;
1292 #define __u_int_defined
1293 typedef unsigned long u_long;
1294 #define __u_long_defined
1295 #define _BSDTYPES_DEFINED
1296 typedef unsigned short ushort;
1297 typedef unsigned int uint;
1298 typedef unsigned long ulong;
1299 typedef __blkcnt_t blkcnt_t;
1300 #define _BLKCNT_T_DECLARED
1301 typedef __blksize_t blksize_t;
1302 #define _BLKSIZE_T_DECLARED
1303 typedef unsigned long clock_t;
1304 #define __clock_t_defined
1305 #define _CLOCK_T_DECLARED
1306 typedef long daddr_t;
1307 #define __daddr_t_defined
1308 typedef char * caddr_t;
1309 #define __caddr_t_defined
1310 typedef __fsblkcnt_t fsblkcnt_t;
1311 typedef __fsfilcnt_t fsfilcnt_t;
1312 #define _FSBLKCNT_T_DECLARED
1313 typedef __id_t id_t;
1314 #define _ID_T_DECLARED
1315 typedef __ino_t ino_t;
1316 #define _INO_T_DECLARED
1317 typedef __off_t off_t;
1318 #define _OFF_T_DECLARED
1319 typedef __dev_t dev_t;
1320 #define _DEV_T_DECLARED
1321 typedef __uid_t uid_t;
1322 #define _UID_T_DECLARED
1323 typedef __gid_t gid_t;
1324 #define _GID_T_DECLARED
1325 typedef __pid_t pid_t;
1326 #define _PID_T_DECLARED
1327 typedef __key_t key_t;
1328 #define _KEY_T_DECLARED
1329 typedef _ssize_t ssize_t;
1330 #define _SSIZE_T_DECLARED
1331 typedef __mode_t mode_t;
1332 #define _MODE_T_DECLARED
1333 typedef __nlink_t nlink_t;
1334 #define _NLINK_T_DECLARED
1335 typedef __clockid_t clockid_t;
1336 #define __clockid_t_defined
1337 #define _CLOCKID_T_DECLARED
1338 typedef __timer_t timer_t;
1339 #define __timer_t_defined
1340 #define _TIMER_T_DECLARED
1341 typedef __useconds_t useconds_t;
1342 #define _USECONDS_T_DECLARED
1343 typedef __int64_t sbintime_t;
1344 #define _SYS__PTHREADTYPES_H_
1345 typedef struct __pthread_t {char __dummy;} *pthread_t;
1346 typedef struct __pthread_mutex_t {char __dummy;} *pthread_mutex_t;
1347 typedef struct __pthread_key_t {char __dummy;} *pthread_key_t;
1348 typedef struct __pthread_attr_t {char __dummy;} *pthread_attr_t;
1349 typedef struct __pthread_mutexattr_t {char __dummy;} *pthread_mutexattr_t;
1350 typedef struct __pthread_condattr_t {char __dummy;} *pthread_condattr_t;
1351 typedef struct __pthread_cond_t {char __dummy;} *pthread_cond_t;
1352 typedef struct __pthread_barrierattr_t {char __dummy;} *pthread_barrierattr_t;
1353 typedef struct __pthread_barrier_t {char __dummy;} *pthread_barrier_t;
1354 typedef struct
1355 {
1356 pthread_mutex_t mutex;
1357 int state;
1358 }
1359 pthread_once_t;
1360 typedef struct __pthread_spinlock_t {char __dummy;} *pthread_spinlock_t;
1361 typedef struct __pthread_rwlock_t {char __dummy;} *pthread_rwlock_t;
1362 typedef struct __pthread_rwlockattr_t {char __dummy;} *pthread_rwlockattr_t;
1363 #define _ENDIAN_H_
1364 #define __LONG_LONG_PAIR(HI,LO) LO, HI
1365 #define _BITS_BYTESWAP_H
1366 static __inline unsigned short
1367 __bswap_16 (unsigned short __x)
1368 {
1369 return (__x >> 8) | (__x << 8);
1370 }
1371 static __inline unsigned int
1372 __bswap_32 (unsigned int __x)
1373 {
1374 return (__bswap_16 (__x & 0xffff) << 16) | (__bswap_16 (__x >> 16));
1375 }
1376 static __inline unsigned long long
1377 __bswap_64 (unsigned long long __x)
1378 {
1379 return (((unsigned long long) __bswap_32 (__x & 0xffffffffull)) << 32) | (__bswap_32 (__x >> 32));
1380 }
1381 #define htobe16(x) __bswap_16(x)
1382 #define htobe32(x) __bswap_32(x)
1383 #define htobe64(x) __bswap_64(x)
1384 #define be16toh(x) __bswap_16(x)
1385 #define be32toh(x) __bswap_32(x)
1386 #define be64toh(x) __bswap_64(x)
1387 #define htole16(x) (x)
1388 #define htole32(x) (x)
1389 #define htole64(x) (x)
1390 #define le16toh(x) (x)
1391 #define le32toh(x) (x)
1392 #define le64toh(x) (x)
1393 #define _WORDSIZE_H 1
1394 #define __WORDSIZE 64
1395 #define __WORDSIZE_COMPAT32 1
1396 #define __timespec_t_defined
1397 typedef struct timespec timespec_t;
1398 #define __timestruc_t_defined
1399 typedef struct timespec timestruc_t;
1400 typedef __loff_t loff_t;
1401 struct flock {
1402 short l_type;
1403 short l_whence;
1404 off_t l_start;
1405 off_t l_len;
1406 pid_t l_pid;
1407 };
1408 #define __BIT_TYPES_DEFINED__ 1
1409 #define __vm_offset_t_defined
1410 typedef unsigned long vm_offset_t;
1411 #define __vm_size_t_defined
1412 typedef unsigned long vm_size_t;
1413 #define __vm_object_t_defined
1414 typedef void *vm_object_t;
1415 #define __addr_t_defined
1416 typedef char *addr_t;
1417 #define _SYS_SYSMACROS_H
1418 static __inline__ int gnu_dev_major(dev_t);
1419 static __inline__ int gnu_dev_minor(dev_t);
1420 static __inline__ dev_t gnu_dev_makedev(int, int);
1421 static __inline__ int
1422 gnu_dev_major(dev_t dev)
1423 {
1424 return (int)(((dev) >> 16) & 0xffff);
1425 }
1426 static __inline__ int
1427 gnu_dev_minor(dev_t dev)
1428 {
1429 return (int)((dev) & 0xffff);
1430 }
1431 static __inline__ dev_t
1432 gnu_dev_makedev(int maj, int min)
1433 {
1434 return (((maj) << 16) | ((min) & 0xffff));
1435 }
1436 #define major(dev) gnu_dev_major(dev)
1437 #define minor(dev) gnu_dev_minor(dev)
1438 #define makedev(maj,min) gnu_dev_makedev(maj, min)
1439 #undef __need_inttypes
1440
1441 typedef __FILE FILE;
1442 #define __FILE_defined
1443 typedef _fpos64_t fpos_t;
1444 #define _SYS_STDIO_H_
1445 #define _flockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_lock ((_LOCK_T *)&(fp)->_lock); })
1446 #define _ftrylockfile(fp) (((fp)->_flags & __SSTR) ? 0 : __cygwin_lock_trylock ((_LOCK_T *)&(fp)->_lock))
1447 #define _funlockfile(fp) ({ if (!((fp)->_flags & __SSTR)) __cygwin_lock_unlock ((_LOCK_T *)&(fp)->_lock); })
1448
1449 ssize_t getline (char **, size_t *, FILE *);
1450 ssize_t getdelim (char **, size_t *, int, FILE *);
1451
1452 #define __SLBF 0x0001
1453 #define __SNBF 0x0002
1454 #define __SRD 0x0004
1455 #define __SWR 0x0008
1456 #define __SRW 0x0010
1457 #define __SEOF 0x0020
1458 #define __SERR 0x0040
1459 #define __SMBF 0x0080
1460 #define __SAPP 0x0100
1461 #define __SSTR 0x0200
1462 #define __SOPT 0x0400
1463 #define __SNPT 0x0800
1464 #define __SOFF 0x1000
1465 #define __SORD 0x2000
1466 #define __SCLE 0x4000
1467 #define __SL64 0x8000
1468 #define __SNLK 0x0001
1469 #define __SWID 0x2000
1470 #define _IOFBF 0
1471 #define _IOLBF 1
1472 #define _IONBF 2
1473 #define EOF (-1)
1474 #define BUFSIZ 1024
1475 #define FOPEN_MAX 20
1476 #define FILENAME_MAX __FILENAME_MAX__
1477 #define L_tmpnam FILENAME_MAX
1478 #define P_tmpdir "/tmp"
1479 #define SEEK_SET 0
1480 #define SEEK_CUR 1
1481 #define SEEK_END 2
1482 #define TMP_MAX 26
1483 #define stdin (_REENT->_stdin)
1484 #define stdout (_REENT->_stdout)
1485 #define stderr (_REENT->_stderr)
1486 #define _stdin_r(x) ((x)->_stdin)
1487 #define _stdout_r(x) ((x)->_stdout)
1488 #define _stderr_r(x) ((x)->_stderr)
1489 #define __VALIST __gnuc_va_list
1490 char * ctermid (char *);
1491 char * cuserid (char *);
1492 FILE * tmpfile (void);
1493 char * tmpnam (char *);
1494 char * tempnam (const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
1495 int fclose (FILE *);
1496 int fflush (FILE *);
1497 FILE * freopen (const char *__restrict, const char *__restrict, FILE *__restrict);
1498 void setbuf (FILE *__restrict, char *__restrict);
1499 int setvbuf (FILE *__restrict, char *__restrict, int, size_t);
1500 int fprintf (FILE *__restrict, const char *__restrict, ...)
1501 __attribute__ ((__format__ (__printf__, 2, 3)));
1502 int fscanf (FILE *__restrict, const char *__restrict, ...)
1503 __attribute__ ((__format__ (__scanf__, 2, 3)));
1504 int printf (const char *__restrict, ...)
1505 __attribute__ ((__format__ (__printf__, 1, 2)));
1506 int scanf (const char *__restrict, ...)
1507 __attribute__ ((__format__ (__scanf__, 1, 2)));
1508 int sscanf (const char *__restrict, const char *__restrict, ...)
1509 __attribute__ ((__format__ (__scanf__, 2, 3)));
1510 int vfprintf (FILE *__restrict, const char *__restrict, __gnuc_va_list)
1511 __attribute__ ((__format__ (__printf__, 2, 0)));
1512 int vprintf (const char *, __gnuc_va_list)
1513 __attribute__ ((__format__ (__printf__, 1, 0)));
1514 int vsprintf (char *__restrict, const char *__restrict, __gnuc_va_list)
1515 __attribute__ ((__format__ (__printf__, 2, 0)));
1516 int fgetc (FILE *);
1517 char * fgets (char *__restrict, int, FILE *__restrict);
1518 int fputc (int, FILE *);
1519 int fputs (const char *__restrict, FILE *__restrict);
1520 int getc (FILE *);
1521 int getchar (void);
1522 char * gets (char *);
1523 int putc (int, FILE *);
1524 int putchar (int);
1525 int puts (const char *);
1526 int ungetc (int, FILE *);
1527 size_t fread (void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1528 size_t fwrite (const void *__restrict , size_t _size, size_t _n, FILE *);
1529 int fgetpos (FILE *__restrict, fpos_t *__restrict);
1530 int fseek (FILE *, long, int);
1531 int fsetpos (FILE *, const fpos_t *);
1532 long ftell ( FILE *);
1533 void rewind (FILE *);
1534 void clearerr (FILE *);
1535 int feof (FILE *);
1536 int ferror (FILE *);
1537 void perror (const char *);
1538 FILE * fopen (const char *__restrict _name, const char *__restrict _type);
1539 int sprintf (char *__restrict, const char *__restrict, ...)
1540 __attribute__ ((__format__ (__printf__, 2, 3)));
1541 int remove (const char *);
1542 int rename (const char *, const char *);
1543 int fseeko (FILE *, off_t, int);
1544 off_t ftello (FILE *);
1545 int fcloseall (void);
1546 int snprintf (char *__restrict, size_t, const char *__restrict, ...)
1547 __attribute__ ((__format__ (__printf__, 3, 4)));
1548 int vsnprintf (char *__restrict, size_t, const char *__restrict, __gnuc_va_list)
1549 __attribute__ ((__format__ (__printf__, 3, 0)));
1550 int vfscanf (FILE *__restrict, const char *__restrict, __gnuc_va_list)
1551 __attribute__ ((__format__ (__scanf__, 2, 0)));
1552 int vscanf (const char *, __gnuc_va_list)
1553 __attribute__ ((__format__ (__scanf__, 1, 0)));
1554 int vsscanf (const char *__restrict, const char *__restrict, __gnuc_va_list)
1555 __attribute__ ((__format__ (__scanf__, 2, 0)));
1556 int asprintf (char **__restrict, const char *__restrict, ...)
1557 __attribute__ ((__format__ (__printf__, 2, 3)));
1558 int vasprintf (char **, const char *, __gnuc_va_list)
1559 __attribute__ ((__format__ (__printf__, 2, 0)));
1560 int asiprintf (char **, const char *, ...)
1561 __attribute__ ((__format__ (__printf__, 2, 3)));
1562 char * asniprintf (char *, size_t *, const char *, ...)
1563 __attribute__ ((__format__ (__printf__, 3, 4)));
1564 char * asnprintf (char *__restrict, size_t *__restrict, const char *__restrict, ...)
1565 __attribute__ ((__format__ (__printf__, 3, 4)));
1566 int diprintf (int, const char *, ...)
1567 __attribute__ ((__format__ (__printf__, 2, 3)));
1568 int fiprintf (FILE *, const char *, ...)
1569 __attribute__ ((__format__ (__printf__, 2, 3)));
1570 int fiscanf (FILE *, const char *, ...)
1571 __attribute__ ((__format__ (__scanf__, 2, 3)));
1572 int iprintf (const char *, ...)
1573 __attribute__ ((__format__ (__printf__, 1, 2)));
1574 int iscanf (const char *, ...)
1575 __attribute__ ((__format__ (__scanf__, 1, 2)));
1576 int siprintf (char *, const char *, ...)
1577 __attribute__ ((__format__ (__printf__, 2, 3)));
1578 int siscanf (const char *, const char *, ...)
1579 __attribute__ ((__format__ (__scanf__, 2, 3)));
1580 int sniprintf (char *, size_t, const char *, ...)
1581 __attribute__ ((__format__ (__printf__, 3, 4)));
1582 int vasiprintf (char **, const char *, __gnuc_va_list)
1583 __attribute__ ((__format__ (__printf__, 2, 0)));
1584 char * vasniprintf (char *, size_t *, const char *, __gnuc_va_list)
1585 __attribute__ ((__format__ (__printf__, 3, 0)));
1586 char * vasnprintf (char *, size_t *, const char *, __gnuc_va_list)
1587 __attribute__ ((__format__ (__printf__, 3, 0)));
1588 int vdiprintf (int, const char *, __gnuc_va_list)
1589 __attribute__ ((__format__ (__printf__, 2, 0)));
1590 int vfiprintf (FILE *, const char *, __gnuc_va_list)
1591 __attribute__ ((__format__ (__printf__, 2, 0)));
1592 int vfiscanf (FILE *, const char *, __gnuc_va_list)
1593 __attribute__ ((__format__ (__scanf__, 2, 0)));
1594 int viprintf (const char *, __gnuc_va_list)
1595 __attribute__ ((__format__ (__printf__, 1, 0)));
1596 int viscanf (const char *, __gnuc_va_list)
1597 __attribute__ ((__format__ (__scanf__, 1, 0)));
1598 int vsiprintf (char *, const char *, __gnuc_va_list)
1599 __attribute__ ((__format__ (__printf__, 2, 0)));
1600 int vsiscanf (const char *, const char *, __gnuc_va_list)
1601 __attribute__ ((__format__ (__scanf__, 2, 0)));
1602 int vsniprintf (char *, size_t, const char *, __gnuc_va_list)
1603 __attribute__ ((__format__ (__printf__, 3, 0)));
1604 FILE * fdopen (int, const char *);
1605 int fileno (FILE *);
1606 int pclose (FILE *);
1607 FILE * popen (const char *, const char *);
1608 void setbuffer (FILE *, char *, int);
1609 int setlinebuf (FILE *);
1610 int getw (FILE *);
1611 int putw (int, FILE *);
1612 int getc_unlocked (FILE *);
1613 int getchar_unlocked (void);
1614 void flockfile (FILE *);
1615 int ftrylockfile (FILE *);
1616 void funlockfile (FILE *);
1617 int putc_unlocked (int, FILE *);
1618 int putchar_unlocked (int);
1619 int dprintf (int, const char *__restrict, ...)
1620 __attribute__ ((__format__ (__printf__, 2, 3)));
1621 FILE * fmemopen (void *__restrict, size_t, const char *__restrict);
1622 FILE * open_memstream (char **, size_t *);
1623 int vdprintf (int, const char *__restrict, __gnuc_va_list)
1624 __attribute__ ((__format__ (__printf__, 2, 0)));
1625 int renameat (int, const char *, int, const char *);
1626 int renameat2 (int, const char *, int, const char *, unsigned int);
1627 int _asiprintf_r (struct _reent *, char **, const char *, ...)
1628 __attribute__ ((__format__ (__printf__, 3, 4)));
1629 char * _asniprintf_r (struct _reent *, char *, size_t *, const char *, ...)
1630 __attribute__ ((__format__ (__printf__, 4, 5)));
1631 char * _asnprintf_r (struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict, ...)
1632 __attribute__ ((__format__ (__printf__, 4, 5)));
1633 int _asprintf_r (struct _reent *, char **__restrict, const char *__restrict, ...)
1634 __attribute__ ((__format__ (__printf__, 3, 4)));
1635 int _diprintf_r (struct _reent *, int, const char *, ...)
1636 __attribute__ ((__format__ (__printf__, 3, 4)));
1637 int _dprintf_r (struct _reent *, int, const char *__restrict, ...)
1638 __attribute__ ((__format__ (__printf__, 3, 4)));
1639 int _fclose_r (struct _reent *, FILE *);
1640 int _fcloseall_r (struct _reent *);
1641 FILE * _fdopen_r (struct _reent *, int, const char *);
1642 int _fflush_r (struct _reent *, FILE *);
1643 int _fgetc_r (struct _reent *, FILE *);
1644 int _fgetc_unlocked_r (struct _reent *, FILE *);
1645 char * _fgets_r (struct _reent *, char *__restrict, int, FILE *__restrict);
1646 char * _fgets_unlocked_r (struct _reent *, char *__restrict, int, FILE *__restrict);
1647 int _fgetpos_r (struct _reent *, FILE *, fpos_t *);
1648 int _fsetpos_r (struct _reent *, FILE *, const fpos_t *);
1649 int _fiprintf_r (struct _reent *, FILE *, const char *, ...)
1650 __attribute__ ((__format__ (__printf__, 3, 4)));
1651 int _fiscanf_r (struct _reent *, FILE *, const char *, ...)
1652 __attribute__ ((__format__ (__scanf__, 3, 4)));
1653 FILE * _fmemopen_r (struct _reent *, void *__restrict, size_t, const char *__restrict);
1654 FILE * _fopen_r (struct _reent *, const char *__restrict, const char *__restrict);
1655 FILE * _freopen_r (struct _reent *, const char *__restrict, const char *__restrict, FILE *__restrict);
1656 int _fprintf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...)
1657 __attribute__ ((__format__ (__printf__, 3, 4)));
1658 int _fpurge_r (struct _reent *, FILE *);
1659 int _fputc_r (struct _reent *, int, FILE *);
1660 int _fputc_unlocked_r (struct _reent *, int, FILE *);
1661 int _fputs_r (struct _reent *, const char *__restrict, FILE *__restrict);
1662 int _fputs_unlocked_r (struct _reent *, const char *__restrict, FILE *__restrict);
1663 size_t _fread_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1664 size_t _fread_unlocked_r (struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1665 int _fscanf_r (struct _reent *, FILE *__restrict, const char *__restrict, ...)
1666 __attribute__ ((__format__ (__scanf__, 3, 4)));
1667 int _fseek_r (struct _reent *, FILE *, long, int);
1668 int _fseeko_r (struct _reent *, FILE *, _off_t, int);
1669 long _ftell_r (struct _reent *, FILE *);
1670 _off_t _ftello_r (struct _reent *, FILE *);
1671 void _rewind_r (struct _reent *, FILE *);
1672 size_t _fwrite_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1673 size_t _fwrite_unlocked_r (struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1674 int _getc_r (struct _reent *, FILE *);
1675 int _getc_unlocked_r (struct _reent *, FILE *);
1676 int _getchar_r (struct _reent *);
1677 int _getchar_unlocked_r (struct _reent *);
1678 char * _gets_r (struct _reent *, char *);
1679 int _iprintf_r (struct _reent *, const char *, ...)
1680 __attribute__ ((__format__ (__printf__, 2, 3)));
1681 int _iscanf_r (struct _reent *, const char *, ...)
1682 __attribute__ ((__format__ (__scanf__, 2, 3)));
1683 FILE * _open_memstream_r (struct _reent *, char **, size_t *);
1684 void _perror_r (struct _reent *, const char *);
1685 int _printf_r (struct _reent *, const char *__restrict, ...)
1686 __attribute__ ((__format__ (__printf__, 2, 3)));
1687 int _putc_r (struct _reent *, int, FILE *);
1688 int _putc_unlocked_r (struct _reent *, int, FILE *);
1689 int _putchar_unlocked_r (struct _reent *, int);
1690 int _putchar_r (struct _reent *, int);
1691 int _puts_r (struct _reent *, const char *);
1692 int _remove_r (struct _reent *, const char *);
1693 int _rename_r (struct _reent *,
1694 const char *_old, const char *_new);
1695 int _scanf_r (struct _reent *, const char *__restrict, ...)
1696 __attribute__ ((__format__ (__scanf__, 2, 3)));
1697 int _siprintf_r (struct _reent *, char *, const char *, ...)
1698 __attribute__ ((__format__ (__printf__, 3, 4)));
1699 int _siscanf_r (struct _reent *, const char *, const char *, ...)
1700 __attribute__ ((__format__ (__scanf__, 3, 4)));
1701 int _sniprintf_r (struct _reent *, char *, size_t, const char *, ...)
1702 __attribute__ ((__format__ (__printf__, 4, 5)));
1703 int _snprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, ...)
1704 __attribute__ ((__format__ (__printf__, 4, 5)));
1705 int _sprintf_r (struct _reent *, char *__restrict, const char *__restrict, ...)
1706 __attribute__ ((__format__ (__printf__, 3, 4)));
1707 int _sscanf_r (struct _reent *, const char *__restrict, const char *__restrict, ...)
1708 __attribute__ ((__format__ (__scanf__, 3, 4)));
1709 char * _tempnam_r (struct _reent *, const char *, const char *);
1710 FILE * _tmpfile_r (struct _reent *);
1711 char * _tmpnam_r (struct _reent *, char *);
1712 int _ungetc_r (struct _reent *, int, FILE *);
1713 int _vasiprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
1714 __attribute__ ((__format__ (__printf__, 3, 0)));
1715 char * _vasniprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
1716 __attribute__ ((__format__ (__printf__, 4, 0)));
1717 char * _vasnprintf_r (struct _reent*, char *, size_t *, const char *, __gnuc_va_list)
1718 __attribute__ ((__format__ (__printf__, 4, 0)));
1719 int _vasprintf_r (struct _reent *, char **, const char *, __gnuc_va_list)
1720 __attribute__ ((__format__ (__printf__, 3, 0)));
1721 int _vdiprintf_r (struct _reent *, int, const char *, __gnuc_va_list)
1722 __attribute__ ((__format__ (__printf__, 3, 0)));
1723 int _vdprintf_r (struct _reent *, int, const char *__restrict, __gnuc_va_list)
1724 __attribute__ ((__format__ (__printf__, 3, 0)));
1725 int _vfiprintf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
1726 __attribute__ ((__format__ (__printf__, 3, 0)));
1727 int _vfiscanf_r (struct _reent *, FILE *, const char *, __gnuc_va_list)
1728 __attribute__ ((__format__ (__scanf__, 3, 0)));
1729 int _vfprintf_r (struct _reent *, FILE *__restrict, const char *__restrict, __gnuc_va_list)
1730 __attribute__ ((__format__ (__printf__, 3, 0)));
1731 int _vfscanf_r (struct _reent *, FILE *__restrict, const char *__restrict, __gnuc_va_list)
1732 __attribute__ ((__format__ (__scanf__, 3, 0)));
1733 int _viprintf_r (struct _reent *, const char *, __gnuc_va_list)
1734 __attribute__ ((__format__ (__printf__, 2, 0)));
1735 int _viscanf_r (struct _reent *, const char *, __gnuc_va_list)
1736 __attribute__ ((__format__ (__scanf__, 2, 0)));
1737 int _vprintf_r (struct _reent *, const char *__restrict, __gnuc_va_list)
1738 __attribute__ ((__format__ (__printf__, 2, 0)));
1739 int _vscanf_r (struct _reent *, const char *__restrict, __gnuc_va_list)
1740 __attribute__ ((__format__ (__scanf__, 2, 0)));
1741 int _vsiprintf_r (struct _reent *, char *, const char *, __gnuc_va_list)
1742 __attribute__ ((__format__ (__printf__, 3, 0)));
1743 int _vsiscanf_r (struct _reent *, const char *, const char *, __gnuc_va_list)
1744 __attribute__ ((__format__ (__scanf__, 3, 0)));
1745 int _vsniprintf_r (struct _reent *, char *, size_t, const char *, __gnuc_va_list)
1746 __attribute__ ((__format__ (__printf__, 4, 0)));
1747 int _vsnprintf_r (struct _reent *, char *__restrict, size_t, const char *__restrict, __gnuc_va_list)
1748 __attribute__ ((__format__ (__printf__, 4, 0)));
1749 int _vsprintf_r (struct _reent *, char *__restrict, const char *__restrict, __gnuc_va_list)
1750 __attribute__ ((__format__ (__printf__, 3, 0)));
1751 int _vsscanf_r (struct _reent *, const char *__restrict, const char *__restrict, __gnuc_va_list)
1752 __attribute__ ((__format__ (__scanf__, 3, 0)));
1753 int fpurge (FILE *);
1754 ssize_t __getdelim (char **, size_t *, int, FILE *);
1755 ssize_t __getline (char **, size_t *, FILE *);
1756 void clearerr_unlocked (FILE *);
1757 int feof_unlocked (FILE *);
1758 int ferror_unlocked (FILE *);
1759 int fileno_unlocked (FILE *);
1760 int fflush_unlocked (FILE *);
1761 int fgetc_unlocked (FILE *);
1762 int fputc_unlocked (int, FILE *);
1763 size_t fread_unlocked (void *__restrict, size_t _size, size_t _n, FILE *__restrict);
1764 size_t fwrite_unlocked (const void *__restrict , size_t _size, size_t _n, FILE *);
1765 char * fgets_unlocked (char *__restrict, int, FILE *__restrict);
1766 int fputs_unlocked (const char *__restrict, FILE *__restrict);
1767 int __srget_r (struct _reent *, FILE *);
1768 int __swbuf_r (struct _reent *, int, FILE *);
1769 FILE *funopen (const void *__cookie,
1770 int (*__readfn)(void *__c, char *__buf,
1771 size_t __n),
1772 int (*__writefn)(void *__c, const char *__buf,
1773 size_t __n),
1774 _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
1775 int (*__closefn)(void *__c));
1776 FILE *_funopen_r (struct _reent *, const void *__cookie,
1777 int (*__readfn)(void *__c, char *__buf,
1778 size_t __n),
1779 int (*__writefn)(void *__c, const char *__buf,
1780 size_t __n),
1781 _fpos64_t (*__seekfn)(void *__c, _fpos64_t __off, int __whence),
1782 int (*__closefn)(void *__c));
1783 #define fropen(__cookie,__fn) funopen(__cookie, __fn, (int (*)())0, (fpos_t (*)())0, (int (*)())0)
1784 #define fwopen(__cookie,__fn) funopen(__cookie, (int (*)())0, __fn, (fpos_t (*)())0, (int (*)())0)
1785 typedef ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n);
1786 typedef ssize_t cookie_write_function_t(void *__cookie, const char *__buf,
1787 size_t __n);
1788 typedef int cookie_seek_function_t(void *__cookie, _off64_t *__off,
1789 int __whence);
1790 typedef int cookie_close_function_t(void *__cookie);
1791 typedef struct
1792 {
1793 cookie_read_function_t *read;
1794 cookie_write_function_t *write;
1795 cookie_seek_function_t *seek;
1796 cookie_close_function_t *close;
1797 } cookie_io_functions_t;
1798 FILE *fopencookie (void *__cookie,
1799 const char *__mode, cookie_io_functions_t __functions);
1800 FILE *_fopencookie_r (struct _reent *, void *__cookie,
1801 const char *__mode, cookie_io_functions_t __functions);
1802 #define __sgetc_raw_r(__ptr,__f) (--(__f)->_r < 0 ? __srget_r(__ptr, __f) : (int)(*(__f)->_p++))
1803 static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p);
1804 static __inline__ int __sgetc_r(struct _reent *__ptr, FILE *__p)
1805 {
1806 int __c = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
1807 if ((__p->_flags & 0x4000) && (__c == '\r'))
1808 {
1809 int __c2 = (--(__p)->_r < 0 ? __srget_r(__ptr, __p) : (int)(*(__p)->_p++));
1810 if (__c2 == '\n')
1811 __c = __c2;
1812 else
1813 ungetc(__c2, __p);
1814 }
1815 return __c;
1816 }
1817 static __inline__ int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
1818 if ((_p->_flags & 0x4000) && _c == '\n')
1819 __sputc_r (_ptr, '\r', _p);
1820 if (--_p->_w >= 0 || (_p->_w >= _p->_lbfsize && (char)_c != '\n'))
1821 return (*_p->_p++ = _c);
1822 else
1823 return (__swbuf_r(_ptr, _c, _p));
1824 }
1825 #define __sfeof(p) ((int)(((p)->_flags & __SEOF) != 0))
1826 #define __sferror(p) ((int)(((p)->_flags & __SERR) != 0))
1827 #define __sclearerr(p) ((void)((p)->_flags &= ~(__SERR|__SEOF)))
1828 #define __sfileno(p) ((p)->_file)
1829 #define feof(p) __sfeof(p)
1830 #define ferror(p) __sferror(p)
1831 #define clearerr(p) __sclearerr(p)
1832 #define feof_unlocked(p) __sfeof(p)
1833 #define ferror_unlocked(p) __sferror(p)
1834 #define clearerr_unlocked(p) __sclearerr(p)
1835 static __inline int
1836 _getchar_unlocked(void)
1837 {
1838 struct _reent *_ptr;
1839 _ptr = (__getreent());
1840 return (__sgetc_r(_ptr, ((_ptr)->_stdin)));
1841 }
1842 static __inline int
1843 _putchar_unlocked(int _c)
1844 {
1845 struct _reent *_ptr;
1846 _ptr = (__getreent());
1847 return (__sputc_r(_ptr, _c, ((_ptr)->_stdout)));
1848 }
1849 #define getchar_unlocked() _getchar_unlocked()
1850 #define putchar_unlocked(_c) _putchar_unlocked(_c)
1851 #define fast_putc(x,p) (--(p)->_w < 0 ? __swbuf_r(_REENT, (int)(x), p) == EOF : (*(p)->_p = (x), (p)->_p++, 0))
1852 #define L_cuserid 9
1853 #define L_ctermid 16
1854
1855 #define _SSP_STDIO_H_
1856 #define _SSP_SSP_H_
1857 #define __ssp_real_(fun) __ssp_real_ ## fun
1858 #define __ssp_real(fun) __ssp_real_(fun)
1859 #define __ssp_inline extern __inline__ __attribute__((__always_inline__, __gnu_inline__))
1860 #define __ssp_bos(ptr) __builtin_object_size(ptr, __SSP_FORTIFY_LEVEL > 1)
1861 #define __ssp_bos0(ptr) __builtin_object_size(ptr, 0)
1862 #define __ssp_check(buf,len,bos) if (bos(buf) != (size_t)-1 && len > bos(buf)) __chk_fail()
1863 #define __ssp_decl(rtype,fun,args) rtype __ssp_real_(fun) args __asm__(__ASMNAME(#fun)); __ssp_inline rtype fun args
1864 #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; }
1865 #define __ssp_redirect(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos)
1866 #define __ssp_redirect0(rtype,fun,args,call) __ssp_redirect_raw(rtype, fun, args, call, 1, __ssp_bos0)
1867 #define __ssp_overlap(a,b,l) (((a) <= (b) && (b) < (a) + (l)) || ((b) <= (a) && (a) < (b) + (l)))
1868
1869 void __stack_chk_fail(void) __attribute__((__noreturn__));
1870 void __chk_fail(void) __attribute__((__noreturn__));
1871
1872
1873 int __sprintf_chk(char *__restrict, int, size_t, const char *__restrict, ...)
1874 __attribute__((__format__ (__printf__, 4, 5)));
1875 int __vsprintf_chk(char *__restrict, int, size_t, const char *__restrict,
1876 __va_list)
1877 __attribute__((__format__ (__printf__, 4, 0)));
1878 int __snprintf_chk(char *__restrict, size_t, int, size_t,
1879 const char *__restrict, ...)
1880 __attribute__((__format__ (__printf__, 5, 6)));
1881 int __vsnprintf_chk(char *__restrict, size_t, int, size_t,
1882 const char *__restrict, __va_list)
1883 __attribute__((__format__ (__printf__, 5, 0)));
1884 char *__gets_chk(char *, size_t);
1885
1886 #define sprintf(str,...) __builtin___sprintf_chk(str, 0, __ssp_bos(str), __VA_ARGS__)
1887 #define vsprintf(str,fmt,ap) __builtin___vsprintf_chk(str, 0, __ssp_bos(str), fmt, ap)
1888 #define snprintf(str,len,...) __builtin___snprintf_chk(str, len, 0, __ssp_bos(str), __VA_ARGS__)
1889 #define vsnprintf(str,len,fmt,ap) __builtin___vsnprintf_chk(str, len, 0, __ssp_bos(str), fmt, ap)
1890 #define gets(str) __gets_chk(str, __ssp_bos(str))
1891 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)
1892 {
1893 if (__len > 0)
1894 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1895 return __ssp_real_fgets(__buf, __len, __fp);
1896 }
1897 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)
1898 {
1899 if (__len > 0)
1900 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && (size_t)__len > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
1901 return __ssp_real_fgets_unlocked(__buf, __len, __fp);
1902 }
1903 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)
1904 {
1905 if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
1906 return __ssp_real_fread(__ptr, __size, __n, __fp);
1907 }
1908 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)
1909 {
1910 if (__builtin_object_size(__ptr, 0) != (size_t)-1 && __size * __n > __builtin_object_size(__ptr, 0)) __chk_fail();
1911 return __ssp_real_fread_unlocked(__ptr, __size, __n, __fp);
1912 }
1913 #define _SYS_STAT_H
1914 #define _TIME_H_
1915 #define __need_size_t
1916 #define __need_NULL
1917 #undef __need_ptrdiff_t
1918 #undef __need_size_t
1919 #undef __need_wchar_t
1920 #undef NULL
1921 #define NULL ((void *)0)
1922 #undef __need_NULL
1923 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
1924 #define _MACHTIME_H_
1925 #define _CLOCKS_PER_SEC_ 1000
1926 #define CLOCKS_PER_SEC _CLOCKS_PER_SEC_
1927 #define CLK_TCK CLOCKS_PER_SEC
1928 #define _XLOCALE_H
1929 struct __locale_t;
1930 typedef struct __locale_t *locale_t;
1931
1932 struct tm
1933 {
1934 int tm_sec;
1935 int tm_min;
1936 int tm_hour;
1937 int tm_mday;
1938 int tm_mon;
1939 int tm_year;
1940 int tm_wday;
1941 int tm_yday;
1942 int tm_isdst;
1943 long tm_gmtoff;
1944 const char *tm_zone;
1945 };
1946 clock_t clock (void);
1947 double difftime (time_t _time2, time_t _time1);
1948 time_t mktime (struct tm *_timeptr);
1949 time_t time (time_t *_timer);
1950 char *asctime (const struct tm *_tblock);
1951 char *ctime (const time_t *_time);
1952 struct tm *gmtime (const time_t *_timer);
1953 struct tm *localtime (const time_t *_timer);
1954 size_t strftime (char *__restrict _s,
1955 size_t _maxsize, const char *__restrict _fmt,
1956 const struct tm *__restrict _t);
1957 extern size_t strftime_l (char *__restrict _s, size_t _maxsize,
1958 const char *__restrict _fmt,
1959 const struct tm *__restrict _t, locale_t _l);
1960 char *asctime_r (const struct tm *__restrict,
1961 char *__restrict);
1962 char *ctime_r (const time_t *, char *);
1963 struct tm *gmtime_r (const time_t *__restrict,
1964 struct tm *__restrict);
1965 struct tm *localtime_r (const time_t *__restrict,
1966 struct tm *__restrict);
1967
1968 char *strptime (const char *__restrict,
1969 const char *__restrict,
1970 struct tm *__restrict);
1971 char *strptime_l (const char *__restrict, const char *__restrict,
1972 struct tm *__restrict, locale_t);
1973 void tzset (void);
1974 void _tzset_r (struct _reent *);
1975 typedef struct __tzrule_struct
1976 {
1977 char ch;
1978 int m;
1979 int n;
1980 int d;
1981 int s;
1982 time_t change;
1983 long offset;
1984 } __tzrule_type;
1985 typedef struct __tzinfo_struct
1986 {
1987 int __tznorth;
1988 int __tzyear;
1989 __tzrule_type __tzrule[2];
1990 } __tzinfo_type;
1991 __tzinfo_type *__gettzinfo (void);
1992 extern __attribute__((dllimport)) long _timezone;
1993 extern __attribute__((dllimport)) int _daylight;
1994 extern __attribute__((dllimport)) char *_tzname[2];
1995 #define tzname _tzname
1996 #define _CYGWIN_TIME_H
1997 int __attribute__((__cdecl__)) clock_setres (clockid_t, struct timespec *);
1998 time_t __attribute__((__cdecl__)) timelocal (struct tm *);
1999 time_t __attribute__((__cdecl__)) timegm (struct tm *);
2000 #define TIMER_RELTIME 0
2001 extern int stime (const time_t *);
2002 extern int daylight __asm__ ( "_daylight");
2003 extern long timezone __asm__ ( "_timezone");
2004 #define _SIGNAL_H_
2005 #define _SYS_SIGNAL_H
2006 #define _CYGWIN_SIGNAL_H
2007 struct _uc_fpxreg {
2008 __uint16_t significand[4];
2009 __uint16_t exponent;
2010 __uint16_t padding[3];
2011 };
2012 struct _uc_xmmreg {
2013 __uint32_t element[4];
2014 };
2015 struct _fpstate
2016 {
2017 __uint16_t cwd;
2018 __uint16_t swd;
2019 __uint16_t ftw;
2020 __uint16_t fop;
2021 __uint64_t rip;
2022 __uint64_t rdp;
2023 __uint32_t mxcsr;
2024 __uint32_t mxcr_mask;
2025 struct _uc_fpxreg st[8];
2026 struct _uc_xmmreg xmm[16];
2027 __uint32_t padding[24];
2028 };
2029 struct __attribute__ ((__aligned__ (16))) __mcontext
2030 {
2031 __uint64_t p1home;
2032 __uint64_t p2home;
2033 __uint64_t p3home;
2034 __uint64_t p4home;
2035 __uint64_t p5home;
2036 __uint64_t p6home;
2037 __uint32_t ctxflags;
2038 __uint32_t mxcsr;
2039 __uint16_t cs;
2040 __uint16_t ds;
2041 __uint16_t es;
2042 __uint16_t fs;
2043 __uint16_t gs;
2044 __uint16_t ss;
2045 __uint32_t eflags;
2046 __uint64_t dr0;
2047 __uint64_t dr1;
2048 __uint64_t dr2;
2049 __uint64_t dr3;
2050 __uint64_t dr6;
2051 __uint64_t dr7;
2052 __uint64_t rax;
2053 __uint64_t rcx;
2054 __uint64_t rdx;
2055 __uint64_t rbx;
2056 __uint64_t rsp;
2057 __uint64_t rbp;
2058 __uint64_t rsi;
2059 __uint64_t rdi;
2060 __uint64_t r8;
2061 __uint64_t r9;
2062 __uint64_t r10;
2063 __uint64_t r11;
2064 __uint64_t r12;
2065 __uint64_t r13;
2066 __uint64_t r14;
2067 __uint64_t r15;
2068 __uint64_t rip;
2069 struct _fpstate fpregs;
2070 __uint64_t vregs[52];
2071 __uint64_t vcx;
2072 __uint64_t dbc;
2073 __uint64_t btr;
2074 __uint64_t bfr;
2075 __uint64_t etr;
2076 __uint64_t efr;
2077 __uint64_t oldmask;
2078 __uint64_t cr2;
2079 };
2080 #define __COPY_CONTEXT_SIZE 816
2081 typedef union sigval
2082 {
2083 int sival_int;
2084 void *sival_ptr;
2085 } sigval_t;
2086 typedef struct sigevent
2087 {
2088 sigval_t sigev_value;
2089 int sigev_signo;
2090 int sigev_notify;
2091 void (*sigev_notify_function) (sigval_t);
2092 pthread_attr_t *sigev_notify_attributes;
2093 } sigevent_t;
2094 #pragma pack(push,4)
2095 struct _sigcommune
2096 {
2097 __uint32_t _si_code;
2098 void *_si_read_handle;
2099 void *_si_write_handle;
2100 void *_si_process_handle;
2101 __extension__ union
2102 {
2103 struct {
2104 int _si_fd;
2105 uint32_t _si_flags;
2106 };
2107 int64_t _si_pipe_unique_id;
2108 char *_si_str;
2109 };
2110 };
2111 #define __SI_PAD_SIZE 32
2112 typedef struct
2113 {
2114 int si_signo;
2115 int si_code;
2116 pid_t si_pid;
2117 uid_t si_uid;
2118 int si_errno;
2119 __extension__ union
2120 {
2121 __uint32_t __pad[32];
2122 struct _sigcommune _si_commune;
2123 __extension__ struct
2124 {
2125 __extension__ union
2126 {
2127 sigval_t si_sigval;
2128 sigval_t si_value;
2129 };
2130 __extension__ struct
2131 {
2132 timer_t si_tid;
2133 unsigned int si_overrun;
2134 };
2135 };
2136 __extension__ struct
2137 {
2138 int si_status;
2139 clock_t si_utime;
2140 clock_t si_stime;
2141 };
2142 void *si_addr;
2143 };
2144 } siginfo_t;
2145 #pragma pack(pop)
2146 enum
2147 {
2148 SI_USER = 0,
2149 SI_ASYNCIO = 2,
2150 SI_MESGQ,
2151 SI_TIMER,
2152 SI_QUEUE,
2153 SI_KERNEL,
2154 ILL_ILLOPC = 7,
2155 ILL_ILLOPN,
2156 ILL_ILLADR,
2157 ILL_ILLTRP,
2158 ILL_PRVOPC,
2159 ILL_PRVREG,
2160 ILL_COPROC,
2161 ILL_BADSTK,
2162 FPE_INTDIV = 15,
2163 FPE_INTOVF,
2164 FPE_FLTDIV,
2165 FPE_FLTOVF,
2166 FPE_FLTUND,
2167 FPE_FLTRES,
2168 FPE_FLTINV,
2169 FPE_FLTSUB,
2170 SEGV_MAPERR = 23,
2171 SEGV_ACCERR,
2172 BUS_ADRALN = 25,
2173 BUS_ADRERR,
2174 BUS_OBJERR,
2175 CLD_EXITED = 28,
2176 CLD_KILLED,
2177 CLD_DUMPED,
2178 CLD_TRAPPED,
2179 CLD_STOPPED,
2180 CLD_CONTINUED
2181 };
2182 #define SI_USER SI_USER
2183 #define SI_ASYNCIO SI_ASYNCIO
2184 #define SI_MESGQ SI_MESGQ
2185 #define SI_TIMER SI_TIMER
2186 #define SI_QUEUE SI_QUEUE
2187 #define SI_KERNEL SI_KERNEL
2188 #define ILL_ILLOPC ILL_ILLOPC
2189 #define ILL_ILLOPN ILL_ILLOPN
2190 #define ILL_ILLADR ILL_ILLADR
2191 #define ILL_ILLTRP ILL_ILLTRP
2192 #define ILL_PRVOPC ILL_PRVOPC
2193 #define ILL_PRVREG ILL_PRVREG
2194 #define ILL_COPROC ILL_COPROC
2195 #define ILL_BADSTK ILL_BADSTK
2196 #define FPE_INTDIV FPE_INTDIV
2197 #define FPE_INTOVF FPE_INTOVF
2198 #define FPE_FLTDIV FPE_FLTDIV
2199 #define FPE_FLTOVF FPE_FLTOVF
2200 #define FPE_FLTUND FPE_FLTUND
2201 #define FPE_FLTRES FPE_FLTRES
2202 #define FPE_FLTINV FPE_FLTINV
2203 #define FPE_FLTSUB FPE_FLTSUB
2204 #define SEGV_MAPERR SEGV_MAPERR
2205 #define SEGV_ACCERR SEGV_ACCERR
2206 #define BUS_ADRALN BUS_ADRALN
2207 #define BUS_ADRERR BUS_ADRERR
2208 #define BUS_OBJERR BUS_OBJERR
2209 #define CLD_EXITED CLD_EXITED
2210 #define CLD_KILLED CLD_KILLED
2211 #define CLD_DUMPED CLD_DUMPED
2212 #define CLD_TRAPPED CLD_TRAPPED
2213 #define CLD_STOPPED CLD_STOPPED
2214 #define CLD_CONTINUED CLD_CONTINUED
2215 enum
2216 {
2217 SIGEV_SIGNAL = 0,
2218 SIGEV_NONE,
2219 SIGEV_THREAD
2220 };
2221 #define SIGEV_SIGNAL SIGEV_SIGNAL
2222 #define SIGEV_NONE SIGEV_NONE
2223 #define SIGEV_THREAD SIGEV_THREAD
2224 typedef void (*_sig_func_ptr)(int);
2225 struct sigaction
2226 {
2227 __extension__ union
2228 {
2229 _sig_func_ptr sa_handler;
2230 void (*sa_sigaction) ( int, siginfo_t *, void * );
2231 };
2232 sigset_t sa_mask;
2233 int sa_flags;
2234 };
2235 #define SA_NOCLDSTOP 1
2236 #define SA_SIGINFO 2
2237 #define SA_RESTART 0x10000000
2238 #define SA_ONSTACK 0x20000000
2239 #define SA_NODEFER 0x40000000
2240 #define SA_RESETHAND 0x80000000
2241 #define SA_ONESHOT SA_RESETHAND
2242 #define SA_NOMASK SA_NODEFER
2243 #define _SA_INTERNAL_MASK 0xf000
2244 #undef MINSIGSTKSZ
2245 #define MINSIGSTKSZ 8192
2246 #undef SIGSTKSZ
2247 #define SIGSTKSZ 32768
2248 #define SIGHUP 1
2249 #define SIGINT 2
2250 #define SIGQUIT 3
2251 #define SIGILL 4
2252 #define SIGTRAP 5
2253 #define SIGABRT 6
2254 #define SIGIOT SIGABRT
2255 #define SIGEMT 7
2256 #define SIGFPE 8
2257 #define SIGKILL 9
2258 #define SIGBUS 10
2259 #define SIGSEGV 11
2260 #define SIGSYS 12
2261 #define SIGPIPE 13
2262 #define SIGALRM 14
2263 #define SIGTERM 15
2264 #define SIGURG 16
2265 #define SIGSTOP 17
2266 #define SIGTSTP 18
2267 #define SIGCONT 19
2268 #define SIGCHLD 20
2269 #define SIGCLD 20
2270 #define SIGTTIN 21
2271 #define SIGTTOU 22
2272 #define SIGIO 23
2273 #define SIGPOLL SIGIO
2274 #define SIGXCPU 24
2275 #define SIGXFSZ 25
2276 #define SIGVTALRM 26
2277 #define SIGPROF 27
2278 #define SIGWINCH 28
2279 #define SIGLOST 29
2280 #define SIGPWR SIGLOST
2281 #define SIGUSR1 30
2282 #define SIGUSR2 31
2283 #define NSIG 65
2284 #define SIGRTMIN 32
2285 #define SIGRTMAX (NSIG - 1)
2286 #define SIG_HOLD ((_sig_func_ptr)2)
2287 void psiginfo (const siginfo_t *, const char *);
2288 int sigwait (const sigset_t *, int *);
2289 int sigwaitinfo (const sigset_t *, siginfo_t *);
2290 int sighold (int);
2291 int sigignore (int);
2292 int sigrelse (int);
2293 _sig_func_ptr sigset (int, _sig_func_ptr);
2294 int sigqueue(pid_t, int, const union sigval);
2295 int siginterrupt (int, int);
2296 extern const char __attribute__((dllimport)) *sys_sigabbrev[];
2297 extern const char __attribute__((dllimport)) *sys_siglist[];
2298 #define SS_ONSTACK 0x1
2299 #define SS_DISABLE 0x2
2300 typedef struct sigaltstack {
2301 void *ss_sp;
2302 int ss_flags;
2303 size_t ss_size;
2304 } stack_t;
2305 #define SIG_SETMASK 0
2306 #define SIG_BLOCK 1
2307 #define SIG_UNBLOCK 2
2308 int sigprocmask (int, const sigset_t *, sigset_t *);
2309 int pthread_sigmask (int, const sigset_t *, sigset_t *);
2310 int kill (pid_t, int);
2311 int killpg (pid_t, int);
2312 int sigaction (int, const struct sigaction *, struct sigaction *);
2313 int sigaddset (sigset_t *, const int);
2314 int sigdelset (sigset_t *, const int);
2315 int sigismember (const sigset_t *, int);
2316 int sigfillset (sigset_t *);
2317 int sigemptyset (sigset_t *);
2318 int sigpending (sigset_t *);
2319 int sigsuspend (const sigset_t *);
2320 int sigwait (const sigset_t *, int *);
2321 int sigpause (int) __asm__ ("" "__xpg_sigpause");
2322 int sigaltstack (const stack_t *__restrict, stack_t *__restrict);
2323 int pthread_kill (pthread_t, int);
2324 int sigwaitinfo (const sigset_t *, siginfo_t *);
2325 int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);
2326 int sigqueue (pid_t, int, const union sigval);
2327 #define _SYS_UCONTEXT_H_
2328 typedef struct __mcontext mcontext_t;
2329 typedef __attribute__ ((__aligned__ (16))) struct __ucontext {
2330 mcontext_t uc_mcontext;
2331 struct __ucontext *uc_link;
2332 sigset_t uc_sigmask;
2333 stack_t uc_stack;
2334 unsigned long int uc_flags;
2335 } ucontext_t;
2336
2337 typedef int sig_atomic_t;
2338 typedef _sig_func_ptr sig_t;
2339 typedef _sig_func_ptr sighandler_t;
2340 #define SIG_DFL ((_sig_func_ptr)0)
2341 #define SIG_IGN ((_sig_func_ptr)1)
2342 #define SIG_ERR ((_sig_func_ptr)-1)
2343 struct _reent;
2344 _sig_func_ptr _signal_r (struct _reent *, int, _sig_func_ptr);
2345 int _raise_r (struct _reent *, int);
2346 _sig_func_ptr signal (int, _sig_func_ptr);
2347 int raise (int);
2348 void psignal (int, const char *);
2349
2350 int clock_settime (clockid_t clock_id, const struct timespec *tp);
2351 int clock_gettime (clockid_t clock_id, struct timespec *tp);
2352 int clock_getres (clockid_t clock_id, struct timespec *res);
2353 int timer_create (clockid_t clock_id,
2354 struct sigevent *__restrict evp,
2355 timer_t *__restrict timerid);
2356 int timer_delete (timer_t timerid);
2357 int timer_settime (timer_t timerid, int flags,
2358 const struct itimerspec *__restrict value,
2359 struct itimerspec *__restrict ovalue);
2360 int timer_gettime (timer_t timerid, struct itimerspec *value);
2361 int timer_getoverrun (timer_t timerid);
2362 int nanosleep (const struct timespec *rqtp, struct timespec *rmtp);
2363 int clock_nanosleep (clockid_t clock_id, int flags,
2364 const struct timespec *rqtp, struct timespec *rmtp);
2365 #define CLOCK_ENABLED 1
2366 #define CLOCK_DISABLED 0
2367 #define CLOCK_ALLOWED 1
2368 #define CLOCK_DISALLOWED 0
2369 #define TIMER_ABSTIME 4
2370 #define CLOCK_REALTIME_COARSE ((clockid_t) 0)
2371 #define CLOCK_REALTIME ((clockid_t) 1)
2372 #define CLOCK_PROCESS_CPUTIME_ID ((clockid_t) 2)
2373 #define CLOCK_THREAD_CPUTIME_ID ((clockid_t) 3)
2374 #define CLOCK_MONOTONIC ((clockid_t) 4)
2375 #define CLOCK_MONOTONIC_RAW ((clockid_t) 5)
2376 #define CLOCK_MONOTONIC_COARSE ((clockid_t) 6)
2377 #define CLOCK_BOOTTIME ((clockid_t) 7)
2378 #define CLOCK_REALTIME_ALARM ((clockid_t) 8)
2379 #define CLOCK_BOOTTIME_ALARM ((clockid_t) 9)
2380 int clock_getcpuclockid (pid_t pid, clockid_t *clock_id);
2381 int clock_setenable_attr (clockid_t clock_id, int attr);
2382 int clock_getenable_attr (clockid_t clock_id, int *attr);
2383 #define _CYGWIN_STAT_H
2384 struct stat
2385 {
2386 dev_t st_dev;
2387 ino_t st_ino;
2388 mode_t st_mode;
2389 nlink_t st_nlink;
2390 uid_t st_uid;
2391 gid_t st_gid;
2392 dev_t st_rdev;
2393 off_t st_size;
2394 timestruc_t st_atim;
2395 timestruc_t st_mtim;
2396 timestruc_t st_ctim;
2397 blksize_t st_blksize;
2398 blkcnt_t st_blocks;
2399 timestruc_t st_birthtim;
2400 };
2401 #define st_atime st_atim.tv_sec
2402 #define st_mtime st_mtim.tv_sec
2403 #define st_ctime st_ctim.tv_sec
2404 #define st_birthtime st_birthtim.tv_sec
2405 #define S_TYPEISMQ(buf) ((void)(buf)->st_mode,0)
2406 #define S_TYPEISSEM(buf) ((void)(buf)->st_mode,0)
2407 #define S_TYPEISSHM(buf) ((void)(buf)->st_mode,0)
2408 #define _IFMT 0170000
2409 #define _IFDIR 0040000
2410 #define _IFCHR 0020000
2411 #define _IFBLK 0060000
2412 #define _IFREG 0100000
2413 #define _IFLNK 0120000
2414 #define _IFSOCK 0140000
2415 #define _IFIFO 0010000
2416 #define S_BLKSIZE 1024
2417 #define S_ISUID 0004000
2418 #define S_ISGID 0002000
2419 #define S_ISVTX 0001000
2420 #define S_IREAD 0000400
2421 #define S_IWRITE 0000200
2422 #define S_IEXEC 0000100
2423 #define S_ENFMT 0002000
2424 #define S_IFMT _IFMT
2425 #define S_IFDIR _IFDIR
2426 #define S_IFCHR _IFCHR
2427 #define S_IFBLK _IFBLK
2428 #define S_IFREG _IFREG
2429 #define S_IFLNK _IFLNK
2430 #define S_IFSOCK _IFSOCK
2431 #define S_IFIFO _IFIFO
2432 #define S_IRWXU (S_IRUSR | S_IWUSR | S_IXUSR)
2433 #define S_IRUSR 0000400
2434 #define S_IWUSR 0000200
2435 #define S_IXUSR 0000100
2436 #define S_IRWXG (S_IRGRP | S_IWGRP | S_IXGRP)
2437 #define S_IRGRP 0000040
2438 #define S_IWGRP 0000020
2439 #define S_IXGRP 0000010
2440 #define S_IRWXO (S_IROTH | S_IWOTH | S_IXOTH)
2441 #define S_IROTH 0000004
2442 #define S_IWOTH 0000002
2443 #define S_IXOTH 0000001
2444 #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
2445 #define ALLPERMS (S_ISUID | S_ISGID | S_ISVTX | S_IRWXU | S_IRWXG | S_IRWXO)
2446 #define DEFFILEMODE (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)
2447 #define S_ISBLK(m) (((m)&_IFMT) == _IFBLK)
2448 #define S_ISCHR(m) (((m)&_IFMT) == _IFCHR)
2449 #define S_ISDIR(m) (((m)&_IFMT) == _IFDIR)
2450 #define S_ISFIFO(m) (((m)&_IFMT) == _IFIFO)
2451 #define S_ISREG(m) (((m)&_IFMT) == _IFREG)
2452 #define S_ISLNK(m) (((m)&_IFMT) == _IFLNK)
2453 #define S_ISSOCK(m) (((m)&_IFMT) == _IFSOCK)
2454 #define UTIME_NOW -2L
2455 #define UTIME_OMIT -1L
2456 int chmod (const char *__path, mode_t __mode );
2457 int fchmod (int __fd, mode_t __mode);
2458 int fstat (int __fd, struct stat *__sbuf );
2459 int mkdir (const char *_path, mode_t __mode );
2460 int mkfifo (const char *__path, mode_t __mode );
2461 int stat (const char *__restrict __path, struct stat *__restrict __sbuf );
2462 mode_t umask (mode_t __mask );
2463 int lstat (const char *__restrict __path, struct stat *__restrict __buf );
2464 int mknod (const char *__path, mode_t __mode, dev_t __dev );
2465 int fchmodat (int, const char *, mode_t, int);
2466 int fstatat (int, const char *__restrict , struct stat *__restrict, int);
2467 int mkdirat (int, const char *, mode_t);
2468 int mkfifoat (int, const char *, mode_t);
2469 int mknodat (int, const char *, mode_t, dev_t);
2470 int utimensat (int, const char *, const struct timespec *, int);
2471 int futimens (int, const struct timespec *);
2472 #define _STDLIB_H_
2473 #define __need_size_t
2474 #define __need_wchar_t
2475 #define __need_NULL
2476 #undef __need_ptrdiff_t
2477 #undef __need_size_t
2478 #undef __need_wchar_t
2479 #undef NULL
2480 #define NULL ((void *)0)
2481 #undef __need_NULL
2482 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2483 #define _MACHSTDLIB_H_
2484 char *mkdtemp (char *);
2485 #define _NEWLIB_ALLOCA_H
2486 #undef alloca
2487 #define alloca(size) __builtin_alloca(size)
2488 #define _CYGWIN_STDLIB_H
2489 #define _CYGWIN_WAIT_H
2490 #define WAIT_ANY (pid_t)-1
2491 #define WAIT_MYPGRP (pid_t)0
2492 #define WNOHANG 1
2493 #define WUNTRACED 2
2494 #define WCONTINUED 8
2495 #define __W_CONTINUED 0xffff
2496 #define WIFEXITED(_w) (((_w) & 0xff) == 0)
2497 #define WIFSIGNALED(_w) (((_w) & 0x7f) > 0 && (((_w) & 0x7f) < 0x7f))
2498 #define WIFSTOPPED(_w) (((_w) & 0xff) == 0x7f)
2499 #define WIFCONTINUED(_w) (((_w) & 0xffff) == __W_CONTINUED)
2500 #define WEXITSTATUS(_w) (((_w) >> 8) & 0xff)
2501 #define WTERMSIG(_w) ((_w) & 0x7f)
2502 #define WSTOPSIG WEXITSTATUS
2503 #define WCOREDUMP(_w) (WIFSIGNALED(_w) && ((_w) & 0x80))
2504 const char *getprogname (void);
2505 void setprogname (const char *);
2506 char *canonicalize_file_name (const char *);
2507 int unsetenv (const char *);
2508 int clearenv (void);
2509 char *ptsname (int);
2510 int grantpt (int);
2511 int unlockpt (int);
2512 int ptsname_r(int, char *, size_t);
2513 int getpt (void);
2514 int posix_openpt (int);
2515 extern void *memalign (size_t, size_t);
2516 extern void *valloc (size_t);
2517 #undef _malloc_r
2518 #define _malloc_r(r,s) malloc (s)
2519 #undef _free_r
2520 #define _free_r(r,p) free (p)
2521 #undef _realloc_r
2522 #define _realloc_r(r,p,s) realloc (p, s)
2523 #undef _calloc_r
2524 #define _calloc_r(r,s1,s2) calloc (s1, s2);
2525 #undef _memalign_r
2526 #define _memalign_r(r,s1,s2) memalign (s1, s2);
2527 #undef _mallinfo_r
2528 #define _mallinfo_r(r) mallinfo ()
2529 #undef _malloc_stats_r
2530 #define _malloc_stats_r(r) malloc_stats ()
2531 #undef _mallopt_r
2532 #define _mallopt_r(i1,i2) mallopt (i1, i2)
2533 #undef _malloc_usable_size_r
2534 #define _malloc_usable_size_r(r,p) malloc_usable_size (p)
2535 #undef _valloc_r
2536 #define _valloc_r(r,s) valloc (s)
2537 #undef _pvalloc_r
2538 #define _pvalloc_r(r,s) pvalloc (s)
2539 #undef _malloc_trim_r
2540 #define _malloc_trim_r(r,s) malloc_trim (s)
2541 #undef _mstats_r
2542 #define _mstats_r(r,p) mstats (p)
2543 int getloadavg(double loadavg[], int nelem);
2544
2545 typedef struct
2546 {
2547 int quot;
2548 int rem;
2549 } div_t;
2550 typedef struct
2551 {
2552 long quot;
2553 long rem;
2554 } ldiv_t;
2555 typedef struct
2556 {
2557 long long int quot;
2558 long long int rem;
2559 } lldiv_t;
2560 #define __compar_fn_t_defined
2561 typedef int (*__compar_fn_t) (const void *, const void *);
2562 #define EXIT_FAILURE 1
2563 #define EXIT_SUCCESS 0
2564 #define RAND_MAX __RAND_MAX
2565 int __locale_mb_cur_max (void);
2566 #define MB_CUR_MAX __locale_mb_cur_max()
2567 void abort (void) __attribute__ ((__noreturn__));
2568 int abs (int);
2569 __uint32_t arc4random (void);
2570 __uint32_t arc4random_uniform (__uint32_t);
2571 void arc4random_buf (void *, size_t);
2572 int atexit (void (*__func)(void));
2573 double atof (const char *__nptr);
2574 float atoff (const char *__nptr);
2575 int atoi (const char *__nptr);
2576 int _atoi_r (struct _reent *, const char *__nptr);
2577 long atol (const char *__nptr);
2578 long _atol_r (struct _reent *, const char *__nptr);
2579 void * bsearch (const void *__key,
2580 const void *__base,
2581 size_t __nmemb,
2582 size_t __size,
2583 __compar_fn_t _compar);
2584 void *calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
2585 __attribute__((__alloc_size__(1, 2))) ;
2586 div_t div (int __numer, int __denom);
2587 void exit (int __status) __attribute__ ((__noreturn__));
2588 void free (void *) ;
2589 char * getenv (const char *__string);
2590 char * _getenv_r (struct _reent *, const char *__string);
2591 char * secure_getenv (const char *__string);
2592 char * _findenv (const char *, int *);
2593 char * _findenv_r (struct _reent *, const char *, int *);
2594 extern char *suboptarg;
2595 int getsubopt (char **, char * const *, char **);
2596 long labs (long);
2597 ldiv_t ldiv (long __numer, long __denom);
2598 void *malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1))) ;
2599 int mblen (const char *, size_t);
2600 int _mblen_r (struct _reent *, const char *, size_t, _mbstate_t *);
2601 int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
2602 int _mbtowc_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
2603 int wctomb (char *, wchar_t);
2604 int _wctomb_r (struct _reent *, char *, wchar_t, _mbstate_t *);
2605 size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
2606 size_t _mbstowcs_r (struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *);
2607 size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
2608 size_t _wcstombs_r (struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *);
2609 char * mkdtemp (char *);
2610 int mkostemp (char *, int);
2611 int mkostemps (char *, int, int);
2612 int mkstemp (char *);
2613 int mkstemps (char *, int);
2614 char * mktemp (char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
2615 char * _mkdtemp_r (struct _reent *, char *);
2616 int _mkostemp_r (struct _reent *, char *, int);
2617 int _mkostemps_r (struct _reent *, char *, int, int);
2618 int _mkstemp_r (struct _reent *, char *);
2619 int _mkstemps_r (struct _reent *, char *, int);
2620 char * _mktemp_r (struct _reent *, char *) __attribute__ ((__deprecated__("the use of `mktemp' is dangerous; use `mkstemp' instead")));
2621 void qsort (void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar);
2622 int rand (void);
2623 void *realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2))) ;
2624 void *reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2, 3)));
2625 void *reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)));
2626 char * realpath (const char *__restrict path, char *__restrict resolved_path);
2627 int rpmatch (const char *response);
2628 void setkey (const char *__key);
2629 void srand (unsigned __seed);
2630 double strtod (const char *__restrict __n, char **__restrict __end_PTR);
2631 double _strtod_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR);
2632 float strtof (const char *__restrict __n, char **__restrict __end_PTR);
2633 #define strtodf strtof
2634 long strtol (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2635 long _strtol_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
2636 unsigned long strtoul (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2637 unsigned long _strtoul_r (struct _reent *,const char *__restrict __n, char **__restrict __end_PTR, int __base);
2638 double strtod_l (const char *__restrict, char **__restrict, locale_t);
2639 float strtof_l (const char *__restrict, char **__restrict, locale_t);
2640 extern long double strtold_l (const char *__restrict, char **__restrict,
2641 locale_t);
2642 long strtol_l (const char *__restrict, char **__restrict, int, locale_t);
2643 unsigned long strtoul_l (const char *__restrict, char **__restrict, int,
2644 locale_t __loc);
2645 long long strtoll_l (const char *__restrict, char **__restrict, int, locale_t);
2646 unsigned long long strtoull_l (const char *__restrict, char **__restrict, int,
2647 locale_t __loc);
2648 int system (const char *__string);
2649 long a64l (const char *__input);
2650 char * l64a (long __input);
2651 char * _l64a_r (struct _reent *,long __input);
2652 int on_exit (void (*__func)(int, void *),void *__arg);
2653 void _Exit (int __status) __attribute__ ((__noreturn__));
2654 int putenv (char *__string);
2655 int _putenv_r (struct _reent *, char *__string);
2656 void * _reallocf_r (struct _reent *, void *, size_t);
2657 int setenv (const char *__string, const char *__value, int __overwrite);
2658 int _setenv_r (struct _reent *, const char *__string, const char *__value, int __overwrite);
2659 char * __itoa (int, char *, int);
2660 char * __utoa (unsigned, char *, int);
2661 char * itoa (int, char *, int);
2662 char * utoa (unsigned, char *, int);
2663 int rand_r (unsigned *__seed);
2664 double drand48 (void);
2665 double _drand48_r (struct _reent *);
2666 double erand48 (unsigned short [3]);
2667 double _erand48_r (struct _reent *, unsigned short [3]);
2668 long jrand48 (unsigned short [3]);
2669 long _jrand48_r (struct _reent *, unsigned short [3]);
2670 void lcong48 (unsigned short [7]);
2671 void _lcong48_r (struct _reent *, unsigned short [7]);
2672 long lrand48 (void);
2673 long _lrand48_r (struct _reent *);
2674 long mrand48 (void);
2675 long _mrand48_r (struct _reent *);
2676 long nrand48 (unsigned short [3]);
2677 long _nrand48_r (struct _reent *, unsigned short [3]);
2678 unsigned short *
2679 seed48 (unsigned short [3]);
2680 unsigned short *
2681 _seed48_r (struct _reent *, unsigned short [3]);
2682 void srand48 (long);
2683 void _srand48_r (struct _reent *, long);
2684 char * initstate (unsigned, char *, size_t);
2685 long random (void);
2686 char * setstate (char *);
2687 void srandom (unsigned);
2688 long long atoll (const char *__nptr);
2689 long long _atoll_r (struct _reent *, const char *__nptr);
2690 long long llabs (long long);
2691 lldiv_t lldiv (long long __numer, long long __denom);
2692 long long strtoll (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2693 long long _strtoll_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
2694 unsigned long long strtoull (const char *__restrict __n, char **__restrict __end_PTR, int __base);
2695 unsigned long long _strtoull_r (struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base);
2696 int posix_memalign (void **, size_t, size_t) __attribute__((__nonnull__ (1)))
2697 __attribute__((__warn_unused_result__));
2698 char * _dtoa_r (struct _reent *, double, int, int, int *, int*, char**);
2699 int _system_r (struct _reent *, const char *);
2700 void __eprintf (const char *, const char *, unsigned int, const char *);
2701 void qsort_r (void *__base, size_t __nmemb, size_t __size, int (*_compar)(const void *, const void *, void *), void *__thunk);
2702 extern long double _strtold_r (struct _reent *, const char *__restrict, char **__restrict);
2703 extern long double strtold (const char *__restrict, char **__restrict);
2704 void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1)))
2705 __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__));
2706 int at_quick_exit(void (*)(void));
2707 _Noreturn void
2708 quick_exit(int);
2709
2710 #define _SSP_STDLIB_H_
2711
2712 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)
2713 {
2714 if (__buf != ((void *)0))
2715 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(wchar_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
2716 return __ssp_real_mbstowcs (__buf, __src, __n);
2717 }
2718 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); };
2719 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)
2720 {
2721 if (__buf != ((void *)0))
2722 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __locale_mb_cur_max() > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
2723 return __ssp_real_wctomb (__buf, __wc);
2724 }
2725
2726 #define _STRING_H_
2727 #define __need_size_t
2728 #define __need_NULL
2729 #undef __need_ptrdiff_t
2730 #undef __need_size_t
2731 #undef __need_wchar_t
2732 #undef NULL
2733 #define NULL ((void *)0)
2734 #undef __need_NULL
2735 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
2736 #define _STRINGS_H_
2737
2738 int bcmp(const void *, const void *, size_t) __attribute__((__pure__));
2739 void bcopy(const void *, void *, size_t);
2740 void bzero(void *, size_t);
2741 void explicit_bzero(void *, size_t);
2742 int ffs(int) __attribute__((__const__));
2743 int ffsl(long) __attribute__((__const__));
2744 int ffsll(long long) __attribute__((__const__));
2745 int fls(int) __attribute__((__const__));
2746 int flsl(long) __attribute__((__const__));
2747 int flsll(long long) __attribute__((__const__));
2748 char *index(const char *, int) __attribute__((__pure__));
2749 char *rindex(const char *, int) __attribute__((__pure__));
2750 int strcasecmp(const char *, const char *) __attribute__((__pure__));
2751 int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__));
2752 int strcasecmp_l (const char *, const char *, locale_t);
2753 int strncasecmp_l (const char *, const char *, size_t, locale_t);
2754
2755 #define _SSP_STRINGS_H_
2756 #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))
2757 #define bzero(dst,len) ((__ssp_bos0(dst) != (size_t)-1) ? __builtin___memset_chk(dst, 0, len, __ssp_bos0(dst)) : __memset_ichk(dst, 0, len))
2758 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); };
2759
2760 void * memchr (const void *, int, size_t);
2761 int memcmp (const void *, const void *, size_t);
2762 void * memcpy (void *__restrict, const void *__restrict, size_t);
2763 void * memmove (void *, const void *, size_t);
2764 void * memset (void *, int, size_t);
2765 char *strcat (char *__restrict, const char *__restrict);
2766 char *strchr (const char *, int);
2767 int strcmp (const char *, const char *);
2768 int strcoll (const char *, const char *);
2769 char *strcpy (char *__restrict, const char *__restrict);
2770 size_t strcspn (const char *, const char *);
2771 char *strerror (int);
2772 size_t strlen (const char *);
2773 char *strncat (char *__restrict, const char *__restrict, size_t);
2774 int strncmp (const char *, const char *, size_t);
2775 char *strncpy (char *__restrict, const char *__restrict, size_t);
2776 char *strpbrk (const char *, const char *);
2777 char *strrchr (const char *, int);
2778 size_t strspn (const char *, const char *);
2779 char *strstr (const char *, const char *);
2780 char *strtok (char *__restrict, const char *__restrict);
2781 size_t strxfrm (char *__restrict, const char *__restrict, size_t);
2782 int strcoll_l (const char *, const char *, locale_t);
2783 char *strerror_l (int, locale_t);
2784 size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
2785 char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
2786 int timingsafe_bcmp (const void *, const void *, size_t);
2787 int timingsafe_memcmp (const void *, const void *, size_t);
2788 void * memccpy (void *__restrict, const void *__restrict, int, size_t);
2789 void * mempcpy (void *, const void *, size_t);
2790 void * memmem (const void *, size_t, const void *, size_t);
2791 void * memrchr (const void *, int, size_t);
2792 void * rawmemchr (const void *, int);
2793 char *stpcpy (char *__restrict, const char *__restrict);
2794 char *stpncpy (char *__restrict, const char *__restrict, size_t);
2795 char *strcasestr (const char *, const char *);
2796 char *strchrnul (const char *, int);
2797 char *strdup (const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
2798 char *_strdup_r (struct _reent *, const char *);
2799 char *strndup (const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__));
2800 char *_strndup_r (struct _reent *, const char *, size_t);
2801 char *strerror_r (int, char *, size_t);
2802 char * _strerror_r (struct _reent *, int, int, int *);
2803 size_t strlcat (char *, const char *, size_t);
2804 size_t strlcpy (char *, const char *, size_t);
2805 size_t strnlen (const char *, size_t);
2806 char *strsep (char **, const char *);
2807 char *strnstr(const char *, const char *, size_t) __attribute__((__pure__));
2808 char *strlwr (char *);
2809 char *strupr (char *);
2810 char *strsignal (int __signo);
2811 int strtosigno (const char *__name);
2812 int strverscmp (const char *, const char *);
2813 #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);}))
2814 #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);}))
2815 #define basename basename
2816 char *__attribute__((__nonnull__ (1))) basename (const char *) __asm__("" "__gnu_basename");
2817
2818 #define _SSP_STRING_H_
2819
2820 void *__memcpy_chk(void *, const void *, size_t, size_t);
2821 void *__memmove_chk(void *, void *, size_t, size_t);
2822 void *__mempcpy_chk(void *, const void *, size_t, size_t);
2823 void *__memset_chk(void *, int, size_t, size_t);
2824 char *__stpcpy_chk(char *, const char *, size_t);
2825 char *__strcat_chk(char *, const char *, size_t);
2826 char *__strcpy_chk(char *, const char *, size_t);
2827 char *__strncat_chk(char *, const char *, size_t, size_t);
2828 char *__strncpy_chk(char *, const char *, size_t, size_t);
2829
2830 #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))
2831 #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))
2832 #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)); }
2833 #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)); }
2834 #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)); }
2835
2836 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)); }
2837 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)); }
2838 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)); }
2839 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)); }
2840 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)); }
2841 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)); }
2842 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)); }
2843 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)); }
2844 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)); }
2845 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)); }
2846
2847 #define memcpy(dst,src,len) __ssp_bos_check3(memcpy, dst, src, len)
2848 #define memmove(dst,src,len) __ssp_bos_check3(memmove, dst, src, len)
2849 #define mempcpy(dst,src,len) __ssp_bos_check3(mempcpy, dst, src, len)
2850 #define memset(dst,val,len) __ssp_bos_check3(memset, dst, val, len)
2851 #define stpcpy(dst,src) __ssp_bos_check2(stpcpy, dst, src)
2852 #define stpncpy(dst,src,len) __ssp_bos_check3(stpncpy, dst, src, len)
2853 #define strcpy(dst,src) __ssp_bos_check2(strcpy, dst, src)
2854 #define strcat(dst,src) __ssp_bos_check2(strcat, dst, src)
2855 #define strncpy(dst,src,len) __ssp_bos_check3(strncpy, dst, src, len)
2856 #define strncat(dst,src,len) __ssp_bos_check3(strncat, dst, src, len)
2857 #define _INTTYPES_H
2858 #define _SYS__INTSUP_H
2859 #define __STDINT_EXP(x) __ ##x ##__
2860
2861
2862
2863
2864
2865
2866
2867 #undef signed
2868 #undef unsigned
2869 #undef char
2870 #undef short
2871 #undef int
2872 #undef __int20
2873 #undef long
2874 #define signed +0
2875 #define unsigned +0
2876 #define char +0
2877 #define short +1
2878 #define __int20 +2
2879 #define int +2
2880 #define long +4
2881 #define _INTPTR_EQ_LONG
2882 #define __INT8 "hh"
2883 #define __INT16 "h"
2884 #define __INT32
2885 #define __INT64 "l"
2886 #define __FAST8 "hh"
2887 #define __FAST16 "l"
2888 #define __FAST32 "l"
2889 #define __FAST64 "l"
2890 #define __LEAST8 "hh"
2891 #define __LEAST16 "h"
2892 #define __LEAST32
2893 #define __LEAST64 "l"
2894 #undef signed
2895 #undef unsigned
2896 #undef char
2897 #undef short
2898 #undef int
2899 #undef long
2900
2901
2902
2903
2904
2905 #undef __int20
2906
2907
2908 #define _STDINT_H
2909 typedef __int_least8_t int_least8_t;
2910 typedef __uint_least8_t uint_least8_t;
2911 #define __int_least8_t_defined 1
2912 typedef __int_least16_t int_least16_t;
2913 typedef __uint_least16_t uint_least16_t;
2914 #define __int_least16_t_defined 1
2915 typedef __int_least32_t int_least32_t;
2916 typedef __uint_least32_t uint_least32_t;
2917 #define __int_least32_t_defined 1
2918 typedef __int_least64_t int_least64_t;
2919 typedef __uint_least64_t uint_least64_t;
2920 #define __int_least64_t_defined 1
2921 typedef signed char int_fast8_t;
2922 typedef unsigned char uint_fast8_t;
2923 #define __int_fast8_t_defined 1
2924 typedef long int int_fast16_t;
2925 typedef long unsigned int uint_fast16_t;
2926 #define __int_fast16_t_defined 1
2927 typedef long int int_fast32_t;
2928 typedef long unsigned int uint_fast32_t;
2929 #define __int_fast32_t_defined 1
2930 typedef long int int_fast64_t;
2931 typedef long unsigned int uint_fast64_t;
2932 #define __int_fast64_t_defined 1
2933 #define INTPTR_MIN (-__INTPTR_MAX__ - 1)
2934 #define INTPTR_MAX (__INTPTR_MAX__)
2935 #define UINTPTR_MAX (__UINTPTR_MAX__)
2936 #define INT8_MIN (-__INT8_MAX__ - 1)
2937 #define INT8_MAX (__INT8_MAX__)
2938 #define UINT8_MAX (__UINT8_MAX__)
2939 #define INT_LEAST8_MIN (-__INT_LEAST8_MAX__ - 1)
2940 #define INT_LEAST8_MAX (__INT_LEAST8_MAX__)
2941 #define UINT_LEAST8_MAX (__UINT_LEAST8_MAX__)
2942 #define INT16_MIN (-__INT16_MAX__ - 1)
2943 #define INT16_MAX (__INT16_MAX__)
2944 #define UINT16_MAX (__UINT16_MAX__)
2945 #define INT_LEAST16_MIN (-__INT_LEAST16_MAX__ - 1)
2946 #define INT_LEAST16_MAX (__INT_LEAST16_MAX__)
2947 #define UINT_LEAST16_MAX (__UINT_LEAST16_MAX__)
2948 #define INT32_MIN (-__INT32_MAX__ - 1)
2949 #define INT32_MAX (__INT32_MAX__)
2950 #define UINT32_MAX (__UINT32_MAX__)
2951 #define INT_LEAST32_MIN (-__INT_LEAST32_MAX__ - 1)
2952 #define INT_LEAST32_MAX (__INT_LEAST32_MAX__)
2953 #define UINT_LEAST32_MAX (__UINT_LEAST32_MAX__)
2954 #define INT64_MIN (-__INT64_MAX__ - 1)
2955 #define INT64_MAX (__INT64_MAX__)
2956 #define UINT64_MAX (__UINT64_MAX__)
2957 #define INT_LEAST64_MIN (-__INT_LEAST64_MAX__ - 1)
2958 #define INT_LEAST64_MAX (__INT_LEAST64_MAX__)
2959 #define UINT_LEAST64_MAX (__UINT_LEAST64_MAX__)
2960 #define INT_FAST8_MIN (-__INT_FAST8_MAX__ - 1)
2961 #define INT_FAST8_MAX (__INT_FAST8_MAX__)
2962 #define UINT_FAST8_MAX (__UINT_FAST8_MAX__)
2963 #define INT_FAST16_MIN (-__INT_FAST16_MAX__ - 1)
2964 #define INT_FAST16_MAX (__INT_FAST16_MAX__)
2965 #define UINT_FAST16_MAX (__UINT_FAST16_MAX__)
2966 #define INT_FAST32_MIN (-__INT_FAST32_MAX__ - 1)
2967 #define INT_FAST32_MAX (__INT_FAST32_MAX__)
2968 #define UINT_FAST32_MAX (__UINT_FAST32_MAX__)
2969 #define INT_FAST64_MIN (-__INT_FAST64_MAX__ - 1)
2970 #define INT_FAST64_MAX (__INT_FAST64_MAX__)
2971 #define UINT_FAST64_MAX (__UINT_FAST64_MAX__)
2972 #define INTMAX_MAX (__INTMAX_MAX__)
2973 #define INTMAX_MIN (-INTMAX_MAX - 1)
2974 #define UINTMAX_MAX (__UINTMAX_MAX__)
2975 #define SIZE_MAX (__SIZE_MAX__)
2976 #define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
2977 #define SIG_ATOMIC_MAX (__STDINT_EXP(INT_MAX))
2978 #define PTRDIFF_MAX (__PTRDIFF_MAX__)
2979 #define PTRDIFF_MIN (-PTRDIFF_MAX - 1)
2980 #define WCHAR_MIN (__WCHAR_MIN__)
2981 #define WCHAR_MAX (__WCHAR_MAX__)
2982 #define WINT_MAX (__WINT_MAX__)
2983 #define WINT_MIN (__WINT_MIN__)
2984 #define INT8_C(x) __INT8_C(x)
2985 #define UINT8_C(x) __UINT8_C(x)
2986 #define INT16_C(x) __INT16_C(x)
2987 #define UINT16_C(x) __UINT16_C(x)
2988 #define INT32_C(x) __INT32_C(x)
2989 #define UINT32_C(x) __UINT32_C(x)
2990 #define INT64_C(x) __INT64_C(x)
2991 #define UINT64_C(x) __UINT64_C(x)
2992 #define INTMAX_C(x) __INTMAX_C(x)
2993 #define UINTMAX_C(x) __UINTMAX_C(x)
2994 #define _GCC_WRAP_STDINT_H
2995 #define __need_wchar_t
2996 #undef __need_ptrdiff_t
2997 #undef __need_size_t
2998 #undef __need_wchar_t
2999 #undef NULL
3000 #define NULL ((void *)0)
3001 #undef __need_NULL
3002 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3003 #define __STRINGIFY(a) #a
3004 #define __PRI8(x) __INT8 __STRINGIFY(x)
3005 #define __PRI8LEAST(x) __LEAST8 __STRINGIFY(x)
3006 #define __PRI8FAST(x) __FAST8 __STRINGIFY(x)
3007 #define __SCN8(x) __INT8 __STRINGIFY(x)
3008 #define __SCN8LEAST(x) __LEAST8 __STRINGIFY(x)
3009 #define __SCN8FAST(x) __FAST8 __STRINGIFY(x)
3010 #define PRId8 __PRI8(d)
3011 #define PRIi8 __PRI8(i)
3012 #define PRIo8 __PRI8(o)
3013 #define PRIu8 __PRI8(u)
3014 #define PRIx8 __PRI8(x)
3015 #define PRIX8 __PRI8(X)
3016 #define SCNd8 __SCN8(d)
3017 #define SCNi8 __SCN8(i)
3018 #define SCNo8 __SCN8(o)
3019 #define SCNu8 __SCN8(u)
3020 #define SCNx8 __SCN8(x)
3021 #define PRIdLEAST8 __PRI8LEAST(d)
3022 #define PRIiLEAST8 __PRI8LEAST(i)
3023 #define PRIoLEAST8 __PRI8LEAST(o)
3024 #define PRIuLEAST8 __PRI8LEAST(u)
3025 #define PRIxLEAST8 __PRI8LEAST(x)
3026 #define PRIXLEAST8 __PRI8LEAST(X)
3027 #define SCNdLEAST8 __SCN8LEAST(d)
3028 #define SCNiLEAST8 __SCN8LEAST(i)
3029 #define SCNoLEAST8 __SCN8LEAST(o)
3030 #define SCNuLEAST8 __SCN8LEAST(u)
3031 #define SCNxLEAST8 __SCN8LEAST(x)
3032 #define PRIdFAST8 __PRI8FAST(d)
3033 #define PRIiFAST8 __PRI8FAST(i)
3034 #define PRIoFAST8 __PRI8FAST(o)
3035 #define PRIuFAST8 __PRI8FAST(u)
3036 #define PRIxFAST8 __PRI8FAST(x)
3037 #define PRIXFAST8 __PRI8FAST(X)
3038 #define SCNdFAST8 __SCN8FAST(d)
3039 #define SCNiFAST8 __SCN8FAST(i)
3040 #define SCNoFAST8 __SCN8FAST(o)
3041 #define SCNuFAST8 __SCN8FAST(u)
3042 #define SCNxFAST8 __SCN8FAST(x)
3043 #define __PRI16(x) __INT16 __STRINGIFY(x)
3044 #define __PRI16LEAST(x) __LEAST16 __STRINGIFY(x)
3045 #define __PRI16FAST(x) __FAST16 __STRINGIFY(x)
3046 #define __SCN16(x) __INT16 __STRINGIFY(x)
3047 #define __SCN16LEAST(x) __LEAST16 __STRINGIFY(x)
3048 #define __SCN16FAST(x) __FAST16 __STRINGIFY(x)
3049 #define PRId16 __PRI16(d)
3050 #define PRIi16 __PRI16(i)
3051 #define PRIo16 __PRI16(o)
3052 #define PRIu16 __PRI16(u)
3053 #define PRIx16 __PRI16(x)
3054 #define PRIX16 __PRI16(X)
3055 #define SCNd16 __SCN16(d)
3056 #define SCNi16 __SCN16(i)
3057 #define SCNo16 __SCN16(o)
3058 #define SCNu16 __SCN16(u)
3059 #define SCNx16 __SCN16(x)
3060 #define PRIdLEAST16 __PRI16LEAST(d)
3061 #define PRIiLEAST16 __PRI16LEAST(i)
3062 #define PRIoLEAST16 __PRI16LEAST(o)
3063 #define PRIuLEAST16 __PRI16LEAST(u)
3064 #define PRIxLEAST16 __PRI16LEAST(x)
3065 #define PRIXLEAST16 __PRI16LEAST(X)
3066 #define SCNdLEAST16 __SCN16LEAST(d)
3067 #define SCNiLEAST16 __SCN16LEAST(i)
3068 #define SCNoLEAST16 __SCN16LEAST(o)
3069 #define SCNuLEAST16 __SCN16LEAST(u)
3070 #define SCNxLEAST16 __SCN16LEAST(x)
3071 #define PRIdFAST16 __PRI16FAST(d)
3072 #define PRIiFAST16 __PRI16FAST(i)
3073 #define PRIoFAST16 __PRI16FAST(o)
3074 #define PRIuFAST16 __PRI16FAST(u)
3075 #define PRIxFAST16 __PRI16FAST(x)
3076 #define PRIXFAST16 __PRI16FAST(X)
3077 #define SCNdFAST16 __SCN16FAST(d)
3078 #define SCNiFAST16 __SCN16FAST(i)
3079 #define SCNoFAST16 __SCN16FAST(o)
3080 #define SCNuFAST16 __SCN16FAST(u)
3081 #define SCNxFAST16 __SCN16FAST(x)
3082 #define __PRI32(x) __INT32 __STRINGIFY(x)
3083 #define __SCN32(x) __INT32 __STRINGIFY(x)
3084 #define __PRI32LEAST(x) __LEAST32 __STRINGIFY(x)
3085 #define __SCN32LEAST(x) __LEAST32 __STRINGIFY(x)
3086 #define __PRI32FAST(x) __FAST32 __STRINGIFY(x)
3087 #define __SCN32FAST(x) __FAST32 __STRINGIFY(x)
3088 #define PRId32 __PRI32(d)
3089 #define PRIi32 __PRI32(i)
3090 #define PRIo32 __PRI32(o)
3091 #define PRIu32 __PRI32(u)
3092 #define PRIx32 __PRI32(x)
3093 #define PRIX32 __PRI32(X)
3094 #define SCNd32 __SCN32(d)
3095 #define SCNi32 __SCN32(i)
3096 #define SCNo32 __SCN32(o)
3097 #define SCNu32 __SCN32(u)
3098 #define SCNx32 __SCN32(x)
3099 #define PRIdLEAST32 __PRI32LEAST(d)
3100 #define PRIiLEAST32 __PRI32LEAST(i)
3101 #define PRIoLEAST32 __PRI32LEAST(o)
3102 #define PRIuLEAST32 __PRI32LEAST(u)
3103 #define PRIxLEAST32 __PRI32LEAST(x)
3104 #define PRIXLEAST32 __PRI32LEAST(X)
3105 #define SCNdLEAST32 __SCN32LEAST(d)
3106 #define SCNiLEAST32 __SCN32LEAST(i)
3107 #define SCNoLEAST32 __SCN32LEAST(o)
3108 #define SCNuLEAST32 __SCN32LEAST(u)
3109 #define SCNxLEAST32 __SCN32LEAST(x)
3110 #define PRIdFAST32 __PRI32FAST(d)
3111 #define PRIiFAST32 __PRI32FAST(i)
3112 #define PRIoFAST32 __PRI32FAST(o)
3113 #define PRIuFAST32 __PRI32FAST(u)
3114 #define PRIxFAST32 __PRI32FAST(x)
3115 #define PRIXFAST32 __PRI32FAST(X)
3116 #define SCNdFAST32 __SCN32FAST(d)
3117 #define SCNiFAST32 __SCN32FAST(i)
3118 #define SCNoFAST32 __SCN32FAST(o)
3119 #define SCNuFAST32 __SCN32FAST(u)
3120 #define SCNxFAST32 __SCN32FAST(x)
3121 #define __PRI64(x) __INT64 __STRINGIFY(x)
3122 #define __SCN64(x) __INT64 __STRINGIFY(x)
3123 #define __PRI64LEAST(x) __LEAST64 __STRINGIFY(x)
3124 #define __SCN64LEAST(x) __LEAST64 __STRINGIFY(x)
3125 #define __PRI64FAST(x) __FAST64 __STRINGIFY(x)
3126 #define __SCN64FAST(x) __FAST64 __STRINGIFY(x)
3127 #define PRId64 __PRI64(d)
3128 #define PRIi64 __PRI64(i)
3129 #define PRIo64 __PRI64(o)
3130 #define PRIu64 __PRI64(u)
3131 #define PRIx64 __PRI64(x)
3132 #define PRIX64 __PRI64(X)
3133 #define SCNd64 __SCN64(d)
3134 #define SCNi64 __SCN64(i)
3135 #define SCNo64 __SCN64(o)
3136 #define SCNu64 __SCN64(u)
3137 #define SCNx64 __SCN64(x)
3138 #define PRIdLEAST64 __PRI64LEAST(d)
3139 #define PRIiLEAST64 __PRI64LEAST(i)
3140 #define PRIoLEAST64 __PRI64LEAST(o)
3141 #define PRIuLEAST64 __PRI64LEAST(u)
3142 #define PRIxLEAST64 __PRI64LEAST(x)
3143 #define PRIXLEAST64 __PRI64LEAST(X)
3144 #define SCNdLEAST64 __SCN64LEAST(d)
3145 #define SCNiLEAST64 __SCN64LEAST(i)
3146 #define SCNoLEAST64 __SCN64LEAST(o)
3147 #define SCNuLEAST64 __SCN64LEAST(u)
3148 #define SCNxLEAST64 __SCN64LEAST(x)
3149 #define PRIdFAST64 __PRI64FAST(d)
3150 #define PRIiFAST64 __PRI64FAST(i)
3151 #define PRIoFAST64 __PRI64FAST(o)
3152 #define PRIuFAST64 __PRI64FAST(u)
3153 #define PRIxFAST64 __PRI64FAST(x)
3154 #define PRIXFAST64 __PRI64FAST(X)
3155 #define SCNdFAST64 __SCN64FAST(d)
3156 #define SCNiFAST64 __SCN64FAST(i)
3157 #define SCNoFAST64 __SCN64FAST(o)
3158 #define SCNuFAST64 __SCN64FAST(u)
3159 #define SCNxFAST64 __SCN64FAST(x)
3160 #define __PRIMAX(x) __STRINGIFY(l ##x)
3161 #define __SCNMAX(x) __STRINGIFY(l ##x)
3162 #define PRIdMAX __PRIMAX(d)
3163 #define PRIiMAX __PRIMAX(i)
3164 #define PRIoMAX __PRIMAX(o)
3165 #define PRIuMAX __PRIMAX(u)
3166 #define PRIxMAX __PRIMAX(x)
3167 #define PRIXMAX __PRIMAX(X)
3168 #define SCNdMAX __SCNMAX(d)
3169 #define SCNiMAX __SCNMAX(i)
3170 #define SCNoMAX __SCNMAX(o)
3171 #define SCNuMAX __SCNMAX(u)
3172 #define SCNxMAX __SCNMAX(x)
3173 #define __PRIPTR(x) __STRINGIFY(l ##x)
3174 #define __SCNPTR(x) __STRINGIFY(l ##x)
3175 #define PRIdPTR __PRIPTR(d)
3176 #define PRIiPTR __PRIPTR(i)
3177 #define PRIoPTR __PRIPTR(o)
3178 #define PRIuPTR __PRIPTR(u)
3179 #define PRIxPTR __PRIPTR(x)
3180 #define PRIXPTR __PRIPTR(X)
3181 #define SCNdPTR __SCNPTR(d)
3182 #define SCNiPTR __SCNPTR(i)
3183 #define SCNoPTR __SCNPTR(o)
3184 #define SCNuPTR __SCNPTR(u)
3185 #define SCNxPTR __SCNPTR(x)
3186 typedef struct {
3187 intmax_t quot;
3188 intmax_t rem;
3189 } imaxdiv_t;
3190 struct _reent;
3191 extern intmax_t imaxabs(intmax_t j);
3192 extern imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer);
3193 extern intmax_t strtoimax(const char *__restrict, char **__restrict, int);
3194 extern intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int);
3195 extern uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
3196 extern uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int);
3197 extern intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
3198 extern intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int);
3199 extern uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
3200 extern uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int);
3201 extern intmax_t strtoimax_l(const char *__restrict, char **_restrict, int, locale_t);
3202 extern uintmax_t strtoumax_l(const char *__restrict, char **_restrict, int, locale_t);
3203 extern intmax_t wcstoimax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t);
3204 extern uintmax_t wcstoumax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t);
3205 #define _STDALIGN_H
3206 #define alignas _Alignas
3207 #define alignof _Alignof
3208 #define __alignas_is_defined 1
3209 #define __alignof_is_defined 1
3210 #define _UNISTD_H_
3211 #define _SYS_UNISTD_H
3212 #define __need_size_t
3213 #define __need_ptrdiff_t
3214 #undef __need_ptrdiff_t
3215 #undef __need_size_t
3216 #undef __need_wchar_t
3217 #undef NULL
3218 #define NULL ((void *)0)
3219 #undef __need_NULL
3220 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
3221 extern char **environ;
3222 void _exit (int __status) __attribute__ ((__noreturn__));
3223 int access (const char *__path, int __amode);
3224 unsigned alarm (unsigned __secs);
3225 int chdir (const char *__path);
3226 int chmod (const char *__path, mode_t __mode);
3227 int chown (const char *__path, uid_t __owner, gid_t __group);
3228 int chroot (const char *__path);
3229 int close (int __fildes);
3230 size_t confstr (int __name, char *__buf, size_t __len);
3231 char * crypt (const char *__key, const char *__salt);
3232 int daemon (int nochdir, int noclose);
3233 int dup (int __fildes);
3234 int dup2 (int __fildes, int __fildes2);
3235 int dup3 (int __fildes, int __fildes2, int flags);
3236 int eaccess (const char *__path, int __mode);
3237 void encrypt (char *__block, int __edflag);
3238 void endusershell (void);
3239 int euidaccess (const char *__path, int __mode);
3240 int execl (const char *__path, const char *, ...);
3241 int execle (const char *__path, const char *, ...);
3242 int execlp (const char *__file, const char *, ...);
3243 int execlpe (const char *__file, const char *, ...);
3244 int execv (const char *__path, char * const __argv[]);
3245 int execve (const char *__path, char * const __argv[], char * const __envp[]);
3246 int execvp (const char *__file, char * const __argv[]);
3247 int execvpe (const char *__file, char * const __argv[], char * const __envp[]);
3248 int faccessat (int __dirfd, const char *__path, int __mode, int __flags);
3249 int fchdir (int __fildes);
3250 int fchmod (int __fildes, mode_t __mode);
3251 int fchown (int __fildes, uid_t __owner, gid_t __group);
3252 int fchownat (int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags);
3253 int fexecve (int __fd, char * const __argv[], char * const __envp[]);
3254 pid_t fork (void);
3255 long fpathconf (int __fd, int __name);
3256 int fsync (int __fd);
3257 int fdatasync (int __fd);
3258 char * get_current_dir_name (void);
3259 char * getcwd (char *__buf, size_t __size);
3260 int getdomainname (char *__name, size_t __len);
3261 int getentropy (void *, size_t);
3262 gid_t getegid (void);
3263 uid_t geteuid (void);
3264 gid_t getgid (void);
3265 int getgroups (int __gidsetsize, gid_t __grouplist[]);
3266 long gethostid (void);
3267 char * getlogin (void);
3268 int getlogin_r (char *name, size_t namesize) ;
3269 char * getpass (const char *__prompt);
3270 int getpagesize (void);
3271 int getpeereid (int, uid_t *, gid_t *);
3272 pid_t getpgid (pid_t);
3273 pid_t getpgrp (void);
3274 pid_t getpid (void);
3275 pid_t getppid (void);
3276 pid_t getsid (pid_t);
3277 uid_t getuid (void);
3278 char * getusershell (void);
3279 char * getwd (char *__buf);
3280 int iruserok (unsigned long raddr, int superuser, const char *ruser, const char *luser);
3281 int isatty (int __fildes);
3282 int issetugid (void);
3283 int lchown (const char *__path, uid_t __owner, gid_t __group);
3284 int link (const char *__path1, const char *__path2);
3285 int linkat (int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags);
3286 int nice (int __nice_value);
3287 off_t lseek (int __fildes, off_t __offset, int __whence);
3288 #define F_ULOCK 0
3289 #define F_LOCK 1
3290 #define F_TLOCK 2
3291 #define F_TEST 3
3292 int lockf (int __fd, int __cmd, off_t __len);
3293 long pathconf (const char *__path, int __name);
3294 int pause (void);
3295 int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
3296 int pipe (int __fildes[2]);
3297 int pipe2 (int __fildes[2], int flags);
3298 ssize_t pread (int __fd, void *__buf, size_t __nbytes, off_t __offset);
3299 ssize_t pwrite (int __fd, const void *__buf, size_t __nbytes, off_t __offset);
3300 _ssize_t read (int __fd, void *__buf, size_t __nbyte);
3301 int rresvport (int *__alport);
3302 int revoke (char *__path);
3303 int rmdir (const char *__path);
3304 int ruserok (const char *rhost, int superuser, const char *ruser, const char *luser);
3305 void * sbrk (ptrdiff_t __incr);
3306 int setegid (gid_t __gid);
3307 int seteuid (uid_t __uid);
3308 int setgid (gid_t __gid);
3309 int setgroups (int ngroups, const gid_t *grouplist);
3310 int sethostname (const char *, size_t);
3311 int setpgid (pid_t __pid, pid_t __pgid);
3312 int setpgrp (void);
3313 int setregid (gid_t __rgid, gid_t __egid);
3314 int setreuid (uid_t __ruid, uid_t __euid);
3315 pid_t setsid (void);
3316 int setuid (uid_t __uid);
3317 void setusershell (void);
3318 unsigned sleep (unsigned int __seconds);
3319 void swab (const void *__restrict, void *__restrict, ssize_t);
3320 long sysconf (int __name);
3321 pid_t tcgetpgrp (int __fildes);
3322 int tcsetpgrp (int __fildes, pid_t __pgrp_id);
3323 char * ttyname (int __fildes);
3324 int ttyname_r (int, char *, size_t);
3325 int unlink (const char *__path);
3326 int usleep (useconds_t __useconds);
3327 int vhangup (void);
3328 _ssize_t write (int __fd, const void *__buf, size_t __nbyte);
3329 #define __UNISTD_GETOPT__
3330 #define __GETOPT_H__
3331 extern int __attribute__((dllimport)) opterr;
3332 extern int __attribute__((dllimport)) optind;
3333 extern int __attribute__((dllimport)) optopt;
3334 extern int __attribute__((dllimport)) optreset;
3335 extern char __attribute__((dllimport)) *optarg;
3336 int getopt (int, char * const *, const char *);
3337 #undef __UNISTD_GETOPT__
3338 pid_t vfork (void);
3339 int ftruncate (int __fd, off_t __length);
3340 int truncate (const char *, off_t __length);
3341 int getdtablesize (void);
3342 useconds_t ualarm (useconds_t __useconds, useconds_t __interval);
3343 int gethostname (char *__name, size_t __len);
3344 int setdtablesize (int);
3345 void sync (void);
3346 ssize_t readlink (const char *__restrict __path,
3347 char *__restrict __buf, size_t __buflen);
3348 int symlink (const char *__name1, const char *__name2);
3349 ssize_t readlinkat (int __dirfd1, const char *__restrict __path,
3350 char *__restrict __buf, size_t __buflen);
3351 int symlinkat (const char *, int, const char *);
3352 int unlinkat (int, const char *, int);
3353 #define F_OK 0
3354 #define R_OK 4
3355 #define W_OK 2
3356 #define X_OK 1
3357 #define SEEK_SET 0
3358 #define SEEK_CUR 1
3359 #define SEEK_END 2
3360 #define STDIN_FILENO 0
3361 #define STDOUT_FILENO 1
3362 #define STDERR_FILENO 2
3363 #define _SC_ARG_MAX 0
3364 #define _SC_CHILD_MAX 1
3365 #define _SC_CLK_TCK 2
3366 #define _SC_NGROUPS_MAX 3
3367 #define _SC_OPEN_MAX 4
3368 #define _SC_JOB_CONTROL 5
3369 #define _SC_SAVED_IDS 6
3370 #define _SC_VERSION 7
3371 #define _SC_PAGESIZE 8
3372 #define _SC_PAGE_SIZE _SC_PAGESIZE
3373 #define _SC_NPROCESSORS_CONF 9
3374 #define _SC_NPROCESSORS_ONLN 10
3375 #define _SC_PHYS_PAGES 11
3376 #define _SC_AVPHYS_PAGES 12
3377 #define _SC_MQ_OPEN_MAX 13
3378 #define _SC_MQ_PRIO_MAX 14
3379 #define _SC_RTSIG_MAX 15
3380 #define _SC_SEM_NSEMS_MAX 16
3381 #define _SC_SEM_VALUE_MAX 17
3382 #define _SC_SIGQUEUE_MAX 18
3383 #define _SC_TIMER_MAX 19
3384 #define _SC_TZNAME_MAX 20
3385 #define _SC_ASYNCHRONOUS_IO 21
3386 #define _SC_FSYNC 22
3387 #define _SC_MAPPED_FILES 23
3388 #define _SC_MEMLOCK 24
3389 #define _SC_MEMLOCK_RANGE 25
3390 #define _SC_MEMORY_PROTECTION 26
3391 #define _SC_MESSAGE_PASSING 27
3392 #define _SC_PRIORITIZED_IO 28
3393 #define _SC_REALTIME_SIGNALS 29
3394 #define _SC_SEMAPHORES 30
3395 #define _SC_SHARED_MEMORY_OBJECTS 31
3396 #define _SC_SYNCHRONIZED_IO 32
3397 #define _SC_TIMERS 33
3398 #define _SC_AIO_LISTIO_MAX 34
3399 #define _SC_AIO_MAX 35
3400 #define _SC_AIO_PRIO_DELTA_MAX 36
3401 #define _SC_DELAYTIMER_MAX 37
3402 #define _SC_THREAD_KEYS_MAX 38
3403 #define _SC_THREAD_STACK_MIN 39
3404 #define _SC_THREAD_THREADS_MAX 40
3405 #define _SC_TTY_NAME_MAX 41
3406 #define _SC_THREADS 42
3407 #define _SC_THREAD_ATTR_STACKADDR 43
3408 #define _SC_THREAD_ATTR_STACKSIZE 44
3409 #define _SC_THREAD_PRIORITY_SCHEDULING 45
3410 #define _SC_THREAD_PRIO_INHERIT 46
3411 #define _SC_THREAD_PRIO_PROTECT 47
3412 #define _SC_THREAD_PRIO_CEILING _SC_THREAD_PRIO_PROTECT
3413 #define _SC_THREAD_PROCESS_SHARED 48
3414 #define _SC_THREAD_SAFE_FUNCTIONS 49
3415 #define _SC_GETGR_R_SIZE_MAX 50
3416 #define _SC_GETPW_R_SIZE_MAX 51
3417 #define _SC_LOGIN_NAME_MAX 52
3418 #define _SC_THREAD_DESTRUCTOR_ITERATIONS 53
3419 #define _SC_ADVISORY_INFO 54
3420 #define _SC_ATEXIT_MAX 55
3421 #define _SC_BARRIERS 56
3422 #define _SC_BC_BASE_MAX 57
3423 #define _SC_BC_DIM_MAX 58
3424 #define _SC_BC_SCALE_MAX 59
3425 #define _SC_BC_STRING_MAX 60
3426 #define _SC_CLOCK_SELECTION 61
3427 #define _SC_COLL_WEIGHTS_MAX 62
3428 #define _SC_CPUTIME 63
3429 #define _SC_EXPR_NEST_MAX 64
3430 #define _SC_HOST_NAME_MAX 65
3431 #define _SC_IOV_MAX 66
3432 #define _SC_IPV6 67
3433 #define _SC_LINE_MAX 68
3434 #define _SC_MONOTONIC_CLOCK 69
3435 #define _SC_RAW_SOCKETS 70
3436 #define _SC_READER_WRITER_LOCKS 71
3437 #define _SC_REGEXP 72
3438 #define _SC_RE_DUP_MAX 73
3439 #define _SC_SHELL 74
3440 #define _SC_SPAWN 75
3441 #define _SC_SPIN_LOCKS 76
3442 #define _SC_SPORADIC_SERVER 77
3443 #define _SC_SS_REPL_MAX 78
3444 #define _SC_SYMLOOP_MAX 79
3445 #define _SC_THREAD_CPUTIME 80
3446 #define _SC_THREAD_SPORADIC_SERVER 81
3447 #define _SC_TIMEOUTS 82
3448 #define _SC_TRACE 83
3449 #define _SC_TRACE_EVENT_FILTER 84
3450 #define _SC_TRACE_EVENT_NAME_MAX 85
3451 #define _SC_TRACE_INHERIT 86
3452 #define _SC_TRACE_LOG 87
3453 #define _SC_TRACE_NAME_MAX 88
3454 #define _SC_TRACE_SYS_MAX 89
3455 #define _SC_TRACE_USER_EVENT_MAX 90
3456 #define _SC_TYPED_MEMORY_OBJECTS 91
3457 #define _SC_V7_ILP32_OFF32 92
3458 #define _SC_V6_ILP32_OFF32 _SC_V7_ILP32_OFF32
3459 #define _SC_XBS5_ILP32_OFF32 _SC_V7_ILP32_OFF32
3460 #define _SC_V7_ILP32_OFFBIG 93
3461 #define _SC_V6_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3462 #define _SC_XBS5_ILP32_OFFBIG _SC_V7_ILP32_OFFBIG
3463 #define _SC_V7_LP64_OFF64 94
3464 #define _SC_V6_LP64_OFF64 _SC_V7_LP64_OFF64
3465 #define _SC_XBS5_LP64_OFF64 _SC_V7_LP64_OFF64
3466 #define _SC_V7_LPBIG_OFFBIG 95
3467 #define _SC_V6_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3468 #define _SC_XBS5_LPBIG_OFFBIG _SC_V7_LPBIG_OFFBIG
3469 #define _SC_XOPEN_CRYPT 96
3470 #define _SC_XOPEN_ENH_I18N 97
3471 #define _SC_XOPEN_LEGACY 98
3472 #define _SC_XOPEN_REALTIME 99
3473 #define _SC_STREAM_MAX 100
3474 #define _SC_PRIORITY_SCHEDULING 101
3475 #define _SC_XOPEN_REALTIME_THREADS 102
3476 #define _SC_XOPEN_SHM 103
3477 #define _SC_XOPEN_STREAMS 104
3478 #define _SC_XOPEN_UNIX 105
3479 #define _SC_XOPEN_VERSION 106
3480 #define _SC_2_CHAR_TERM 107
3481 #define _SC_2_C_BIND 108
3482 #define _SC_2_C_DEV 109
3483 #define _SC_2_FORT_DEV 110
3484 #define _SC_2_FORT_RUN 111
3485 #define _SC_2_LOCALEDEF 112
3486 #define _SC_2_PBS 113
3487 #define _SC_2_PBS_ACCOUNTING 114
3488 #define _SC_2_PBS_CHECKPOINT 115
3489 #define _SC_2_PBS_LOCATE 116
3490 #define _SC_2_PBS_MESSAGE 117
3491 #define _SC_2_PBS_TRACK 118
3492 #define _SC_2_SW_DEV 119
3493 #define _SC_2_UPE 120
3494 #define _SC_2_VERSION 121
3495 #define _SC_THREAD_ROBUST_PRIO_INHERIT 122
3496 #define _SC_THREAD_ROBUST_PRIO_PROTECT 123
3497 #define _SC_XOPEN_UUCP 124
3498 #define _SC_LEVEL1_ICACHE_SIZE 125
3499 #define _SC_LEVEL1_ICACHE_ASSOC 126
3500 #define _SC_LEVEL1_ICACHE_LINESIZE 127
3501 #define _SC_LEVEL1_DCACHE_SIZE 128
3502 #define _SC_LEVEL1_DCACHE_ASSOC 129
3503 #define _SC_LEVEL1_DCACHE_LINESIZE 130
3504 #define _SC_LEVEL2_CACHE_SIZE 131
3505 #define _SC_LEVEL2_CACHE_ASSOC 132
3506 #define _SC_LEVEL2_CACHE_LINESIZE 133
3507 #define _SC_LEVEL3_CACHE_SIZE 134
3508 #define _SC_LEVEL3_CACHE_ASSOC 135
3509 #define _SC_LEVEL3_CACHE_LINESIZE 136
3510 #define _SC_LEVEL4_CACHE_SIZE 137
3511 #define _SC_LEVEL4_CACHE_ASSOC 138
3512 #define _SC_LEVEL4_CACHE_LINESIZE 139
3513 #define _SC_POSIX_26_VERSION 140
3514 #define _PC_LINK_MAX 0
3515 #define _PC_MAX_CANON 1
3516 #define _PC_MAX_INPUT 2
3517 #define _PC_NAME_MAX 3
3518 #define _PC_PATH_MAX 4
3519 #define _PC_PIPE_BUF 5
3520 #define _PC_CHOWN_RESTRICTED 6
3521 #define _PC_NO_TRUNC 7
3522 #define _PC_VDISABLE 8
3523 #define _PC_ASYNC_IO 9
3524 #define _PC_PRIO_IO 10
3525 #define _PC_SYNC_IO 11
3526 #define _PC_FILESIZEBITS 12
3527 #define _PC_2_SYMLINKS 13
3528 #define _PC_SYMLINK_MAX 14
3529 #define _PC_ALLOC_SIZE_MIN 15
3530 #define _PC_REC_INCR_XFER_SIZE 16
3531 #define _PC_REC_MAX_XFER_SIZE 17
3532 #define _PC_REC_MIN_XFER_SIZE 18
3533 #define _PC_REC_XFER_ALIGN 19
3534 #define _PC_TIMESTAMP_RESOLUTION 20
3535 #define _PC_POSIX_PERMISSIONS 90
3536 #define _PC_POSIX_SECURITY 91
3537 #define _PC_CASE_INSENSITIVE 92
3538 #define _CS_PATH 0
3539 #define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1
3540 #define _CS_POSIX_V6_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3541 #define _CS_XBS5_ILP32_OFF32_CFLAGS _CS_POSIX_V7_ILP32_OFF32_CFLAGS
3542 #define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 2
3543 #define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3544 #define _CS_XBS5_ILP32_OFF32_LDFLAGS _CS_POSIX_V7_ILP32_OFF32_LDFLAGS
3545 #define _CS_POSIX_V7_ILP32_OFF32_LIBS 3
3546 #define _CS_POSIX_V6_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3547 #define _CS_XBS5_ILP32_OFF32_LIBS _CS_POSIX_V7_ILP32_OFF32_LIBS
3548 #define _CS_XBS5_ILP32_OFF32_LINTFLAGS 4
3549 #define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 5
3550 #define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3551 #define _CS_XBS5_ILP32_OFFBIG_CFLAGS _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS
3552 #define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 6
3553 #define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3554 #define _CS_XBS5_ILP32_OFFBIG_LDFLAGS _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS
3555 #define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 7
3556 #define _CS_POSIX_V6_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3557 #define _CS_XBS5_ILP32_OFFBIG_LIBS _CS_POSIX_V7_ILP32_OFFBIG_LIBS
3558 #define _CS_XBS5_ILP32_OFFBIG_LINTFLAGS 8
3559 #define _CS_POSIX_V7_LP64_OFF64_CFLAGS 9
3560 #define _CS_POSIX_V6_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3561 #define _CS_XBS5_LP64_OFF64_CFLAGS _CS_POSIX_V7_LP64_OFF64_CFLAGS
3562 #define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 10
3563 #define _CS_POSIX_V6_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3564 #define _CS_XBS5_LP64_OFF64_LDFLAGS _CS_POSIX_V7_LP64_OFF64_LDFLAGS
3565 #define _CS_POSIX_V7_LP64_OFF64_LIBS 11
3566 #define _CS_POSIX_V6_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3567 #define _CS_XBS5_LP64_OFF64_LIBS _CS_POSIX_V7_LP64_OFF64_LIBS
3568 #define _CS_XBS5_LP64_OFF64_LINTFLAGS 12
3569 #define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 13
3570 #define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3571 #define _CS_XBS5_LPBIG_OFFBIG_CFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
3572 #define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 14
3573 #define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3574 #define _CS_XBS5_LPBIG_OFFBIG_LDFLAGS _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
3575 #define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 15
3576 #define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3577 #define _CS_XBS5_LPBIG_OFFBIG_LIBS _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
3578 #define _CS_XBS5_LPBIG_OFFBIG_LINTFLAGS 16
3579 #define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 17
3580 #define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3581 #define _CS_XBS5_WIDTH_RESTRICTED_ENVS _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
3582 #define _CS_POSIX_V7_THREADS_CFLAGS 18
3583 #define _CS_POSIX_V7_THREADS_LDFLAGS 19
3584 #define _CS_V7_ENV 20
3585 #define _CS_V6_ENV _CS_V7_ENV
3586 #define _CS_LFS_CFLAGS 21
3587 #define _CS_LFS_LDFLAGS 22
3588 #define _CS_LFS_LIBS 23
3589 #define _CS_LFS_LINTFLAGS 24
3590 #define _SSP_UNISTD_H_
3591
3592 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); };
3593 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); };
3594 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); };
3595 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[])
3596 {
3597 if (__builtin_object_size(__buf, 2 > 1) != (size_t)-1 && __n * sizeof(gid_t) > __builtin_object_size(__buf, 2 > 1)) __chk_fail();
3598 return __ssp_real_getgroups (__n, __buf);
3599 }
3600 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); };
3601 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); };
3602 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); };
3603 _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); };
3604 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); };
3605 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); };
3606 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); };
3607
3608 #define RUBY_MISSING_H 1
3609 #define _MATH_H_
3610
3611 #define _M_LN2 0.693147180559945309417
3612 #define HUGE_VAL (__builtin_huge_val())
3613 #define HUGE_VALF (__builtin_huge_valf())
3614 #define HUGE_VALL (__builtin_huge_vall())
3615 #define INFINITY (__builtin_inff())
3616 #define NAN (__builtin_nanf(""))
3617 extern double atan (double);
3618 extern double cos (double);
3619 extern double sin (double);
3620 extern double tan (double);
3621 extern double tanh (double);
3622 extern double frexp (double, int *);
3623 extern double modf (double, double *);
3624 extern double ceil (double);
3625 extern double fabs (double);
3626 extern double floor (double);
3627 extern double acos (double);
3628 extern double asin (double);
3629 extern double atan2 (double, double);
3630 extern double cosh (double);
3631 extern double sinh (double);
3632 extern double exp (double);
3633 extern double ldexp (double, int);
3634 extern double log (double);
3635 extern double log10 (double);
3636 extern double pow (double, double);
3637 extern double sqrt (double);
3638 extern double fmod (double, double);
3639 extern int finite (double);
3640 extern int finitef (float);
3641 extern int finitel (long double);
3642 extern int isinff (float);
3643 extern int isnanf (float);
3644 extern int isinfl (long double);
3645 extern int isnanl (long double);
3646 extern int isinf (double);
3647 extern int isnan (double);
3648 #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
3649 #define __TMP_FLT_EVAL_METHOD
3650 typedef float float_t;
3651 typedef double double_t;
3652 #undef FLT_EVAL_METHOD
3653 #define FP_NAN 0
3654 #define FP_INFINITE 1
3655 #define FP_ZERO 2
3656 #define FP_SUBNORMAL 3
3657 #define FP_NORMAL 4
3658 #define FP_ILOGB0 (-__INT_MAX__)
3659 #define FP_ILOGBNAN __INT_MAX__
3660 #define MATH_ERRNO 1
3661 #define MATH_ERREXCEPT 2
3662 #define math_errhandling MATH_ERRNO
3663 extern int __isinff (float x);
3664 extern int __isinfd (double x);
3665 extern int __isnanf (float x);
3666 extern int __isnand (double x);
3667 extern int __fpclassifyf (float x);
3668 extern int __fpclassifyd (double x);
3669 extern int __signbitf (float x);
3670 extern int __signbitd (double x);
3671 #define fpclassify(__x) (__builtin_fpclassify (FP_NAN, FP_INFINITE, FP_NORMAL, FP_SUBNORMAL, FP_ZERO, __x))
3672 #define isfinite(__x) (__builtin_isfinite (__x))
3673 #define isinf(__x) (__builtin_isinf_sign (__x))
3674 #define isnan(__x) (__builtin_isnan (__x))
3675 #define isnormal(__x) (__builtin_isnormal (__x))
3676 #define signbit(__x) ((sizeof(__x) == sizeof(float)) ? __builtin_signbitf(__x) : (sizeof(__x) == sizeof(double)) ? __builtin_signbit (__x) : __builtin_signbitl(__x))
3677 #define isgreater(__x,__y) (__builtin_isgreater (__x, __y))
3678 #define isgreaterequal(__x,__y) (__builtin_isgreaterequal (__x, __y))
3679 #define isless(__x,__y) (__builtin_isless (__x, __y))
3680 #define islessequal(__x,__y) (__builtin_islessequal (__x, __y))
3681 #define islessgreater(__x,__y) (__builtin_islessgreater (__x, __y))
3682 #define isunordered(__x,__y) (__builtin_isunordered (__x, __y))
3683 extern double infinity (void);
3684 extern double nan (const char *);
3685 extern double copysign (double, double);
3686 extern double logb (double);
3687 extern int ilogb (double);
3688 extern double asinh (double);
3689 extern double cbrt (double);
3690 extern double nextafter (double, double);
3691 extern double rint (double);
3692 extern double scalbn (double, int);
3693 extern double exp2 (double);
3694 extern double scalbln (double, long int);
3695 extern double tgamma (double);
3696 extern double nearbyint (double);
3697 extern long int lrint (double);
3698 extern long long int llrint (double);
3699 extern double round (double);
3700 extern long int lround (double);
3701 extern long long int llround (double);
3702 extern double trunc (double);
3703 extern double remquo (double, double, int *);
3704 extern double fdim (double, double);
3705 extern double fmax (double, double);
3706 extern double fmin (double, double);
3707 extern double fma (double, double, double);
3708 extern double log1p (double);
3709 extern double expm1 (double);
3710 extern double acosh (double);
3711 extern double atanh (double);
3712 extern double remainder (double, double);
3713 extern double gamma (double);
3714 extern double lgamma (double);
3715 extern double erf (double);
3716 extern double erfc (double);
3717 extern double log2 (double);
3718 #define log2(x) (log (x) / _M_LN2)
3719 extern double hypot (double, double);
3720 extern float atanf (float);
3721 extern float cosf (float);
3722 extern float sinf (float);
3723 extern float tanf (float);
3724 extern float tanhf (float);
3725 extern float frexpf (float, int *);
3726 extern float modff (float, float *);
3727 extern float ceilf (float);
3728 extern float fabsf (float);
3729 extern float floorf (float);
3730 extern float acosf (float);
3731 extern float asinf (float);
3732 extern float atan2f (float, float);
3733 extern float coshf (float);
3734 extern float sinhf (float);
3735 extern float expf (float);
3736 extern float ldexpf (float, int);
3737 extern float logf (float);
3738 extern float log10f (float);
3739 extern float powf (float, float);
3740 extern float sqrtf (float);
3741 extern float fmodf (float, float);
3742 extern float exp2f (float);
3743 extern float scalblnf (float, long int);
3744 extern float tgammaf (float);
3745 extern float nearbyintf (float);
3746 extern long int lrintf (float);
3747 extern long long int llrintf (float);
3748 extern float roundf (float);
3749 extern long int lroundf (float);
3750 extern long long int llroundf (float);
3751 extern float truncf (float);
3752 extern float remquof (float, float, int *);
3753 extern float fdimf (float, float);
3754 extern float fmaxf (float, float);
3755 extern float fminf (float, float);
3756 extern float fmaf (float, float, float);
3757 extern float infinityf (void);
3758 extern float nanf (const char *);
3759 extern float copysignf (float, float);
3760 extern float logbf (float);
3761 extern int ilogbf (float);
3762 extern float asinhf (float);
3763 extern float cbrtf (float);
3764 extern float nextafterf (float, float);
3765 extern float rintf (float);
3766 extern float scalbnf (float, int);
3767 extern float log1pf (float);
3768 extern float expm1f (float);
3769 extern float acoshf (float);
3770 extern float atanhf (float);
3771 extern float remainderf (float, float);
3772 extern float gammaf (float);
3773 extern float lgammaf (float);
3774 extern float erff (float);
3775 extern float erfcf (float);
3776 extern float log2f (float);
3777 extern float hypotf (float, float);
3778 extern long double atanl (long double);
3779 extern long double cosl (long double);
3780 extern long double sinl (long double);
3781 extern long double tanl (long double);
3782 extern long double tanhl (long double);
3783 extern long double frexpl (long double, int *);
3784 extern long double modfl (long double, long double *);
3785 extern long double ceill (long double);
3786 extern long double fabsl (long double);
3787 extern long double floorl (long double);
3788 extern long double log1pl (long double);
3789 extern long double expm1l (long double);
3790 extern long double acosl (long double);
3791 extern long double asinl (long double);
3792 extern long double atan2l (long double, long double);
3793 extern long double coshl (long double);
3794 extern long double sinhl (long double);
3795 extern long double expl (long double);
3796 extern long double ldexpl (long double, int);
3797 extern long double logl (long double);
3798 extern long double log10l (long double);
3799 extern long double powl (long double, long double);
3800 extern long double sqrtl (long double);
3801 extern long double fmodl (long double, long double);
3802 extern long double hypotl (long double, long double);
3803 extern long double copysignl (long double, long double);
3804 extern long double nanl (const char *);
3805 extern int ilogbl (long double);
3806 extern long double asinhl (long double);
3807 extern long double cbrtl (long double);
3808 extern long double nextafterl (long double, long double);
3809 extern float nexttowardf (float, long double);
3810 extern double nexttoward (double, long double);
3811 extern long double nexttowardl (long double, long double);
3812 extern long double logbl (long double);
3813 extern long double log2l (long double);
3814 extern long double rintl (long double);
3815 extern long double scalbnl (long double, int);
3816 extern long double exp2l (long double);
3817 extern long double scalblnl (long double, long);
3818 extern long double tgammal (long double);
3819 extern long double nearbyintl (long double);
3820 extern long int lrintl (long double);
3821 extern long long int llrintl (long double);
3822 extern long double roundl (long double);
3823 extern long lroundl (long double);
3824 extern long long int llroundl (long double);
3825 extern long double truncl (long double);
3826 extern long double remquol (long double, long double, int *);
3827 extern long double fdiml (long double, long double);
3828 extern long double fmaxl (long double, long double);
3829 extern long double fminl (long double, long double);
3830 extern long double fmal (long double, long double, long double);
3831 extern long double acoshl (long double);
3832 extern long double atanhl (long double);
3833 extern long double remainderl (long double, long double);
3834 extern long double lgammal (long double);
3835 extern long double erfl (long double);
3836 extern long double erfcl (long double);
3837 extern double drem (double, double);
3838 extern float dremf (float, float);
3839 extern float dreml (long double, long double);
3840 extern double gamma_r (double, int *);
3841 extern double lgamma_r (double, int *);
3842 extern float gammaf_r (float, int *);
3843 extern float lgammaf_r (float, int *);
3844 extern double y0 (double);
3845 extern double y1 (double);
3846 extern double yn (int, double);
3847 extern double j0 (double);
3848 extern double j1 (double);
3849 extern double jn (int, double);
3850 extern float y0f (float);
3851 extern float y1f (float);
3852 extern float ynf (int, float);
3853 extern float j0f (float);
3854 extern float j1f (float);
3855 extern float jnf (int, float);
3856 extern void sincos (double, double *, double *);
3857 extern void sincosf (float, float *, float *);
3858 extern void sincosl (long double, long double *, long double *);
3859 extern double exp10 (double);
3860 extern double pow10 (double);
3861 extern float exp10f (float);
3862 extern float pow10f (float);
3863 extern float exp10l (float);
3864 extern float pow10l (float);
3865 #define signgam (*__signgam())
3866 extern int *__signgam (void);
3867 #define __signgam_r(ptr) _REENT_SIGNGAM(ptr)
3868 #define MAXFLOAT 3.40282347e+38F
3869 #define M_E 2.7182818284590452354
3870 #define M_LOG2E 1.4426950408889634074
3871 #define M_LOG10E 0.43429448190325182765
3872 #define M_LN2 _M_LN2
3873 #define M_LN10 2.30258509299404568402
3874 #define M_PI 3.14159265358979323846
3875 #define M_PI_2 1.57079632679489661923
3876 #define M_PI_4 0.78539816339744830962
3877 #define M_1_PI 0.31830988618379067154
3878 #define M_2_PI 0.63661977236758134308
3879 #define M_2_SQRTPI 1.12837916709551257390
3880 #define M_SQRT2 1.41421356237309504880
3881 #define M_SQRT1_2 0.70710678118654752440
3882 #define M_TWOPI (M_PI * 2.0)
3883 #define M_3PI_4 2.3561944901923448370E0
3884 #define M_SQRTPI 1.77245385090551602792981
3885 #define M_LN2LO 1.9082149292705877000E-10
3886 #define M_LN2HI 6.9314718036912381649E-1
3887 #define M_SQRT3 1.73205080756887719000
3888 #define M_IVLN10 0.43429448190325182765
3889 #define M_LOG2_E _M_LN2
3890 #define M_INVLN2 1.4426950408889633870E0
3891 enum __fdlibm_version
3892 {
3893 __fdlibm_ieee = -1,
3894 __fdlibm_posix
3895 };
3896 #define _LIB_VERSION_TYPE enum __fdlibm_version
3897 #define _LIB_VERSION __fdlib_version
3898 extern __attribute__((dllimport)) enum __fdlibm_version __fdlib_version;
3899 #define _IEEE_ __fdlibm_ieee
3900 #define _POSIX_ __fdlibm_posix
3901
3902 #undef RUBY_EXTERN
3903 #define RUBY_EXTERN extern
3904
3905 #pragma GCC visibility push(default)
3906
3907 extern void setproctitle(const char *fmt, ...);
3908
3909 #pragma GCC visibility pop
3910
3911 #define RUBY
3912 #undef _
3913 #define _(args) args
3914 #undef __
3915 #define __(args) args
3916 #define ANYARGS
3917
3918 #pragma GCC visibility push(default)
3919
3920 #define xmalloc ruby_xmalloc
3921 #define xmalloc2 ruby_xmalloc2
3922 #define xcalloc ruby_xcalloc
3923 #define xrealloc ruby_xrealloc
3924 #define xrealloc2 ruby_xrealloc2
3925 #define xfree ruby_xfree
3926 #define RUBY_ATTR_ALLOC_SIZE(params) __attribute__ ((alloc_size params))
3927 #define RUBY_ATTR_MALLOC __attribute__((__malloc__))
3928 #define RUBY_ATTR_RETURNS_NONNULL __attribute__((__returns_nonnull__))
3929 void *ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1)));
3930 void *ruby_xmalloc2(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
3931 void *ruby_xcalloc(size_t,size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (1,2)));
3932 void *ruby_xrealloc(void*,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2)));
3933 void *ruby_xrealloc2(void*,size_t,size_t) __attribute__((__returns_nonnull__)) __attribute__ ((alloc_size (2,3)));
3934 void ruby_xfree(void*);
3935 #define USE_GC_MALLOC_OBJ_INFO_DETAILS 0
3936 #define STRINGIZE(expr) STRINGIZE0(expr)
3937 #define STRINGIZE0(expr) #expr
3938 #define HAVE_TRUE_LONG_LONG 1
3939 #define LONG_LONG long long
3940 #undef _WIN32
3941 #undef RUBY_EXTERN
3942 #define FALSE 0
3943 #define TRUE 1
3944 #define MJIT_FUNC_EXPORTED RUBY_FUNC_EXPORTED
3945 #define MJIT_SYMBOL_EXPORT_BEGIN RUBY_SYMBOL_EXPORT_BEGIN
3946 #define MJIT_SYMBOL_EXPORT_END RUBY_SYMBOL_EXPORT_END
3947 #define RUBY_EXTERN extern
3948 #define EXTERN _Pragma("message \"EXTERN is deprecated, use RUBY_EXTERN instead\""); RUBY_EXTERN
3949 #define RUBY_MBCHAR_MAXSIZE INT_MAX
3950 #define FLUSH_REGISTER_WINDOWS ((void)0)
3951 #define PATH_SEP ":"
3952 #define PATH_SEP_CHAR PATH_SEP[0]
3953 #define PATH_ENV "PATH"
3954 #define CASEFOLD_FILESYSTEM 0
3955 #define RUBY_ALIAS_FUNCTION(prot,name,args) RUBY_ALIAS_FUNCTION_TYPE(VALUE, prot, name, args)
3956 #define UNALIGNED_WORD_ACCESS 1
3957 #define PACKED_STRUCT_UNALIGNED(x) PACKED_STRUCT(x)
3958 #define NORETURN_STYLE_NEW 1
3959
3960 #pragma GCC visibility pop
3961
3962 #define RUBY_ASSERT_H
3963 __attribute__ ((__noreturn__)) void rb_assert_failure(const char *, int, const char *, const char *);
3964 #define RUBY_ASSERT_FAIL(expr) rb_assert_failure(__FILE__, __LINE__, RUBY_FUNCTION_NAME_STRING, expr)
3965 #define RUBY_ASSERT_MESG(expr,mesg) ((expr) ? (void)0 : RUBY_ASSERT_FAIL(mesg))
3966 #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)))
3967 #define RUBY_ASSERT(expr) RUBY_ASSERT_MESG_WHEN((!RUBY_NDEBUG+0), expr, #expr)
3968 #define RUBY_ASSERT_WHEN(cond,expr) RUBY_ASSERT_MESG_WHEN(cond, expr, #expr)
3969 #define RUBY_ASSERT_ALWAYS(expr) RUBY_ASSERT_MESG_WHEN(TRUE, expr, #expr)
3970 #define RUBY_DEBUG 0
3971 #define RUBY_NDEBUG 0
3972 #define ASSUME(x) (RB_LIKELY(!!(x)) ? (void)0 : UNREACHABLE)
3973 #define UNREACHABLE_RETURN(val) UNREACHABLE
3974 #define RUBY_MACRO_SELECT(base,n) TOKEN_PASTE(base, n)
3975 #define _STDARG_H
3976 #define _ANSI_STDARG_H_
3977 #undef __need___va_list
3978 #define va_start(v,l) __builtin_va_start(v,l)
3979 #define va_end(v) __builtin_va_end(v)
3980 #define va_arg(v,l) __builtin_va_arg(v,l)
3981 #define va_copy(d,s) __builtin_va_copy(d,s)
3982 #define __va_copy(d,s) __builtin_va_copy(d,s)
3983 #define _VA_LIST_
3984 #define _VA_LIST
3985 #define _VA_LIST_T_H
3986 #define __va_list__
3987
3988 #pragma GCC visibility push(default)
3989
3990 typedef unsigned long VALUE;
3991 typedef unsigned long ID;
3992 #define SIGNED_VALUE long
3993 #define SIZEOF_VALUE SIZEOF_LONG
3994 #define PRI_VALUE_PREFIX "l"
3995 typedef char ruby_check_sizeof_int[4 == sizeof(int) ? 1 : -1];
3996 typedef char ruby_check_sizeof_long[8 == sizeof(long) ? 1 : -1];
3997 typedef char ruby_check_sizeof_long_long[8 == sizeof(long long) ? 1 : -1];
3998 typedef char ruby_check_sizeof_voidp[8 == sizeof(void*) ? 1 : -1];
3999 #define PRI_INT_PREFIX ""
4000 #define PRI_LONG_PREFIX "l"
4001 #define PRI_SHORT_PREFIX "h"
4002 #define RUBY_PRI_VALUE_MARK "\v"
4003 #define PRIdVALUE PRI_VALUE_PREFIX"d"
4004 #define PRIoVALUE PRI_VALUE_PREFIX"o"
4005 #define PRIuVALUE PRI_VALUE_PREFIX"u"
4006 #define PRIxVALUE PRI_VALUE_PREFIX"x"
4007 #define PRIXVALUE PRI_VALUE_PREFIX"X"
4008 #define PRIsVALUE PRI_VALUE_PREFIX"i" RUBY_PRI_VALUE_MARK
4009 #define PRIdPTRDIFF PRI_PTRDIFF_PREFIX"d"
4010 #define PRIiPTRDIFF PRI_PTRDIFF_PREFIX"i"
4011 #define PRIoPTRDIFF PRI_PTRDIFF_PREFIX"o"
4012 #define PRIuPTRDIFF PRI_PTRDIFF_PREFIX"u"
4013 #define PRIxPTRDIFF PRI_PTRDIFF_PREFIX"x"
4014 #define PRIXPTRDIFF PRI_PTRDIFF_PREFIX"X"
4015 #define PRIdSIZE PRI_SIZE_PREFIX"d"
4016 #define PRIiSIZE PRI_SIZE_PREFIX"i"
4017 #define PRIoSIZE PRI_SIZE_PREFIX"o"
4018 #define PRIuSIZE PRI_SIZE_PREFIX"u"
4019 #define PRIxSIZE PRI_SIZE_PREFIX"x"
4020 #define PRIXSIZE PRI_SIZE_PREFIX"X"
4021 #define _GCC_LIMITS_H_
4022 #define _GCC_NEXT_LIMITS_H
4023 #define _FEATURES_H
4024 #define _LIMITS_H___
4025 #define _MACH_MACHLIMITS_H_
4026 #undef CHAR_BIT
4027 #define CHAR_BIT __CHAR_BIT__
4028 #undef LONG_BIT
4029 #define LONG_BIT (__SIZEOF_LONG__ * __CHAR_BIT__)
4030 #undef WORD_BIT
4031 #define WORD_BIT (__SIZEOF_INT__ * __CHAR_BIT__)
4032 #define MB_LEN_MAX 8
4033 #undef SCHAR_MIN
4034 #define SCHAR_MIN (-128)
4035 #undef SCHAR_MAX
4036 #define SCHAR_MAX 127
4037 #undef UCHAR_MAX
4038 #define UCHAR_MAX 255
4039 #undef CHAR_MIN
4040 #define CHAR_MIN (-128)
4041 #undef CHAR_MAX
4042 #define CHAR_MAX 127
4043 #undef SHRT_MIN
4044 #define SHRT_MIN (-32768)
4045 #undef SHRT_MAX
4046 #define SHRT_MAX 32767
4047 #undef USHRT_MAX
4048 #define USHRT_MAX 65535
4049 #undef INT_MIN
4050 #define INT_MIN (-INT_MAX-1)
4051 #undef INT_MAX
4052 #define INT_MAX __INT_MAX__
4053 #undef UINT_MAX
4054 #define UINT_MAX (INT_MAX * 2U + 1)
4055 #undef LONG_MIN
4056 #define LONG_MIN (-LONG_MAX-1L)
4057 #undef LONG_MAX
4058 #define LONG_MAX __LONG_MAX__
4059 #undef ULONG_MAX
4060 #define ULONG_MAX (LONG_MAX * 2UL + 1)
4061 #undef LONG_LONG_MIN
4062 #define LONG_LONG_MIN (-LONG_LONG_MAX-1)
4063 #undef LONG_LONG_MAX
4064 #define LONG_LONG_MAX __LONG_LONG_MAX__
4065 #undef ULONG_LONG_MAX
4066 #define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1)
4067 #undef LLONG_MIN
4068 #define LLONG_MIN (-LLONG_MAX-1)
4069 #undef LLONG_MAX
4070 #define LLONG_MAX __LONG_LONG_MAX__
4071 #undef ULLONG_MAX
4072 #define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
4073 #undef SSIZE_MAX
4074 #define SSIZE_MAX (__LONG_MAX__)
4075 #define AIO_LISTIO_MAX 32
4076 #define AIO_MAX 8
4077 #define AIO_PRIO_DELTA_MAX 0
4078 #undef ARG_MAX
4079 #define ARG_MAX 32000
4080 #undef ATEXIT_MAX
4081 #define ATEXIT_MAX 32
4082 #undef CHILD_MAX
4083 #define CHILD_MAX 256
4084 #undef DELAYTIMER_MAX
4085 #define DELAYTIMER_MAX __INT_MAX__
4086 #undef HOST_NAME_MAX
4087 #define HOST_NAME_MAX 255
4088 #undef IOV_MAX
4089 #define IOV_MAX 1024
4090 #undef LOGIN_NAME_MAX
4091 #define LOGIN_NAME_MAX 256
4092 #undef MQ_OPEN_MAX
4093 #define MQ_OPEN_MAX OPEN_MAX
4094 #undef MQ_PRIO_MAX
4095 #define MQ_PRIO_MAX INT_MAX
4096 #undef OPEN_MAX
4097 #define OPEN_MAX 256
4098 #undef PAGESIZE
4099 #define PAGESIZE 65536
4100 #undef PAGE_SIZE
4101 #define PAGE_SIZE PAGESIZE
4102 #undef PTHREAD_DESTRUCTOR_ITERATIONS
4103 #define PTHREAD_DESTRUCTOR_ITERATIONS 1
4104 #undef PTHREAD_KEYS_MAX
4105 #define PTHREAD_KEYS_MAX 1024
4106 #undef PTHREAD_STACK_MIN
4107 #define PTHREAD_STACK_MIN 65536
4108 #undef PTHREAD_THREADS_MAX
4109 #undef RTSIG_MAX
4110 #define RTSIG_MAX 33
4111 #undef SEM_NSEMS_MAX
4112 #undef SEM_VALUE_MAX
4113 #define SEM_VALUE_MAX 1147483648
4114 #undef SIGQUEUE_MAX
4115 #define SIGQUEUE_MAX 32
4116 #undef SS_REPL_MAX
4117 #undef STREAM_MAX
4118 #define STREAM_MAX 20
4119 #undef SYMLOOP_MAX
4120 #define SYMLOOP_MAX 10
4121 #undef TIMER_MAX
4122 #define TIMER_MAX 32
4123 #undef TRACE_EVENT_NAME_MAX
4124 #undef TRACE_NAME_MAX
4125 #undef TRACE_SYS_MAX
4126 #undef TRACE_USER_EVENT_MAX
4127 #undef TTY_NAME_MAX
4128 #define TTY_NAME_MAX 32
4129 #undef TZNAME_MAX
4130 #undef FILESIZEBITS
4131 #define FILESIZEBITS 64
4132 #undef LINK_MAX
4133 #define LINK_MAX 1024
4134 #undef MAX_CANON
4135 #define MAX_CANON 255
4136 #undef MAX_INPUT
4137 #define MAX_INPUT 255
4138 #undef NAME_MAX
4139 #define NAME_MAX 255
4140 #undef PATH_MAX
4141 #define PATH_MAX 4096
4142 #undef PIPE_BUF
4143 #define PIPE_BUF 4096
4144 #undef POSIX_ALLOC_SIZE_MIN
4145 #undef POSIX_REC_INCR_XFER_SIZE
4146 #undef POSIX_REC_MAX_XFER_SIZE
4147 #undef POSIX_REC_MIN_XFER_SIZE
4148 #undef POSIX_REC_XFER_ALIGN
4149 #undef SYMLINK_MAX
4150 #define SYMLINK_MAX (PATH_MAX - 1)
4151 #undef BC_BASE_MAX
4152 #define BC_BASE_MAX 99
4153 #undef BC_DIM_MAX
4154 #define BC_DIM_MAX 2048
4155 #undef BC_SCALE_MAX
4156 #define BC_SCALE_MAX 99
4157 #undef BC_STRING_MAX
4158 #define BC_STRING_MAX 1000
4159 #undef CHARCLASS_NAME_MAX
4160 #undef COLL_WEIGHTS_MAX
4161 #undef EXPR_NEST_MAX
4162 #define EXPR_NEST_MAX 32
4163 #undef LINE_MAX
4164 #define LINE_MAX 2048
4165 #undef NGROUPS_MAX
4166 #define NGROUPS_MAX 1024
4167 #undef RE_DUP_MAX
4168 #define RE_DUP_MAX 255
4169 #define _POSIX_CLOCKRES_MIN 20000000
4170 #define _POSIX_AIO_LISTIO_MAX 2
4171 #define _POSIX_AIO_MAX 1
4172 #define _POSIX_ARG_MAX 4096
4173 #define _POSIX_CHILD_MAX 25
4174 #define _POSIX_DELAYTIMER_MAX 32
4175 #define _POSIX_HOST_NAME_MAX 255
4176 #define _POSIX_LINK_MAX 8
4177 #define _POSIX_LOGIN_NAME_MAX 9
4178 #define _POSIX_MAX_CANON 255
4179 #define _POSIX_MAX_INPUT 255
4180 #define _POSIX_MQ_OPEN_MAX 8
4181 #define _POSIX_MQ_PRIO_MAX 32
4182 #define _POSIX_NAME_MAX 14
4183 #define _POSIX_NGROUPS_MAX 8
4184 #define _POSIX_OPEN_MAX 20
4185 #define _POSIX_PATH_MAX 256
4186 #define _POSIX_PIPE_BUF 512
4187 #define _POSIX_RE_DUP_MAX 255
4188 #define _POSIX_RTSIG_MAX 8
4189 #define _POSIX_SEM_NSEMS_MAX 256
4190 #define _POSIX_SEM_VALUE_MAX 32767
4191 #define _POSIX_SIGQUEUE_MAX 32
4192 #define _POSIX_SSIZE_MAX 32767
4193 #define _POSIX_STREAM_MAX 8
4194 #define _POSIX_SS_REPL_MAX 4
4195 #define _POSIX_SYMLINK_MAX 255
4196 #define _POSIX_SYMLOOP_MAX 8
4197 #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
4198 #define _POSIX_THREAD_KEYS_MAX 128
4199 #define _POSIX_THREAD_THREADS_MAX 64
4200 #define _POSIX_TIMER_MAX 32
4201 #define _POSIX_TRACE_EVENT_NAME_MAX 30
4202 #define _POSIX_TRACE_NAME_MAX 8
4203 #define _POSIX_TRACE_SYS_MAX 8
4204 #define _POSIX_TRACE_USER_EVENT_MAX 32
4205 #define _POSIX_TTY_NAME_MAX 9
4206 #define _POSIX_TZNAME_MAX 6
4207 #define _POSIX2_BC_BASE_MAX 99
4208 #define _POSIX2_BC_DIM_MAX 2048
4209 #define _POSIX2_BC_SCALE_MAX 99
4210 #define _POSIX2_BC_STRING_MAX 1000
4211 #define _POSIX2_COLL_WEIGHTS_MAX 2
4212 #define _POSIX2_EXPR_NEST_MAX 32
4213 #define _POSIX2_LINE_MAX 2048
4214 #define _POSIX2_RE_DUP_MAX 255
4215 #define _XOPEN_IOV_MAX 16
4216 #define _XOPEN_NAME_MAX 255
4217 #define _XOPEN_PATH_MAX 1024
4218 #define NL_ARGMAX 9
4219 #define NL_LANGMAX 14
4220 #define NL_MSGMAX 32767
4221 #define NL_SETMAX 255
4222 #define NL_TEXTMAX _POSIX2_LINE_MAX
4223 #undef NZERO
4224 #define NZERO 20
4225 #undef _GCC_NEXT_LIMITS_H
4226 #define RUBY_FIXNUM_MAX (LONG_MAX>>1)
4227 #define RUBY_FIXNUM_MIN RSHIFT((long)LONG_MIN,1)
4228 #define FIXNUM_MAX RUBY_FIXNUM_MAX
4229 #define FIXNUM_MIN RUBY_FIXNUM_MIN
4230 #define RB_INT2FIX(i) (((VALUE)(i))<<1 | RUBY_FIXNUM_FLAG)
4231 #define INT2FIX(i) RB_INT2FIX(i)
4232 #define RB_LONG2FIX(i) RB_INT2FIX(i)
4233 #define LONG2FIX(i) RB_INT2FIX(i)
4234 #define rb_fix_new(v) RB_INT2FIX(v)
4235 VALUE rb_int2inum(intptr_t);
4236 #define rb_int_new(v) rb_int2inum(v)
4237 VALUE rb_uint2inum(uintptr_t);
4238 #define rb_uint_new(v) rb_uint2inum(v)
4239 VALUE rb_ll2inum(long long);
4240 #define LL2NUM(v) rb_ll2inum(v)
4241 VALUE rb_ull2inum(unsigned long long);
4242 #define ULL2NUM(v) rb_ull2inum(v)
4243 #define SIZET2NUM(v) ULONG2NUM(v)
4244 #define SSIZET2NUM(v) LONG2NUM(v)
4245 __attribute__ ((__noreturn__)) void rb_out_of_int(long num);
4246 static inline int
4247 rb_long2int_inline(long n)
4248 {
4249 int i = (int)n;
4250 if ((long)i != n)
4251 rb_out_of_int(n);
4252 return i;
4253 }
4254 #define rb_long2int(n) rb_long2int_inline(n)
4255 #define RB_FIX2LONG(x) ((long)RSHIFT((SIGNED_VALUE)(x),1))
4256 static inline long
4257 rb_fix2long(VALUE x)
4258 {
4259 return ((long)(((long)(x))>>(int)(1)));
4260 }
4261 #define RB_FIX2ULONG(x) ((unsigned long)RB_FIX2LONG(x))
4262 static inline unsigned long
4263 rb_fix2ulong(VALUE x)
4264 {
4265 return ((unsigned long)((long)(((long)(x))>>(int)(1))));
4266 }
4267 #define RB_FIXNUM_P(f) (((int)(SIGNED_VALUE)(f))&RUBY_FIXNUM_FLAG)
4268 #define RB_POSFIXABLE(f) ((f) < RUBY_FIXNUM_MAX+1)
4269 #define RB_NEGFIXABLE(f) ((f) >= RUBY_FIXNUM_MIN)
4270 #define RB_FIXABLE(f) (RB_POSFIXABLE(f) && RB_NEGFIXABLE(f))
4271 #define FIX2LONG(x) RB_FIX2LONG(x)
4272 #define FIX2ULONG(x) RB_FIX2ULONG(x)
4273 #define FIXNUM_P(f) RB_FIXNUM_P(f)
4274 #define POSFIXABLE(f) RB_POSFIXABLE(f)
4275 #define NEGFIXABLE(f) RB_NEGFIXABLE(f)
4276 #define FIXABLE(f) RB_FIXABLE(f)
4277 #define RB_IMMEDIATE_P(x) ((VALUE)(x) & RUBY_IMMEDIATE_MASK)
4278 #define IMMEDIATE_P(x) RB_IMMEDIATE_P(x)
4279 ID rb_sym2id(VALUE);
4280 VALUE rb_id2sym(ID);
4281 #define RB_STATIC_SYM_P(x) (((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)
4282 #define RB_DYNAMIC_SYM_P(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) == (RUBY_T_SYMBOL))
4283 #define RB_SYMBOL_P(x) (RB_STATIC_SYM_P(x)||RB_DYNAMIC_SYM_P(x))
4284 #define RB_ID2SYM(x) (rb_id2sym(x))
4285 #define RB_SYM2ID(x) (rb_sym2id(x))
4286 #define STATIC_SYM_P(x) RB_STATIC_SYM_P(x)
4287 #define DYNAMIC_SYM_P(x) RB_DYNAMIC_SYM_P(x)
4288 #define SYMBOL_P(x) RB_SYMBOL_P(x)
4289 #define ID2SYM(x) RB_ID2SYM(x)
4290 #define SYM2ID(x) RB_SYM2ID(x)
4291 #define USE_FLONUM 1
4292 #define RB_FLONUM_P(x) ((((int)(SIGNED_VALUE)(x))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)
4293 #define FLONUM_P(x) RB_FLONUM_P(x)
4294 #define USE_SYMBOL_AS_METHOD_NAME 1
4295 enum ruby_special_consts {
4296 RUBY_Qfalse = 0x00,
4297 RUBY_Qtrue = 0x14,
4298 RUBY_Qnil = 0x08,
4299 RUBY_Qundef = 0x34,
4300 RUBY_IMMEDIATE_MASK = 0x07,
4301 RUBY_FIXNUM_FLAG = 0x01,
4302 RUBY_FLONUM_MASK = 0x03,
4303 RUBY_FLONUM_FLAG = 0x02,
4304 RUBY_SYMBOL_FLAG = 0x0c,
4305 RUBY_SPECIAL_SHIFT = 8
4306 };
4307 #define RUBY_Qfalse ((VALUE)RUBY_Qfalse)
4308 #define RUBY_Qtrue ((VALUE)RUBY_Qtrue)
4309 #define RUBY_Qnil ((VALUE)RUBY_Qnil)
4310 #define RUBY_Qundef ((VALUE)RUBY_Qundef)
4311 #define Qfalse RUBY_Qfalse
4312 #define Qtrue RUBY_Qtrue
4313 #define Qnil RUBY_Qnil
4314 #define Qundef RUBY_Qundef
4315 #define IMMEDIATE_MASK RUBY_IMMEDIATE_MASK
4316 #define FIXNUM_FLAG RUBY_FIXNUM_FLAG
4317 #define FLONUM_MASK RUBY_FLONUM_MASK
4318 #define FLONUM_FLAG RUBY_FLONUM_FLAG
4319 #define SYMBOL_FLAG RUBY_SYMBOL_FLAG
4320 #define RB_TEST(v) !(((VALUE)(v) & (VALUE)~RUBY_Qnil) == 0)
4321 #define RB_NIL_P(v) !((VALUE)(v) != RUBY_Qnil)
4322 #define RTEST(v) RB_TEST(v)
4323 #define NIL_P(v) RB_NIL_P(v)
4324 #define CLASS_OF(v) rb_class_of((VALUE)(v))
4325 enum ruby_value_type {
4326 RUBY_T_NONE = 0x00,
4327 RUBY_T_OBJECT = 0x01,
4328 RUBY_T_CLASS = 0x02,
4329 RUBY_T_MODULE = 0x03,
4330 RUBY_T_FLOAT = 0x04,
4331 RUBY_T_STRING = 0x05,
4332 RUBY_T_REGEXP = 0x06,
4333 RUBY_T_ARRAY = 0x07,
4334 RUBY_T_HASH = 0x08,
4335 RUBY_T_STRUCT = 0x09,
4336 RUBY_T_BIGNUM = 0x0a,
4337 RUBY_T_FILE = 0x0b,
4338 RUBY_T_DATA = 0x0c,
4339 RUBY_T_MATCH = 0x0d,
4340 RUBY_T_COMPLEX = 0x0e,
4341 RUBY_T_RATIONAL = 0x0f,
4342 RUBY_T_NIL = 0x11,
4343 RUBY_T_TRUE = 0x12,
4344 RUBY_T_FALSE = 0x13,
4345 RUBY_T_SYMBOL = 0x14,
4346 RUBY_T_FIXNUM = 0x15,
4347 RUBY_T_UNDEF = 0x16,
4348 RUBY_T_IMEMO = 0x1a,
4349 RUBY_T_NODE = 0x1b,
4350 RUBY_T_ICLASS = 0x1c,
4351 RUBY_T_ZOMBIE = 0x1d,
4352 RUBY_T_MOVED = 0x1e,
4353 RUBY_T_MASK = 0x1f
4354 };
4355 #define T_NONE RUBY_T_NONE
4356 #define T_NIL RUBY_T_NIL
4357 #define T_OBJECT RUBY_T_OBJECT
4358 #define T_CLASS RUBY_T_CLASS
4359 #define T_ICLASS RUBY_T_ICLASS
4360 #define T_MODULE RUBY_T_MODULE
4361 #define T_FLOAT RUBY_T_FLOAT
4362 #define T_STRING RUBY_T_STRING
4363 #define T_REGEXP RUBY_T_REGEXP
4364 #define T_ARRAY RUBY_T_ARRAY
4365 #define T_HASH RUBY_T_HASH
4366 #define T_STRUCT RUBY_T_STRUCT
4367 #define T_BIGNUM RUBY_T_BIGNUM
4368 #define T_FILE RUBY_T_FILE
4369 #define T_FIXNUM RUBY_T_FIXNUM
4370 #define T_TRUE RUBY_T_TRUE
4371 #define T_FALSE RUBY_T_FALSE
4372 #define T_DATA RUBY_T_DATA
4373 #define T_MATCH RUBY_T_MATCH
4374 #define T_SYMBOL RUBY_T_SYMBOL
4375 #define T_RATIONAL RUBY_T_RATIONAL
4376 #define T_COMPLEX RUBY_T_COMPLEX
4377 #define T_IMEMO RUBY_T_IMEMO
4378 #define T_UNDEF RUBY_T_UNDEF
4379 #define T_NODE RUBY_T_NODE
4380 #define T_ZOMBIE RUBY_T_ZOMBIE
4381 #define T_MOVED RUBY_T_MOVED
4382 #define T_MASK RUBY_T_MASK
4383 #define RB_BUILTIN_TYPE(x) (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK)
4384 #define BUILTIN_TYPE(x) RB_BUILTIN_TYPE(x)
4385 static inline int rb_type(VALUE obj);
4386 #define TYPE(x) rb_type((VALUE)(x))
4387 #define RB_FLOAT_TYPE_P(obj) ( RB_FLONUM_P(obj) || (!RB_SPECIAL_CONST_P(obj) && RB_BUILTIN_TYPE(obj) == RUBY_T_FLOAT))
4388 #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)))
4389 #define RB_GC_GUARD(v) (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(v); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }))
4390 #define RB_UNUSED_VAR(x) x __attribute__ ((unused))
4391 void rb_check_type(VALUE,int);
4392 #define Check_Type(v,t) rb_check_type((VALUE)(v),(t))
4393 VALUE rb_str_to_str(VALUE);
4394 VALUE rb_string_value(volatile VALUE*);
4395 char *rb_string_value_ptr(volatile VALUE*);
4396 char *rb_string_value_cstr(volatile VALUE*);
4397 #define StringValue(v) rb_string_value(&(v))
4398 #define StringValuePtr(v) rb_string_value_ptr(&(v))
4399 #define StringValueCStr(v) rb_string_value_cstr(&(v))
4400 void rb_check_safe_obj(VALUE);
4401 #define SafeStringValue(v) StringValue(v)
4402 void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete; use StringValue() instead")));
4403 #define Check_SafeStr(v) rb_check_safe_str((VALUE)(v))
4404 VALUE rb_str_export(VALUE);
4405 #define ExportStringValue(v) do { StringValue(v); (v) = rb_str_export(v);} while (0)
4406 VALUE rb_str_export_locale(VALUE);
4407 VALUE rb_get_path(VALUE);
4408 #define FilePathValue(v) (RB_GC_GUARD(v) = rb_get_path(v))
4409 VALUE rb_get_path_no_checksafe(VALUE);
4410 #define FilePathStringValue(v) ((v) = rb_get_path(v))
4411 #define RUBY_SAFE_LEVEL_MAX 1
4412 void rb_secure(int);
4413 int rb_safe_level(void);
4414 void rb_set_safe_level(int);
4415 int ruby_safe_level_2_error(void) __attribute__((error("$SAFE=2 to 4 are obsolete")));
4416 int ruby_safe_level_2_warning(void) __attribute__((const,warning("$SAFE=2 to 4 are obsolete")));
4417 #define ruby_safe_level_2_warning() ruby_safe_level_2_error()
4418 #define RUBY_SAFE_LEVEL_INVALID_P(level) __extension__( __builtin_choose_expr( __builtin_constant_p(level), ((level) < 0 || RUBY_SAFE_LEVEL_MAX < (level)), 0))
4419 #define RUBY_SAFE_LEVEL_CHECK(level,type) __extension__(__builtin_choose_expr(RUBY_SAFE_LEVEL_INVALID_P(level), ruby_safe_level_2_ ##type(), (level)))
4420 #define rb_secure(level) rb_secure(RUBY_SAFE_LEVEL_CHECK(level, warning))
4421 #define rb_set_safe_level(level) rb_set_safe_level(RUBY_SAFE_LEVEL_CHECK(level, error))
4422 void rb_set_safe_level_force(int);
4423 void rb_secure_update(VALUE);
4424 __attribute__ ((__noreturn__)) void rb_insecure_operation(void);
4425 VALUE rb_errinfo(void);
4426 void rb_set_errinfo(VALUE);
4427 long rb_num2long(VALUE);
4428 unsigned long rb_num2ulong(VALUE);
4429 static inline long
4430 rb_num2long_inline(VALUE x)
4431 {
4432 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4433 return ((long)(((long)(x))>>(int)(1)));
4434 else
4435 return rb_num2long(x);
4436 }
4437 #define RB_NUM2LONG(x) rb_num2long_inline(x)
4438 #define NUM2LONG(x) RB_NUM2LONG(x)
4439 static inline unsigned long
4440 rb_num2ulong_inline(VALUE x)
4441 {
4442 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4443 return ((unsigned long)((long)(((long)(x))>>(int)(1))));
4444 else
4445 return rb_num2ulong(x);
4446 }
4447 #define RB_NUM2ULONG(x) rb_num2ulong_inline(x)
4448 #define NUM2ULONG(x) RB_NUM2ULONG(x)
4449 long rb_num2int(VALUE);
4450 long rb_fix2int(VALUE);
4451 #define RB_FIX2INT(x) ((int)rb_fix2int((VALUE)(x)))
4452 static inline int
4453 rb_num2int_inline(VALUE x)
4454 {
4455 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4456 return (int)rb_fix2int(x);
4457 else
4458 return (int)rb_num2int(x);
4459 }
4460 #define RB_NUM2INT(x) rb_num2int_inline(x)
4461 unsigned long rb_num2uint(VALUE);
4462 #define RB_NUM2UINT(x) ((unsigned int)rb_num2uint(x))
4463 unsigned long rb_fix2uint(VALUE);
4464 #define RB_FIX2UINT(x) ((unsigned int)rb_fix2uint(x))
4465 #define NUM2INT(x) RB_NUM2INT(x)
4466 #define NUM2UINT(x) RB_NUM2UINT(x)
4467 #define FIX2INT(x) RB_FIX2INT(x)
4468 #define FIX2UINT(x) RB_FIX2UINT(x)
4469 short rb_num2short(VALUE);
4470 unsigned short rb_num2ushort(VALUE);
4471 short rb_fix2short(VALUE);
4472 unsigned short rb_fix2ushort(VALUE);
4473 #define RB_FIX2SHORT(x) (rb_fix2short((VALUE)(x)))
4474 #define FIX2SHORT(x) RB_FIX2SHORT(x)
4475 static inline short
4476 rb_num2short_inline(VALUE x)
4477 {
4478 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4479 return rb_fix2short(x);
4480 else
4481 return rb_num2short(x);
4482 }
4483 #define RB_NUM2SHORT(x) rb_num2short_inline(x)
4484 #define RB_NUM2USHORT(x) rb_num2ushort(x)
4485 #define NUM2SHORT(x) RB_NUM2SHORT(x)
4486 #define NUM2USHORT(x) RB_NUM2USHORT(x)
4487 long long rb_num2ll(VALUE);
4488 unsigned long long rb_num2ull(VALUE);
4489 static inline long long
4490 rb_num2ll_inline(VALUE x)
4491 {
4492 if ((((int)(long)(x))&RUBY_FIXNUM_FLAG))
4493 return ((long)(((long)(x))>>(int)(1)));
4494 else
4495 return rb_num2ll(x);
4496 }
4497 #define RB_NUM2LL(x) rb_num2ll_inline(x)
4498 #define RB_NUM2ULL(x) rb_num2ull(x)
4499 #define NUM2LL(x) RB_NUM2LL(x)
4500 #define NUM2ULL(x) RB_NUM2ULL(x)
4501 #define NUM2SIZET(x) NUM2ULONG(x)
4502 #define NUM2SSIZET(x) NUM2LONG(x)
4503 double rb_num2dbl(VALUE);
4504 #define NUM2DBL(x) rb_num2dbl((VALUE)(x))
4505 VALUE rb_uint2big(uintptr_t);
4506 VALUE rb_int2big(intptr_t);
4507 VALUE rb_newobj(void);
4508 VALUE rb_newobj_of(VALUE, VALUE);
4509 VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type);
4510 #define RB_NEWOBJ(obj,type) type *(obj) = (type*)rb_newobj()
4511 #define RB_NEWOBJ_OF(obj,type,klass,flags) type *(obj) = (type*)rb_newobj_of(klass, flags)
4512 #define NEWOBJ(obj,type) RB_NEWOBJ(obj,type)
4513 #define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
4514 #define OBJSETUP(obj,c,t) rb_obj_setup(obj, c, t)
4515 #define CLONESETUP(clone,obj) rb_clone_setup(clone,obj)
4516 #define DUPSETUP(dup,obj) rb_dup_setup(dup,obj)
4517 #define USE_RGENGC 1
4518 #define USE_RINCGC 1
4519 #define RGENGC_WB_PROTECTED_ARRAY 1
4520 #define RGENGC_WB_PROTECTED_HASH 1
4521 #define RGENGC_WB_PROTECTED_STRUCT 1
4522 #define RGENGC_WB_PROTECTED_STRING 1
4523 #define RGENGC_WB_PROTECTED_OBJECT 1
4524 #define RGENGC_WB_PROTECTED_REGEXP 1
4525 #define RGENGC_WB_PROTECTED_CLASS 1
4526 #define RGENGC_WB_PROTECTED_FLOAT 1
4527 #define RGENGC_WB_PROTECTED_COMPLEX 1
4528 #define RGENGC_WB_PROTECTED_RATIONAL 1
4529 #define RGENGC_WB_PROTECTED_BIGNUM 1
4530 #define RGENGC_WB_PROTECTED_NODE_CREF 1
4531 __extension__
4532 enum ruby_fl_type {
4533 RUBY_FL_WB_PROTECTED = (1<<5),
4534 RUBY_FL_PROMOTED0 = (1<<5),
4535 RUBY_FL_PROMOTED1 = (1<<6),
4536 RUBY_FL_PROMOTED = RUBY_FL_PROMOTED0|RUBY_FL_PROMOTED1,
4537 RUBY_FL_FINALIZE = (1<<7),
4538 RUBY_FL_TAINT = (1<<8),
4539 RUBY_FL_UNTRUSTED = RUBY_FL_TAINT,
4540 RUBY_FL_SEEN_OBJ_ID = (1<<9),
4541 RUBY_FL_EXIVAR = (1<<10),
4542 RUBY_FL_FREEZE = (1<<11),
4543 RUBY_FL_USHIFT = 12,
4544 #define RUBY_FL_USER_N(n) RUBY_FL_USER ##n = (1<<(RUBY_FL_USHIFT+n))
4545 RUBY_FL_USER0 = (1<<(RUBY_FL_USHIFT+0)),
4546 RUBY_FL_USER1 = (1<<(RUBY_FL_USHIFT+1)),
4547 RUBY_FL_USER2 = (1<<(RUBY_FL_USHIFT+2)),
4548 RUBY_FL_USER3 = (1<<(RUBY_FL_USHIFT+3)),
4549 RUBY_FL_USER4 = (1<<(RUBY_FL_USHIFT+4)),
4550 RUBY_FL_USER5 = (1<<(RUBY_FL_USHIFT+5)),
4551 RUBY_FL_USER6 = (1<<(RUBY_FL_USHIFT+6)),
4552 RUBY_FL_USER7 = (1<<(RUBY_FL_USHIFT+7)),
4553 RUBY_FL_USER8 = (1<<(RUBY_FL_USHIFT+8)),
4554 RUBY_FL_USER9 = (1<<(RUBY_FL_USHIFT+9)),
4555 RUBY_FL_USER10 = (1<<(RUBY_FL_USHIFT+10)),
4556 RUBY_FL_USER11 = (1<<(RUBY_FL_USHIFT+11)),
4557 RUBY_FL_USER12 = (1<<(RUBY_FL_USHIFT+12)),
4558 RUBY_FL_USER13 = (1<<(RUBY_FL_USHIFT+13)),
4559 RUBY_FL_USER14 = (1<<(RUBY_FL_USHIFT+14)),
4560 RUBY_FL_USER15 = (1<<(RUBY_FL_USHIFT+15)),
4561 RUBY_FL_USER16 = (1<<(RUBY_FL_USHIFT+16)),
4562 RUBY_FL_USER17 = (1<<(RUBY_FL_USHIFT+17)),
4563 RUBY_FL_USER18 = (1<<(RUBY_FL_USHIFT+18)),
4564 RUBY_FL_USER19 = (1<<(RUBY_FL_USHIFT+19)),
4565 RUBY_ELTS_SHARED = RUBY_FL_USER2,
4566 RUBY_FL_DUPPED = (RUBY_T_MASK|RUBY_FL_EXIVAR|RUBY_FL_TAINT),
4567 RUBY_FL_SINGLETON = RUBY_FL_USER0
4568 };
4569 struct __attribute__((aligned(8))) RBasic {
4570 VALUE flags;
4571 const VALUE klass;
4572 };
4573 VALUE rb_obj_hide(VALUE obj);
4574 VALUE rb_obj_reveal(VALUE obj, VALUE klass);
4575 #define RB_OBJ_WB_UNPROTECT_FOR(type,obj) __extension__( __builtin_choose_expr( RGENGC_WB_PROTECTED_ ##type, OBJ_WB_UNPROTECT((VALUE)(obj)), ((VALUE)(obj))))
4576 #define RBASIC_CLASS(obj) (RBASIC(obj)->klass)
4577 #define RVALUE_EMBED_LEN_MAX RVALUE_EMBED_LEN_MAX
4578 enum ruby_rvalue_flags {
4579 RVALUE_EMBED_LEN_MAX = 3,
4580 };
4581 #define ROBJECT_EMBED_LEN_MAX ROBJECT_EMBED_LEN_MAX
4582 #define ROBJECT_EMBED ROBJECT_EMBED
4583 enum ruby_robject_flags {
4584 ROBJECT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
4585 ROBJECT_EMBED = RUBY_FL_USER1,
4586 ROBJECT_ENUM_END
4587 };
4588 struct RObject {
4589 struct RBasic basic;
4590 union {
4591 struct {
4592 uint32_t numiv;
4593 VALUE *ivptr;
4594 void *iv_index_tbl;
4595 } heap;
4596 VALUE ary[ROBJECT_EMBED_LEN_MAX];
4597 } as;
4598 };
4599 #define ROBJECT_NUMIV(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ROBJECT(o)->as.heap.numiv)
4600 #define ROBJECT_IVPTR(o) ((RBASIC(o)->flags & ROBJECT_EMBED) ? ROBJECT(o)->as.ary : ROBJECT(o)->as.heap.ivptr)
4601 #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)
4602 #define RCLASS_SUPER(c) rb_class_get_superclass(c)
4603 #define RMODULE_IV_TBL(m) RCLASS_IV_TBL(m)
4604 #define RMODULE_CONST_TBL(m) RCLASS_CONST_TBL(m)
4605 #define RMODULE_M_TBL(m) RCLASS_M_TBL(m)
4606 #define RMODULE_SUPER(m) RCLASS_SUPER(m)
4607 #define RMODULE_IS_OVERLAID RMODULE_IS_OVERLAID
4608 #define RMODULE_IS_REFINEMENT RMODULE_IS_REFINEMENT
4609 #define RMODULE_INCLUDED_INTO_REFINEMENT RMODULE_INCLUDED_INTO_REFINEMENT
4610 enum ruby_rmodule_flags {
4611 RMODULE_IS_OVERLAID = RUBY_FL_USER2,
4612 RMODULE_IS_REFINEMENT = RUBY_FL_USER3,
4613 RMODULE_INCLUDED_INTO_REFINEMENT = RUBY_FL_USER4,
4614 RMODULE_ENUM_END
4615 };
4616 __attribute__ ((__pure__)) double rb_float_value(VALUE);
4617 VALUE rb_float_new(double);
4618 VALUE rb_float_new_in_heap(double);
4619 #define RFLOAT_VALUE(v) rb_float_value(v)
4620 #define DBL2NUM(dbl) rb_float_new(dbl)
4621 #define RUBY_ELTS_SHARED RUBY_ELTS_SHARED
4622 #define ELTS_SHARED RUBY_ELTS_SHARED
4623 #define RSTRING_NOEMBED RSTRING_NOEMBED
4624 #define RSTRING_EMBED_LEN_MASK RSTRING_EMBED_LEN_MASK
4625 #define RSTRING_EMBED_LEN_SHIFT RSTRING_EMBED_LEN_SHIFT
4626 #define RSTRING_EMBED_LEN_MAX RSTRING_EMBED_LEN_MAX
4627 #define RSTRING_FSTR RSTRING_FSTR
4628 enum ruby_rstring_flags {
4629 RSTRING_NOEMBED = RUBY_FL_USER1,
4630 RSTRING_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER3|RUBY_FL_USER4|
4631 RUBY_FL_USER5|RUBY_FL_USER6),
4632 RSTRING_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+2),
4633 RSTRING_EMBED_LEN_MAX = (int)((sizeof(VALUE)*RVALUE_EMBED_LEN_MAX)/sizeof(char)-1),
4634 RSTRING_FSTR = RUBY_FL_USER17,
4635 RSTRING_ENUM_END
4636 };
4637 struct RString {
4638 struct RBasic basic;
4639 union {
4640 struct {
4641 long len;
4642 char *ptr;
4643 union {
4644 long capa;
4645 VALUE shared;
4646 } aux;
4647 } heap;
4648 char ary[RSTRING_EMBED_LEN_MAX + 1];
4649 } as;
4650 };
4651 #define RSTRING_EMBED_LEN(str) (long)((RBASIC(str)->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT))
4652 #define RSTRING_LEN(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING_EMBED_LEN(str) : RSTRING(str)->as.heap.len)
4653 #define RSTRING_PTR(str) (!(RBASIC(str)->flags & RSTRING_NOEMBED) ? RSTRING(str)->as.ary : RSTRING(str)->as.heap.ptr)
4654 #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))
4655 #define RSTRING_LENINT(str) rb_long2int(RSTRING_LEN(str))
4656 #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))
4657 #define USE_TRANSIENT_HEAP 1
4658 enum ruby_rarray_flags {
4659 RARRAY_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
4660 RARRAY_EMBED_FLAG = RUBY_FL_USER1,
4661 RARRAY_EMBED_LEN_MASK = (RUBY_FL_USER4|RUBY_FL_USER3),
4662 RARRAY_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+3),
4663 RARRAY_TRANSIENT_FLAG = RUBY_FL_USER13,
4664 #define RARRAY_TRANSIENT_FLAG RARRAY_TRANSIENT_FLAG
4665 RARRAY_ENUM_END
4666 };
4667 #define RARRAY_EMBED_FLAG (VALUE)RARRAY_EMBED_FLAG
4668 #define RARRAY_EMBED_LEN_MASK (VALUE)RARRAY_EMBED_LEN_MASK
4669 #define RARRAY_EMBED_LEN_MAX RARRAY_EMBED_LEN_MAX
4670 #define RARRAY_EMBED_LEN_SHIFT RARRAY_EMBED_LEN_SHIFT
4671 struct RArray {
4672 struct RBasic basic;
4673 union {
4674 struct {
4675 long len;
4676 union {
4677 long capa;
4678 const
4679 VALUE shared_root;
4680 } aux;
4681 const VALUE *ptr;
4682 } heap;
4683 const VALUE ary[RARRAY_EMBED_LEN_MAX];
4684 } as;
4685 };
4686 #define RARRAY_EMBED_LEN(a) (long)((RBASIC(a)->flags >> RARRAY_EMBED_LEN_SHIFT) & (RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT))
4687 #define RARRAY_LEN(a) rb_array_len(a)
4688 #define RARRAY_LENINT(ary) rb_long2int(RARRAY_LEN(ary))
4689 #define RARRAY_CONST_PTR(a) rb_array_const_ptr(a)
4690 #define RARRAY_CONST_PTR_TRANSIENT(a) rb_array_const_ptr_transient(a)
4691 #define RARRAY_TRANSIENT_P(ary) FL_TEST_RAW((ary), RARRAY_TRANSIENT_FLAG)
4692 #define RARRAY_PTR_USE_START_TRANSIENT(a) rb_array_ptr_use_start(a, 1)
4693 #define RARRAY_PTR_USE_END_TRANSIENT(a) rb_array_ptr_use_end(a, 1)
4694 #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)
4695 #define RARRAY_PTR_USE_START(a) rb_array_ptr_use_start(a, 0)
4696 #define RARRAY_PTR_USE_END(a) rb_array_ptr_use_end(a, 0)
4697 #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)
4698 #define RARRAY_AREF(a,i) (RARRAY_CONST_PTR_TRANSIENT(a)[i])
4699 #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)
4700 #define RARRAY_PTR(a) ((VALUE *)RARRAY_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(ARRAY, a)))
4701 struct RRegexp {
4702 struct RBasic basic;
4703 struct re_pattern_buffer *ptr;
4704 const VALUE src;
4705 unsigned long usecnt;
4706 };
4707 #define RREGEXP_PTR(r) (RREGEXP(r)->ptr)
4708 #define RREGEXP_SRC(r) (RREGEXP(r)->src)
4709 #define RREGEXP_SRC_PTR(r) RSTRING_PTR(RREGEXP(r)->src)
4710 #define RREGEXP_SRC_LEN(r) RSTRING_LEN(RREGEXP(r)->src)
4711 #define RREGEXP_SRC_END(r) RSTRING_END(RREGEXP(r)->src)
4712 size_t rb_hash_size_num(VALUE hash);
4713 #define RHASH_TBL(h) rb_hash_tbl(h, __FILE__, __LINE__)
4714 #define RHASH_ITER_LEV(h) rb_hash_iter_lev(h)
4715 #define RHASH_IFNONE(h) rb_hash_ifnone(h)
4716 #define RHASH_SIZE(h) rb_hash_size_num(h)
4717 #define RHASH_EMPTY_P(h) (RHASH_SIZE(h) == 0)
4718 #define RHASH_SET_IFNONE(h,ifnone) rb_hash_set_ifnone((VALUE)h, ifnone)
4719 struct RFile {
4720 struct RBasic basic;
4721 struct rb_io_t *fptr;
4722 };
4723 struct RData {
4724 struct RBasic basic;
4725 void (*dmark)(void*);
4726 void (*dfree)(void*);
4727 void *data;
4728 };
4729 typedef struct rb_data_type_struct rb_data_type_t;
4730 struct rb_data_type_struct {
4731 const char *wrap_struct_name;
4732 struct {
4733 void (*dmark)(void*);
4734 void (*dfree)(void*);
4735 size_t (*dsize)(const void *);
4736 void (*dcompact)(void*);
4737 void *reserved[1];
4738 } function;
4739 const rb_data_type_t *parent;
4740 void *data;
4741 VALUE flags;
4742 };
4743 #define HAVE_TYPE_RB_DATA_TYPE_T 1
4744 #define HAVE_RB_DATA_TYPE_T_FUNCTION 1
4745 #define HAVE_RB_DATA_TYPE_T_PARENT 1
4746 struct RTypedData {
4747 struct RBasic basic;
4748 const rb_data_type_t *type;
4749 VALUE typed_flag;
4750 void *data;
4751 };
4752 #define DATA_PTR(dta) (RDATA(dta)->data)
4753 #define RTYPEDDATA_P(v) (RTYPEDDATA(v)->typed_flag == 1)
4754 #define RTYPEDDATA_TYPE(v) (RTYPEDDATA(v)->type)
4755 #define RTYPEDDATA_DATA(v) (RTYPEDDATA(v)->data)
4756 typedef void (*RUBY_DATA_FUNC)(void*);
4757 #define RUBY_UNTYPED_DATA_WARNING 1
4758 VALUE rb_data_object_wrap(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
4759 VALUE rb_data_object_zalloc(VALUE,size_t,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
4760 VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *);
4761 VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type);
4762 int rb_typeddata_inherited_p(const rb_data_type_t *child, const rb_data_type_t *parent);
4763 int rb_typeddata_is_kind_of(VALUE, const rb_data_type_t *);
4764 void *rb_check_typeddata(VALUE, const rb_data_type_t *);
4765 #define Check_TypedStruct(v,t) rb_check_typeddata((VALUE)(v),(t))
4766 #define RUBY_DEFAULT_FREE ((RUBY_DATA_FUNC)-1)
4767 #define RUBY_NEVER_FREE ((RUBY_DATA_FUNC)0)
4768 #define RUBY_TYPED_DEFAULT_FREE RUBY_DEFAULT_FREE
4769 #define RUBY_TYPED_NEVER_FREE RUBY_NEVER_FREE
4770 #define RUBY_TYPED_FREE_IMMEDIATELY 1
4771 #define RUBY_TYPED_WB_PROTECTED RUBY_FL_WB_PROTECTED
4772 #define RUBY_TYPED_PROMOTED1 RUBY_FL_PROMOTED1
4773 #define Data_Wrap_Struct(klass,mark,free,sval) rb_data_object_wrap((klass),(sval),(RUBY_DATA_FUNC)(mark),(RUBY_DATA_FUNC)(free))
4774 #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));
4775 #define Data_Make_Struct(klass,type,mark,free,sval) RB_GNUC_EXTENSION_BLOCK( Data_Make_Struct0(data_struct_obj, klass, type, sizeof(type), mark, free, sval); data_struct_obj )
4776 #define TypedData_Wrap_Struct(klass,data_type,sval) rb_data_typed_object_wrap((klass),(sval),(data_type))
4777 #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));
4778 #define TypedData_Make_Struct(klass,type,data_type,sval) RB_GNUC_EXTENSION_BLOCK( TypedData_Make_Struct0(data_struct_obj, klass, type, sizeof(type), data_type, sval); data_struct_obj )
4779 #define Data_Get_Struct(obj,type,sval) ((sval) = (type*)rb_data_object_get(obj))
4780 #define TypedData_Get_Struct(obj,type,data_type,sval) ((sval) = (type*)rb_check_typeddata((obj), (data_type)))
4781 #define RSTRUCT_LEN(st) NUM2LONG(rb_struct_size(st))
4782 #define RSTRUCT_PTR(st) rb_struct_ptr(st)
4783 #define RSTRUCT_SET(st,idx,v) rb_struct_aset(st, INT2NUM(idx), (v))
4784 #define RSTRUCT_GET(st,idx) rb_struct_aref(st, INT2NUM(idx))
4785 int rb_big_sign(VALUE);
4786 #define RBIGNUM_SIGN(b) (rb_big_sign(b))
4787 #define RBIGNUM_POSITIVE_P(b) (RBIGNUM_SIGN(b)!=0)
4788 #define RBIGNUM_NEGATIVE_P(b) (RBIGNUM_SIGN(b)==0)
4789 #define R_CAST(st) (struct st*)
4790 #define RMOVED(obj) (R_CAST(RMoved)(obj))
4791 #define RBASIC(obj) (R_CAST(RBasic)(obj))
4792 #define ROBJECT(obj) (R_CAST(RObject)(obj))
4793 #define RCLASS(obj) (R_CAST(RClass)(obj))
4794 #define RMODULE(obj) RCLASS(obj)
4795 #define RSTRING(obj) (R_CAST(RString)(obj))
4796 #define RREGEXP(obj) (R_CAST(RRegexp)(obj))
4797 #define RARRAY(obj) (R_CAST(RArray)(obj))
4798 #define RDATA(obj) (R_CAST(RData)(obj))
4799 #define RTYPEDDATA(obj) (R_CAST(RTypedData)(obj))
4800 #define RFILE(obj) (R_CAST(RFile)(obj))
4801 #define FL_SINGLETON ((VALUE)RUBY_FL_SINGLETON)
4802 #define FL_WB_PROTECTED ((VALUE)RUBY_FL_WB_PROTECTED)
4803 #define FL_PROMOTED0 ((VALUE)RUBY_FL_PROMOTED0)
4804 #define FL_PROMOTED1 ((VALUE)RUBY_FL_PROMOTED1)
4805 #define FL_FINALIZE ((VALUE)RUBY_FL_FINALIZE)
4806 #define FL_TAINT ((VALUE)RUBY_FL_TAINT)
4807 #define FL_UNTRUSTED ((VALUE)RUBY_FL_UNTRUSTED)
4808 #define FL_SEEN_OBJ_ID ((VALUE)RUBY_FL_SEEN_OBJ_ID)
4809 #define FL_EXIVAR ((VALUE)RUBY_FL_EXIVAR)
4810 #define FL_FREEZE ((VALUE)RUBY_FL_FREEZE)
4811 #define FL_USHIFT ((VALUE)RUBY_FL_USHIFT)
4812 #define FL_USER0 ((VALUE)RUBY_FL_USER0)
4813 #define FL_USER1 ((VALUE)RUBY_FL_USER1)
4814 #define FL_USER2 ((VALUE)RUBY_FL_USER2)
4815 #define FL_USER3 ((VALUE)RUBY_FL_USER3)
4816 #define FL_USER4 ((VALUE)RUBY_FL_USER4)
4817 #define FL_USER5 ((VALUE)RUBY_FL_USER5)
4818 #define FL_USER6 ((VALUE)RUBY_FL_USER6)
4819 #define FL_USER7 ((VALUE)RUBY_FL_USER7)
4820 #define FL_USER8 ((VALUE)RUBY_FL_USER8)
4821 #define FL_USER9 ((VALUE)RUBY_FL_USER9)
4822 #define FL_USER10 ((VALUE)RUBY_FL_USER10)
4823 #define FL_USER11 ((VALUE)RUBY_FL_USER11)
4824 #define FL_USER12 ((VALUE)RUBY_FL_USER12)
4825 #define FL_USER13 ((VALUE)RUBY_FL_USER13)
4826 #define FL_USER14 ((VALUE)RUBY_FL_USER14)
4827 #define FL_USER15 ((VALUE)RUBY_FL_USER15)
4828 #define FL_USER16 ((VALUE)RUBY_FL_USER16)
4829 #define FL_USER17 ((VALUE)RUBY_FL_USER17)
4830 #define FL_USER18 ((VALUE)RUBY_FL_USER18)
4831 #define FL_USER19 ((VALUE)(unsigned int)RUBY_FL_USER19)
4832 #define RB_SPECIAL_CONST_P(x) (RB_IMMEDIATE_P(x) || !RB_TEST(x))
4833 #define SPECIAL_CONST_P(x) RB_SPECIAL_CONST_P(x)
4834 #define RB_FL_ABLE(x) (!RB_SPECIAL_CONST_P(x) && RB_BUILTIN_TYPE(x) != RUBY_T_NODE)
4835 #define RB_FL_TEST_RAW(x,f) (RBASIC(x)->flags&(f))
4836 #define RB_FL_TEST(x,f) (RB_FL_ABLE(x)?RB_FL_TEST_RAW((x),(f)):0)
4837 #define RB_FL_ANY_RAW(x,f) RB_FL_TEST_RAW((x),(f))
4838 #define RB_FL_ANY(x,f) RB_FL_TEST((x),(f))
4839 #define RB_FL_ALL_RAW(x,f) (RB_FL_TEST_RAW((x),(f)) == (f))
4840 #define RB_FL_ALL(x,f) (RB_FL_TEST((x),(f)) == (f))
4841 #define RB_FL_SET_RAW(x,f) (void)(RBASIC(x)->flags |= (f))
4842 #define RB_FL_SET(x,f) (RB_FL_ABLE(x) ? RB_FL_SET_RAW(x, f) : (void)0)
4843 #define RB_FL_UNSET_RAW(x,f) (void)(RBASIC(x)->flags &= ~(VALUE)(f))
4844 #define RB_FL_UNSET(x,f) (RB_FL_ABLE(x) ? RB_FL_UNSET_RAW(x, f) : (void)0)
4845 #define RB_FL_REVERSE_RAW(x,f) (void)(RBASIC(x)->flags ^= (f))
4846 #define RB_FL_REVERSE(x,f) (RB_FL_ABLE(x) ? RB_FL_REVERSE_RAW(x, f) : (void)0)
4847 #define RB_OBJ_TAINTABLE(x) (RB_FL_ABLE(x) && RB_BUILTIN_TYPE(x) != RUBY_T_BIGNUM && RB_BUILTIN_TYPE(x) != RUBY_T_FLOAT)
4848 #define RB_OBJ_TAINTED_RAW(x) RB_FL_TEST_RAW(x, RUBY_FL_TAINT)
4849 #define RB_OBJ_TAINTED(x) (!!RB_FL_TEST((x), RUBY_FL_TAINT))
4850 #define RB_OBJ_TAINT_RAW(x) RB_FL_SET_RAW(x, RUBY_FL_TAINT)
4851 #define RB_OBJ_TAINT(x) (RB_OBJ_TAINTABLE(x) ? RB_OBJ_TAINT_RAW(x) : (void)0)
4852 #define RB_OBJ_UNTRUSTED(x) RB_OBJ_TAINTED(x)
4853 #define RB_OBJ_UNTRUST(x) RB_OBJ_TAINT(x)
4854 #define RB_OBJ_INFECT_RAW(x,s) RB_FL_SET_RAW(x, RB_OBJ_TAINTED_RAW(s))
4855 #define RB_OBJ_INFECT(x,s) ( (RB_OBJ_TAINTABLE(x) && RB_FL_ABLE(s)) ? RB_OBJ_INFECT_RAW(x, s) : (void)0)
4856 #define RB_OBJ_FROZEN_RAW(x) (RBASIC(x)->flags&RUBY_FL_FREEZE)
4857 #define RB_OBJ_FROZEN(x) (!RB_FL_ABLE(x) || RB_OBJ_FROZEN_RAW(x))
4858 #define RB_OBJ_FREEZE_RAW(x) (void)(RBASIC(x)->flags |= RUBY_FL_FREEZE)
4859 #define RB_OBJ_FREEZE(x) rb_obj_freeze_inline((VALUE)x)
4860 #define FL_ABLE(x) RB_FL_ABLE(x)
4861 #define FL_TEST_RAW(x,f) RB_FL_TEST_RAW(x,f)
4862 #define FL_TEST(x,f) RB_FL_TEST(x,f)
4863 #define FL_ANY_RAW(x,f) RB_FL_ANY_RAW(x,f)
4864 #define FL_ANY(x,f) RB_FL_ANY(x,f)
4865 #define FL_ALL_RAW(x,f) RB_FL_ALL_RAW(x,f)
4866 #define FL_ALL(x,f) RB_FL_ALL(x,f)
4867 #define FL_SET_RAW(x,f) RB_FL_SET_RAW(x,f)
4868 #define FL_SET(x,f) RB_FL_SET(x,f)
4869 #define FL_UNSET_RAW(x,f) RB_FL_UNSET_RAW(x,f)
4870 #define FL_UNSET(x,f) RB_FL_UNSET(x,f)
4871 #define FL_REVERSE_RAW(x,f) RB_FL_REVERSE_RAW(x,f)
4872 #define FL_REVERSE(x,f) RB_FL_REVERSE(x,f)
4873 #define OBJ_TAINTABLE(x) RB_OBJ_TAINTABLE(x)
4874 #define OBJ_TAINTED_RAW(x) RB_OBJ_TAINTED_RAW(x)
4875 #define OBJ_TAINTED(x) RB_OBJ_TAINTED(x)
4876 #define OBJ_TAINT_RAW(x) RB_OBJ_TAINT_RAW(x)
4877 #define OBJ_TAINT(x) RB_OBJ_TAINT(x)
4878 #define OBJ_UNTRUSTED(x) RB_OBJ_UNTRUSTED(x)
4879 #define OBJ_UNTRUST(x) RB_OBJ_UNTRUST(x)
4880 #define OBJ_INFECT_RAW(x,s) RB_OBJ_INFECT_RAW(x,s)
4881 #define OBJ_INFECT(x,s) RB_OBJ_INFECT(x,s)
4882 #define OBJ_FROZEN_RAW(x) RB_OBJ_FROZEN_RAW(x)
4883 #define OBJ_FROZEN(x) RB_OBJ_FROZEN(x)
4884 #define OBJ_FREEZE_RAW(x) RB_OBJ_FREEZE_RAW(x)
4885 #define OBJ_FREEZE(x) RB_OBJ_FREEZE(x)
4886 void rb_freeze_singleton_class(VALUE klass);
4887 static inline void
4888 rb_obj_freeze_inline(VALUE x)
4889 {
4890 if ((!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) != RUBY_T_NODE)) {
4891 (void)(((struct RBasic*)(x))->flags |= RUBY_FL_FREEZE);
4892 if ((((struct RBasic*)(x))->klass) && !(((struct RBasic*)(x))->flags & RUBY_FL_SINGLETON)) {
4893 rb_freeze_singleton_class(x);
4894 }
4895 }
4896 }
4897 #define RUBY_UNTYPED_DATA_FUNC(func) func __attribute__((warning("untyped Data is unsafe; use TypedData instead")))
4898 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")));
4899 static inline void *rb_data_object_get_warning(VALUE) __attribute__((warning("untyped Data is unsafe; use TypedData instead")));
4900 static inline VALUE
4901 rb_data_object_wrap_warning(VALUE klass, void *ptr, RUBY_DATA_FUNC mark, RUBY_DATA_FUNC free)
4902 {
4903 return rb_data_object_wrap(klass, ptr, mark, free);
4904 }
4905 #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)))
4906 static inline void *
4907 rb_data_object_get(VALUE obj)
4908 {
4909 rb_check_type((VALUE)(obj),(RUBY_T_DATA));
4910 return ((struct RData *)obj)->data;
4911 }
4912 static inline void *
4913 rb_data_object_get_warning(VALUE obj)
4914 {
4915 return rb_data_object_get(obj);
4916 }
4917 static inline VALUE
4918 rb_data_object_make(VALUE klass, RUBY_DATA_FUNC mark_func, RUBY_DATA_FUNC free_func, void **datap, size_t size)
4919 {
4920 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));;
4921 return result;
4922 }
4923 static inline VALUE
4924 rb_data_typed_object_make(VALUE klass, const rb_data_type_t *type, void **datap, size_t size)
4925 {
4926 VALUE result = rb_data_typed_object_zalloc(klass, size, type); (void)((*datap) = (void *)(((struct RData*)(result))->data));;
4927 return result;
4928 }
4929 __attribute__ ((__deprecated__("by ""rb_data_object_wrap"))) static inline VALUE rb_data_object_alloc(VALUE,void*,RUBY_DATA_FUNC,RUBY_DATA_FUNC);
4930 static inline VALUE
4931 rb_data_object_alloc(VALUE klass, void *data, RUBY_DATA_FUNC dmark, RUBY_DATA_FUNC dfree)
4932 {
4933 return rb_data_object_wrap(klass, data, dmark, dfree);
4934 }
4935 __attribute__ ((__deprecated__("by ""rb_data_typed_object_wrap"))) static inline VALUE rb_data_typed_object_alloc(VALUE,void*,const rb_data_type_t*);
4936 static inline VALUE
4937 rb_data_typed_object_alloc(VALUE klass, void *datap, const rb_data_type_t *type)
4938 {
4939 return rb_data_typed_object_wrap(klass, datap, type);
4940 }
4941 #define rb_data_object_wrap_0 rb_data_object_wrap
4942 #define rb_data_object_wrap_1 rb_data_object_wrap_warning
4943 #define rb_data_object_wrap RUBY_MACRO_SELECT(rb_data_object_wrap_, RUBY_UNTYPED_DATA_WARNING)
4944 #define rb_data_object_get_0 rb_data_object_get
4945 #define rb_data_object_get_1 rb_data_object_get_warning
4946 #define rb_data_object_get RUBY_MACRO_SELECT(rb_data_object_get_, RUBY_UNTYPED_DATA_WARNING)
4947 #define rb_data_object_make_0 rb_data_object_make
4948 #define rb_data_object_make_1 rb_data_object_make_warning
4949 #define rb_data_object_make RUBY_MACRO_SELECT(rb_data_object_make_, RUBY_UNTYPED_DATA_WARNING)
4950 #define RB_OBJ_PROMOTED_RAW(x) RB_FL_ALL_RAW(x, RUBY_FL_PROMOTED)
4951 #define RB_OBJ_PROMOTED(x) (RB_SPECIAL_CONST_P(x) ? 0 : RB_OBJ_PROMOTED_RAW(x))
4952 #define RB_OBJ_WB_UNPROTECT(x) rb_obj_wb_unprotect(x, __FILE__, __LINE__)
4953 void rb_gc_writebarrier(VALUE a, VALUE b);
4954 void rb_gc_writebarrier_unprotect(VALUE obj);
4955 #define OBJ_PROMOTED_RAW(x) RB_OBJ_PROMOTED_RAW(x)
4956 #define OBJ_PROMOTED(x) RB_OBJ_PROMOTED(x)
4957 #define OBJ_WB_UNPROTECT(x) RB_OBJ_WB_UNPROTECT(x)
4958 #define RB_OBJ_WRITE(a,slot,b) rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__)
4959 #define RB_OBJ_WRITTEN(a,oldv,b) rb_obj_written((VALUE)(a), (VALUE)(oldv), (VALUE)(b), __FILE__, __LINE__)
4960 #define USE_RGENGC_LOGGING_WB_UNPROTECT 0
4961 static inline VALUE
4962 rb_obj_wb_unprotect(VALUE x, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4963 {
4964 rb_gc_writebarrier_unprotect(x);
4965 return x;
4966 }
4967 static inline VALUE
4968 rb_obj_written(VALUE a, VALUE oldv __attribute__ ((unused)), VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4969 {
4970 if (!(((VALUE)(b) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(b) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
4971 rb_gc_writebarrier(a, b);
4972 }
4973 return a;
4974 }
4975 static inline VALUE
4976 rb_obj_write(VALUE a, VALUE *slot, VALUE b, const char *filename __attribute__ ((unused)), int line __attribute__ ((unused)))
4977 {
4978 *slot = b;
4979 rb_obj_written(a, ((VALUE)RUBY_Qundef) , b, filename, line);
4980 return a;
4981 }
4982 #define RUBY_INTEGER_UNIFICATION 1
4983 #define RB_INTEGER_TYPE_P(obj) rb_integer_type_p(obj)
4984 static inline int
4985 rb_integer_type_p(VALUE obj)
4986 {
4987 return ((((int)(long)(obj))&RUBY_FIXNUM_FLAG) ||
4988 (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) &&
4989 (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_BIGNUM));
4990 }
4991 #define RB_INT2NUM(v) RB_INT2FIX((int)(v))
4992 #define RB_UINT2NUM(v) RB_LONG2FIX((unsigned int)(v))
4993 #define INT2NUM(x) RB_INT2NUM(x)
4994 #define UINT2NUM(x) RB_UINT2NUM(x)
4995 static inline VALUE
4996 rb_long2num_inline(long v)
4997 {
4998 if ((((v) < (0x7fffffffffffffffL>>1)+1) && ((v) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))))
4999 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
5000 else
5001 return rb_int2big(v);
5002 }
5003 #define RB_LONG2NUM(x) rb_long2num_inline(x)
5004 static inline VALUE
5005 rb_ulong2num_inline(unsigned long v)
5006 {
5007 if (((v) < (0x7fffffffffffffffL>>1)+1))
5008 return (((VALUE)(v))<<1 | RUBY_FIXNUM_FLAG);
5009 else
5010 return rb_uint2big(v);
5011 }
5012 #define RB_ULONG2NUM(x) rb_ulong2num_inline(x)
5013 static inline char
5014 rb_num2char_inline(VALUE x)
5015 {
5016 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(x))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((x) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((x) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((x) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((x) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(x)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(x))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(x) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(x) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(x))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && ((!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? (long)((((struct RBasic*)(x))->flags >> RSTRING_EMBED_LEN_SHIFT) & (RSTRING_EMBED_LEN_MASK >> RSTRING_EMBED_LEN_SHIFT)) : ((struct RString*)(x))->as.heap.len)>=1))
5017 return (!(((struct RBasic*)(x))->flags & RSTRING_NOEMBED) ? ((struct RString*)(x))->as.ary : ((struct RString*)(x))->as.heap.ptr)[0];
5018 else
5019 return (char)(rb_num2int_inline(x) & 0xff);
5020 }
5021 #define RB_NUM2CHR(x) rb_num2char_inline(x)
5022 #define RB_CHR2FIX(x) RB_INT2FIX((long)((x)&0xff))
5023 #define LONG2NUM(x) RB_LONG2NUM(x)
5024 #define ULONG2NUM(x) RB_ULONG2NUM(x)
5025 #define USHORT2NUM(x) RB_INT2FIX(x)
5026 #define NUM2CHR(x) RB_NUM2CHR(x)
5027 #define CHR2FIX(x) RB_CHR2FIX(x)
5028 #define RB_ST2FIX(h) RB_LONG2FIX((long)(h))
5029 #define ST2FIX(h) RB_ST2FIX(h)
5030 #define RB_ALLOC_N(type,n) ((type*)ruby_xmalloc2((size_t)(n),sizeof(type)))
5031 #define RB_ALLOC(type) ((type*)ruby_xmalloc(sizeof(type)))
5032 #define RB_ZALLOC_N(type,n) ((type*)ruby_xcalloc((size_t)(n),sizeof(type)))
5033 #define RB_ZALLOC(type) (RB_ZALLOC_N(type,1))
5034 #define RB_REALLOC_N(var,type,n) ((var)=(type*)ruby_xrealloc2((char*)(var),(size_t)(n),sizeof(type)))
5035 #define ALLOC_N(type,n) RB_ALLOC_N(type,n)
5036 #define ALLOC(type) RB_ALLOC(type)
5037 #define ZALLOC_N(type,n) RB_ZALLOC_N(type,n)
5038 #define ZALLOC(type) RB_ZALLOC(type)
5039 #define REALLOC_N(var,type,n) RB_REALLOC_N(var,type,n)
5040 #define ALLOCA_N(type,n) (type*)__builtin_alloca_with_align((sizeof(type)*(n)), RUBY_ALIGNOF(type) * CHAR_BIT)
5041 void *rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__ ((alloc_size (2)));
5042 void *rb_alloc_tmp_buffer_with_count(volatile VALUE *store, size_t len,size_t count) __attribute__ ((alloc_size (2,3)));
5043 void rb_free_tmp_buffer(volatile VALUE *store);
5044 __attribute__ ((__noreturn__)) void ruby_malloc_size_overflow(size_t, size_t);
5045 #define DSIZE_T uint128_t
5046 static inline int
5047 rb_mul_size_overflow(size_t a, size_t b, size_t max, size_t *c)
5048 {
5049 __extension__
5050 unsigned __int128 c2 = (unsigned __int128)a * (unsigned __int128)b;
5051 if (c2 > max) return 1;
5052 *c = (size_t)c2;
5053 return 0;
5054 }
5055 static inline void *
5056 rb_alloc_tmp_buffer2(volatile VALUE *store, long count, size_t elsize)
5057 {
5058 size_t cnt = (size_t)count;
5059 if (elsize == sizeof(VALUE)) {
5060 if ((__builtin_expect(!!(cnt > 0x7fffffffffffffffL / sizeof(VALUE)), 0))) {
5061 ruby_malloc_size_overflow(cnt, elsize);
5062 }
5063 }
5064 else {
5065 size_t size, max = 0x7fffffffffffffffL - sizeof(VALUE) + 1;
5066 if ((__builtin_expect(!!(rb_mul_size_overflow(cnt, elsize, max, &size)), 0))) {
5067 ruby_malloc_size_overflow(cnt, elsize);
5068 }
5069 cnt = (size + sizeof(VALUE) - 1) / sizeof(VALUE);
5070 }
5071 return rb_alloc_tmp_buffer_with_count(store, cnt * sizeof(VALUE), cnt);
5072 }
5073 #define RUBY_ALLOCV_LIMIT 1024
5074 #define RB_ALLOCV(v,n) ((n) < RUBY_ALLOCV_LIMIT ? ((v) = 0, alloca(n)) : rb_alloc_tmp_buffer(&(v), (n)))
5075 #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))))
5076 #define RB_ALLOCV_END(v) rb_free_tmp_buffer(&(v))
5077 #define ALLOCV(v,n) RB_ALLOCV(v, n)
5078 #define ALLOCV_N(type,v,n) RB_ALLOCV_N(type, v, n)
5079 #define ALLOCV_END(v) RB_ALLOCV_END(v)
5080 #define MEMZERO(p,type,n) memset((p), 0, sizeof(type)*(size_t)(n))
5081 #define MEMCPY(p1,p2,type,n) memcpy((p1), (p2), sizeof(type)*(size_t)(n))
5082 #define MEMMOVE(p1,p2,type,n) memmove((p1), (p2), sizeof(type)*(size_t)(n))
5083 #define MEMCMP(p1,p2,type,n) memcmp((p1), (p2), sizeof(type)*(size_t)(n))
5084 void rb_obj_infect(VALUE victim, VALUE carrier);
5085 typedef int ruby_glob_func(const char*,VALUE, void*);
5086 void rb_glob(const char*,void(*)(const char*,VALUE,void*),VALUE);
5087 int ruby_glob(const char*,int,ruby_glob_func*,VALUE);
5088 int ruby_brace_glob(const char*,int,ruby_glob_func*,VALUE);
5089 VALUE rb_define_class(const char*,VALUE);
5090 VALUE rb_define_module(const char*);
5091 VALUE rb_define_class_under(VALUE, const char*, VALUE);
5092 VALUE rb_define_module_under(VALUE, const char*);
5093 void rb_include_module(VALUE,VALUE);
5094 void rb_extend_object(VALUE,VALUE);
5095 void rb_prepend_module(VALUE,VALUE);
5096 typedef VALUE rb_gvar_getter_t(ID id, VALUE *data);
5097 typedef void rb_gvar_setter_t(VALUE val, ID id, VALUE *data);
5098 typedef void rb_gvar_marker_t(VALUE *var);
5099 rb_gvar_getter_t rb_gvar_undef_getter;
5100 rb_gvar_setter_t rb_gvar_undef_setter;
5101 rb_gvar_marker_t rb_gvar_undef_marker;
5102 rb_gvar_getter_t rb_gvar_val_getter;
5103 rb_gvar_setter_t rb_gvar_val_setter;
5104 rb_gvar_marker_t rb_gvar_val_marker;
5105 rb_gvar_getter_t rb_gvar_var_getter;
5106 rb_gvar_setter_t rb_gvar_var_setter;
5107 rb_gvar_marker_t rb_gvar_var_marker;
5108 __attribute__ ((__noreturn__)) rb_gvar_setter_t rb_gvar_readonly_setter;
5109 void rb_define_variable(const char*,VALUE*);
5110 void rb_define_virtual_variable(const char*,rb_gvar_getter_t*,rb_gvar_setter_t*);
5111 void rb_define_hooked_variable(const char*,VALUE*,rb_gvar_getter_t*,rb_gvar_setter_t*);
5112 void rb_define_readonly_variable(const char*,const VALUE*);
5113 void rb_define_const(VALUE,const char*,VALUE);
5114 void rb_define_global_const(const char*,VALUE);
5115 void rb_define_method(VALUE,const char*,VALUE(*)(),int);
5116 void rb_define_module_function(VALUE,const char*,VALUE(*)(),int);
5117 void rb_define_global_function(const char*,VALUE(*)(),int);
5118 void rb_undef_method(VALUE,const char*);
5119 void rb_define_alias(VALUE,const char*,const char*);
5120 void rb_define_attr(VALUE,const char*,int,int);
5121 void rb_global_variable(VALUE*);
5122 void rb_gc_register_mark_object(VALUE);
5123 void rb_gc_register_address(VALUE*);
5124 void rb_gc_unregister_address(VALUE*);
5125 ID rb_intern(const char*);
5126 ID rb_intern2(const char*, long);
5127 ID rb_intern_str(VALUE str);
5128 const char *rb_id2name(ID);
5129 ID rb_check_id(volatile VALUE *);
5130 ID rb_to_id(VALUE);
5131 VALUE rb_id2str(ID);
5132 VALUE rb_sym2str(VALUE);
5133 VALUE rb_to_symbol(VALUE name);
5134 VALUE rb_check_symbol(volatile VALUE *namep);
5135 #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; }
5136 #define RUBY_CONST_ID(var,str) do RUBY_CONST_ID_CACHE((var) =, (str)) while (0)
5137 #define CONST_ID_CACHE(result,str) RUBY_CONST_ID_CACHE(result, str)
5138 #define CONST_ID(var,str) RUBY_CONST_ID(var, str)
5139 #define rb_intern(str) (__builtin_constant_p(str) ? __extension__ (RUBY_CONST_ID_CACHE((ID), (str))) : rb_intern(str))
5140 #define rb_intern_const(str) (__builtin_constant_p(str) ? __extension__ (rb_intern2((str), (long)strlen(str))) : (rb_intern)(str))
5141 #define rb_varargs_argc_check_runtime(argc,vargc) (((argc) <= (vargc)) ? (argc) : (rb_fatal("argc(%d) exceeds actual arguments(%d)", argc, vargc), 0))
5142 #define rb_varargs_argc_valid_p(argc,vargc) ((argc) == 0 ? (vargc) <= 1 : (argc) == (vargc))
5143 __attribute__ ((__error__ (" argument length doesn't match"))) int rb_varargs_bad_length(int,int);
5144 #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))
5145 const char *rb_class2name(VALUE);
5146 const char *rb_obj_classname(VALUE);
5147 void rb_p(VALUE);
5148 VALUE rb_eval_string(const char*);
5149 VALUE rb_eval_string_protect(const char*, int*);
5150 VALUE rb_eval_string_wrap(const char*, int*);
5151 VALUE rb_funcall(VALUE, ID, int, ...);
5152 VALUE rb_funcallv(VALUE, ID, int, const VALUE*);
5153 VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE*, int);
5154 VALUE rb_funcallv_public(VALUE, ID, int, const VALUE*);
5155 VALUE rb_funcallv_public_kw(VALUE, ID, int, const VALUE*, int);
5156 #define rb_funcall2 rb_funcallv
5157 #define rb_funcall3 rb_funcallv_public
5158 VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE*);
5159 VALUE rb_funcall_passing_block_kw(VALUE, ID, int, const VALUE*, int);
5160 VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE*, VALUE);
5161 VALUE rb_funcall_with_block_kw(VALUE, ID, int, const VALUE*, VALUE, int);
5162 int rb_scan_args(int, const VALUE*, const char*, ...);
5163 #define RB_SCAN_ARGS_PASS_CALLED_KEYWORDS 0
5164 #define RB_SCAN_ARGS_KEYWORDS 1
5165 #define RB_SCAN_ARGS_EMPTY_KEYWORDS 2
5166 #define RB_SCAN_ARGS_LAST_HASH_KEYWORDS 3
5167 int rb_scan_args_kw(int, int, const VALUE*, const char*, ...);
5168 VALUE rb_call_super(int, const VALUE*);
5169 VALUE rb_call_super_kw(int, const VALUE*, int);
5170 VALUE rb_current_receiver(void);
5171 int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *);
5172 VALUE rb_extract_keywords(VALUE *orighash);
5173 #define HAVE_RB_SCAN_ARGS_OPTIONAL_HASH 1
5174 VALUE rb_gv_set(const char*, VALUE);
5175 VALUE rb_gv_get(const char*);
5176 VALUE rb_iv_get(VALUE, const char*);
5177 VALUE rb_iv_set(VALUE, const char*, VALUE);
5178 VALUE rb_equal(VALUE,VALUE);
5179 VALUE *rb_ruby_verbose_ptr(void);
5180 VALUE *rb_ruby_debug_ptr(void);
5181 #define ruby_verbose (*rb_ruby_verbose_ptr())
5182 #define ruby_debug (*rb_ruby_debug_ptr())
5183 enum rb_io_wait_readwrite {RB_IO_WAIT_READABLE, RB_IO_WAIT_WRITABLE};
5184 #define RB_IO_WAIT_READABLE RB_IO_WAIT_READABLE
5185 #define RB_IO_WAIT_WRITABLE RB_IO_WAIT_WRITABLE
5186 __attribute__ ((__noreturn__)) void rb_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5187 __attribute__ ((__noreturn__)) void rb_fatal(const char*, ...) __attribute__((format(printf, 1, 2)));
5188 __attribute__((cold)) __attribute__ ((__noreturn__)) void rb_bug(const char*, ...) __attribute__((format(printf, 1, 2)));
5189 __attribute__ ((__noreturn__)) void rb_bug_errno(const char*, int);
5190 __attribute__ ((__noreturn__)) void rb_sys_fail(const char*);
5191 __attribute__ ((__noreturn__)) void rb_sys_fail_str(VALUE);
5192 __attribute__ ((__noreturn__)) void rb_mod_sys_fail(VALUE, const char*);
5193 __attribute__ ((__noreturn__)) void rb_mod_sys_fail_str(VALUE, VALUE);
5194 __attribute__ ((__noreturn__)) void rb_readwrite_sys_fail(enum rb_io_wait_readwrite, const char*);
5195 __attribute__ ((__noreturn__)) void rb_iter_break(void);
5196 __attribute__ ((__noreturn__)) void rb_iter_break_value(VALUE);
5197 __attribute__ ((__noreturn__)) void rb_exit(int);
5198 __attribute__ ((__noreturn__)) void rb_notimplement(void);
5199 VALUE rb_syserr_new(int, const char *);
5200 VALUE rb_syserr_new_str(int n, VALUE arg);
5201 __attribute__ ((__noreturn__)) void rb_syserr_fail(int, const char*);
5202 __attribute__ ((__noreturn__)) void rb_syserr_fail_str(int, VALUE);
5203 __attribute__ ((__noreturn__)) void rb_mod_syserr_fail(VALUE, int, const char*);
5204 __attribute__ ((__noreturn__)) void rb_mod_syserr_fail_str(VALUE, int, VALUE);
5205 __attribute__ ((__noreturn__)) void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite, int, const char*);
5206 void rb_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
5207 void rb_compile_warning(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
5208 void rb_sys_warning(const char*, ...) __attribute__((format(printf, 1, 2)));
5209 __attribute__((cold)) void rb_warn(const char*, ...) __attribute__((format(printf, 1, 2)));
5210 void rb_compile_warn(const char *, int, const char*, ...) __attribute__((format(printf, 3, 4)));
5211 #define RB_BLOCK_CALL_FUNC_STRICT 1
5212 #define RUBY_BLOCK_CALL_FUNC_TAKES_BLOCKARG 1
5213 #define RB_BLOCK_CALL_FUNC_ARGLIST(yielded_arg,callback_arg) VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg
5214 typedef VALUE rb_block_call_func(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
5215 typedef rb_block_call_func *rb_block_call_func_t;
5216 VALUE rb_each(VALUE);
5217 VALUE rb_yield(VALUE);
5218 VALUE rb_yield_values(int n, ...);
5219 VALUE rb_yield_values2(int n, const VALUE *argv);
5220 VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat);
5221 VALUE rb_yield_splat(VALUE);
5222 VALUE rb_yield_splat_kw(VALUE, int);
5223 VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg);
5224 #define RB_NO_KEYWORDS 0
5225 #define RB_PASS_KEYWORDS 1
5226 #define RB_PASS_EMPTY_KEYWORDS 2
5227 #define RB_PASS_CALLED_KEYWORDS 3
5228 int rb_keyword_given_p(void);
5229 int rb_block_given_p(void);
5230 void rb_need_block(void);
5231 VALUE rb_iterate(VALUE(*)(VALUE),VALUE,rb_block_call_func_t,VALUE);
5232 VALUE rb_block_call(VALUE,ID,int,const VALUE*,rb_block_call_func_t,VALUE);
5233 VALUE rb_block_call_kw(VALUE,ID,int,const VALUE*,rb_block_call_func_t,VALUE,int);
5234 VALUE rb_rescue(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),VALUE);
5235 VALUE rb_rescue2(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),VALUE,...);
5236 VALUE rb_vrescue2(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE,VALUE),VALUE,va_list);
5237 VALUE rb_ensure(VALUE(*)(VALUE),VALUE,VALUE(*)(VALUE),VALUE);
5238 VALUE rb_catch(const char*,rb_block_call_func_t,VALUE);
5239 VALUE rb_catch_obj(VALUE,rb_block_call_func_t,VALUE);
5240 __attribute__ ((__noreturn__)) void rb_throw(const char*,VALUE);
5241 __attribute__ ((__noreturn__)) void rb_throw_obj(VALUE,VALUE);
5242 VALUE rb_require(const char*);
5243 extern VALUE rb_mKernel;
5244 extern VALUE rb_mComparable;
5245 extern VALUE rb_mEnumerable;
5246 extern VALUE rb_mErrno;
5247 extern VALUE rb_mFileTest;
5248 extern VALUE rb_mGC;
5249 extern VALUE rb_mMath;
5250 extern VALUE rb_mProcess;
5251 extern VALUE rb_mWaitReadable;
5252 extern VALUE rb_mWaitWritable;
5253 extern VALUE rb_cBasicObject;
5254 extern VALUE rb_cObject;
5255 extern VALUE rb_cArray;
5256 extern VALUE rb_cBinding;
5257 extern VALUE rb_cClass;
5258 extern VALUE rb_cCont;
5259 extern VALUE rb_cData;
5260 extern VALUE rb_cDir;
5261 extern VALUE rb_cEncoding;
5262 extern VALUE rb_cEnumerator;
5263 extern VALUE rb_cFalseClass;
5264 extern VALUE rb_cFile;
5265 extern VALUE rb_cComplex;
5266 extern VALUE rb_cFloat;
5267 extern VALUE rb_cHash;
5268 extern VALUE rb_cIO;
5269 extern VALUE rb_cInteger;
5270 extern VALUE rb_cMatch;
5271 extern VALUE rb_cMethod;
5272 extern VALUE rb_cModule;
5273 extern VALUE rb_cNameErrorMesg;
5274 extern VALUE rb_cNilClass;
5275 extern VALUE rb_cNumeric;
5276 extern VALUE rb_cProc;
5277 extern VALUE rb_cRandom;
5278 extern VALUE rb_cRange;
5279 extern VALUE rb_cRational;
5280 extern VALUE rb_cRegexp;
5281 extern VALUE rb_cStat;
5282 extern VALUE rb_cString;
5283 extern VALUE rb_cStruct;
5284 extern VALUE rb_cSymbol;
5285 extern VALUE rb_cThread;
5286 extern VALUE rb_cTime;
5287 extern VALUE rb_cTrueClass;
5288 extern VALUE rb_cUnboundMethod;
5289 extern VALUE rb_eException;
5290 extern VALUE rb_eStandardError;
5291 extern VALUE rb_eSystemExit;
5292 extern VALUE rb_eInterrupt;
5293 extern VALUE rb_eSignal;
5294 extern VALUE rb_eFatal;
5295 extern VALUE rb_eArgError;
5296 extern VALUE rb_eEOFError;
5297 extern VALUE rb_eIndexError;
5298 extern VALUE rb_eStopIteration;
5299 extern VALUE rb_eKeyError;
5300 extern VALUE rb_eRangeError;
5301 extern VALUE rb_eIOError;
5302 extern VALUE rb_eRuntimeError;
5303 extern VALUE rb_eFrozenError;
5304 extern VALUE rb_eSecurityError;
5305 extern VALUE rb_eSystemCallError;
5306 extern VALUE rb_eThreadError;
5307 extern VALUE rb_eTypeError;
5308 extern VALUE rb_eZeroDivError;
5309 extern VALUE rb_eNotImpError;
5310 extern VALUE rb_eNoMemError;
5311 extern VALUE rb_eNoMethodError;
5312 extern VALUE rb_eFloatDomainError;
5313 extern VALUE rb_eLocalJumpError;
5314 extern VALUE rb_eSysStackError;
5315 extern VALUE rb_eRegexpError;
5316 extern VALUE rb_eEncodingError;
5317 extern VALUE rb_eEncCompatError;
5318 extern VALUE rb_eNoMatchingPatternError;
5319 extern VALUE rb_eScriptError;
5320 extern VALUE rb_eNameError;
5321 extern VALUE rb_eSyntaxError;
5322 extern VALUE rb_eLoadError;
5323 extern VALUE rb_eMathDomainError;
5324 extern VALUE rb_stdin, rb_stdout, rb_stderr;
5325 static inline VALUE
5326 rb_class_of(VALUE obj)
5327 {
5328 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
5329 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return rb_cInteger;
5330 if (((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) return rb_cFloat;
5331 if (obj == ((VALUE)RUBY_Qtrue)) return rb_cTrueClass;
5332 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return rb_cSymbol;
5333 }
5334 else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
5335 if (obj == ((VALUE)RUBY_Qnil)) return rb_cNilClass;
5336 if (obj == ((VALUE)RUBY_Qfalse)) return rb_cFalseClass;
5337 }
5338 return ((struct RBasic*)(obj))->klass;
5339 }
5340 static inline int
5341 rb_type(VALUE obj)
5342 {
5343 if (((VALUE)(obj) & RUBY_IMMEDIATE_MASK)) {
5344 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) return RUBY_T_FIXNUM;
5345 if (((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) return RUBY_T_FLOAT;
5346 if (obj == ((VALUE)RUBY_Qtrue)) return RUBY_T_TRUE;
5347 if ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)) return RUBY_T_SYMBOL;
5348 if (obj == ((VALUE)RUBY_Qundef)) return RUBY_T_UNDEF;
5349 }
5350 else if (!!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
5351 if (obj == ((VALUE)RUBY_Qnil)) return RUBY_T_NIL;
5352 if (obj == ((VALUE)RUBY_Qfalse)) return RUBY_T_FALSE;
5353 }
5354 return (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK);
5355 }
5356 #define rb_type_p(obj,type) __extension__ (__builtin_constant_p(type) ? RB_TYPE_P((obj), (type)) : rb_type(obj) == (type))
5357 #define rb_special_const_p(obj) __extension__ ({ VALUE special_const_obj = (obj); (int)(RB_SPECIAL_CONST_P(special_const_obj) ? RUBY_Qtrue : RUBY_Qfalse); })
5358 #define RUBY_INTERN_H 1
5359 #define RUBY_ST_H 1
5360
5361 #pragma GCC visibility push(default)
5362
5363 typedef unsigned long st_data_t;
5364 #define ST_DATA_T_DEFINED
5365 typedef struct st_table st_table;
5366 typedef st_data_t st_index_t;
5367 #define MAX_ST_INDEX_VAL (~(st_index_t) 0)
5368 typedef int st_compare_func(st_data_t, st_data_t);
5369 typedef st_index_t st_hash_func(st_data_t);
5370 typedef char st_check_for_sizeof_st_index_t[8 == (int)sizeof(st_index_t) ? 1 : -1];
5371 #define SIZEOF_ST_INDEX_T SIZEOF_VOIDP
5372 struct st_hash_type {
5373 int (*compare)(st_data_t, st_data_t);
5374 st_index_t (*hash)(st_data_t);
5375 };
5376 #define ST_INDEX_BITS (SIZEOF_ST_INDEX_T * CHAR_BIT)
5377 #define ST_DATA_COMPATIBLE_P(type) __builtin_choose_expr(__builtin_types_compatible_p(type, st_data_t), 1, 0)
5378 typedef struct st_table_entry st_table_entry;
5379 struct st_table_entry;
5380 struct st_table {
5381 unsigned char entry_power, bin_power, size_ind;
5382 unsigned int rebuilds_num;
5383 const struct st_hash_type *type;
5384 st_index_t num_entries;
5385 st_index_t *bins;
5386 st_index_t entries_start, entries_bound;
5387 st_table_entry *entries;
5388 };
5389 #define st_is_member(table,key) st_lookup((table),(key),(st_data_t *)0)
5390 enum st_retval {ST_CONTINUE, ST_STOP, ST_DELETE, ST_CHECK, ST_REPLACE};
5391 st_table *rb_st_init_table(const struct st_hash_type *);
5392 #define st_init_table rb_st_init_table
5393 st_table *rb_st_init_table_with_size(const struct st_hash_type *, st_index_t);
5394 #define st_init_table_with_size rb_st_init_table_with_size
5395 st_table *rb_st_init_numtable(void);
5396 #define st_init_numtable rb_st_init_numtable
5397 st_table *rb_st_init_numtable_with_size(st_index_t);
5398 #define st_init_numtable_with_size rb_st_init_numtable_with_size
5399 st_table *rb_st_init_strtable(void);
5400 #define st_init_strtable rb_st_init_strtable
5401 st_table *rb_st_init_strtable_with_size(st_index_t);
5402 #define st_init_strtable_with_size rb_st_init_strtable_with_size
5403 st_table *rb_st_init_strcasetable(void);
5404 #define st_init_strcasetable rb_st_init_strcasetable
5405 st_table *rb_st_init_strcasetable_with_size(st_index_t);
5406 #define st_init_strcasetable_with_size rb_st_init_strcasetable_with_size
5407 int rb_st_delete(st_table *, st_data_t *, st_data_t *);
5408 #define st_delete rb_st_delete
5409 int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t);
5410 #define st_delete_safe rb_st_delete_safe
5411 int rb_st_shift(st_table *, st_data_t *, st_data_t *);
5412 #define st_shift rb_st_shift
5413 int rb_st_insert(st_table *, st_data_t, st_data_t);
5414 #define st_insert rb_st_insert
5415 int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t (*)(st_data_t));
5416 #define st_insert2 rb_st_insert2
5417 int rb_st_lookup(st_table *, st_data_t, st_data_t *);
5418 #define st_lookup rb_st_lookup
5419 int rb_st_get_key(st_table *, st_data_t, st_data_t *);
5420 #define st_get_key rb_st_get_key
5421 typedef int st_update_callback_func(st_data_t *key, st_data_t *value, st_data_t arg, int existing);
5422 int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg);
5423 #define st_update rb_st_update
5424 typedef int st_foreach_callback_func(st_data_t, st_data_t, st_data_t);
5425 typedef int st_foreach_check_callback_func(st_data_t, st_data_t, st_data_t, int);
5426 int rb_st_foreach_with_replace(st_table *tab, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
5427 #define st_foreach_with_replace rb_st_foreach_with_replace
5428 int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t);
5429 #define st_foreach rb_st_foreach
5430 int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t);
5431 #define st_foreach_check rb_st_foreach_check
5432 st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size);
5433 #define st_keys rb_st_keys
5434 st_index_t rb_st_keys_check(st_table *table, st_data_t *keys, st_index_t size, st_data_t never);
5435 #define st_keys_check rb_st_keys_check
5436 st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size);
5437 #define st_values rb_st_values
5438 st_index_t rb_st_values_check(st_table *table, st_data_t *values, st_index_t size, st_data_t never);
5439 #define st_values_check rb_st_values_check
5440 void rb_st_add_direct(st_table *, st_data_t, st_data_t);
5441 #define st_add_direct rb_st_add_direct
5442 void rb_st_free_table(st_table *);
5443 #define st_free_table rb_st_free_table
5444 void rb_st_cleanup_safe(st_table *, st_data_t);
5445 #define st_cleanup_safe rb_st_cleanup_safe
5446 void rb_st_clear(st_table *);
5447 #define st_clear rb_st_clear
5448 st_table *rb_st_copy(st_table *);
5449 #define st_copy rb_st_copy
5450 __attribute__ ((__const__)) int rb_st_numcmp(st_data_t, st_data_t);
5451 #define st_numcmp rb_st_numcmp
5452 __attribute__ ((__const__)) st_index_t rb_st_numhash(st_data_t);
5453 #define st_numhash rb_st_numhash
5454 __attribute__ ((__pure__)) int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
5455 #define st_locale_insensitive_strcasecmp rb_st_locale_insensitive_strcasecmp
5456 __attribute__ ((__pure__)) int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
5457 #define st_locale_insensitive_strncasecmp rb_st_locale_insensitive_strncasecmp
5458 #define st_strcasecmp rb_st_locale_insensitive_strcasecmp
5459 #define st_strncasecmp rb_st_locale_insensitive_strncasecmp
5460 __attribute__ ((__pure__)) size_t rb_st_memsize(const st_table *);
5461 #define st_memsize rb_st_memsize
5462 __attribute__ ((__pure__)) st_index_t rb_st_hash(const void *ptr, size_t len, st_index_t h);
5463 #define st_hash rb_st_hash
5464 __attribute__ ((__const__)) st_index_t rb_st_hash_uint32(st_index_t h, uint32_t i);
5465 #define st_hash_uint32 rb_st_hash_uint32
5466 __attribute__ ((__const__)) st_index_t rb_st_hash_uint(st_index_t h, st_index_t i);
5467 #define st_hash_uint rb_st_hash_uint
5468 __attribute__ ((__const__)) st_index_t rb_st_hash_end(st_index_t h);
5469 #define st_hash_end rb_st_hash_end
5470 __attribute__ ((__const__)) st_index_t rb_st_hash_start(st_index_t h);
5471 #define st_hash_start(h) ((st_index_t)(h))
5472 void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE);
5473
5474 #pragma GCC visibility pop
5475
5476 #define MJIT_STATIC static
5477
5478 #pragma GCC visibility push(default)
5479
5480 #define UNLIMITED_ARGUMENTS (-1)
5481 void rb_mem_clear(VALUE*, long);
5482 VALUE rb_assoc_new(VALUE, VALUE);
5483 VALUE rb_check_array_type(VALUE);
5484 VALUE rb_ary_new(void);
5485 VALUE rb_ary_new_capa(long capa);
5486 VALUE rb_ary_new_from_args(long n, ...);
5487 VALUE rb_ary_new_from_values(long n, const VALUE *elts);
5488 VALUE rb_ary_tmp_new(long);
5489 void rb_ary_free(VALUE);
5490 void rb_ary_modify(VALUE);
5491 VALUE rb_ary_freeze(VALUE);
5492 VALUE rb_ary_shared_with_p(VALUE, VALUE);
5493 VALUE rb_ary_aref(int, const VALUE*, VALUE);
5494 VALUE rb_ary_subseq(VALUE, long, long);
5495 void rb_ary_store(VALUE, long, VALUE);
5496 VALUE rb_ary_dup(VALUE);
5497 VALUE rb_ary_resurrect(VALUE ary);
5498 VALUE rb_ary_to_ary(VALUE);
5499 VALUE rb_ary_to_s(VALUE);
5500 VALUE rb_ary_cat(VALUE, const VALUE *, long);
5501 VALUE rb_ary_push(VALUE, VALUE);
5502 VALUE rb_ary_pop(VALUE);
5503 VALUE rb_ary_shift(VALUE);
5504 VALUE rb_ary_unshift(VALUE, VALUE);
5505 VALUE rb_ary_entry(VALUE, long);
5506 VALUE rb_ary_each(VALUE);
5507 VALUE rb_ary_join(VALUE, VALUE);
5508 VALUE rb_ary_reverse(VALUE);
5509 VALUE rb_ary_rotate(VALUE, long);
5510 VALUE rb_ary_sort(VALUE);
5511 VALUE rb_ary_sort_bang(VALUE);
5512 VALUE rb_ary_delete(VALUE, VALUE);
5513 VALUE rb_ary_delete_at(VALUE, long);
5514 VALUE rb_ary_clear(VALUE);
5515 VALUE rb_ary_plus(VALUE, VALUE);
5516 VALUE rb_ary_concat(VALUE, VALUE);
5517 VALUE rb_ary_assoc(VALUE, VALUE);
5518 VALUE rb_ary_rassoc(VALUE, VALUE);
5519 VALUE rb_ary_includes(VALUE, VALUE);
5520 VALUE rb_ary_cmp(VALUE, VALUE);
5521 VALUE rb_ary_replace(VALUE copy, VALUE orig);
5522 VALUE rb_get_values_at(VALUE, long, int, const VALUE*, VALUE(*)(VALUE,long));
5523 VALUE rb_ary_resize(VALUE ary, long len);
5524 #define rb_ary_new2 rb_ary_new_capa
5525 #define rb_ary_new3 rb_ary_new_from_args
5526 #define rb_ary_new4 rb_ary_new_from_values
5527 VALUE rb_big_new(size_t, int);
5528 int rb_bigzero_p(VALUE x);
5529 VALUE rb_big_clone(VALUE);
5530 void rb_big_2comp(VALUE);
5531 VALUE rb_big_norm(VALUE);
5532 void rb_big_resize(VALUE big, size_t len);
5533 VALUE rb_cstr_to_inum(const char*, int, int);
5534 VALUE rb_str_to_inum(VALUE, int, int);
5535 VALUE rb_cstr2inum(const char*, int);
5536 VALUE rb_str2inum(VALUE, int);
5537 VALUE rb_big2str(VALUE, int);
5538 long rb_big2long(VALUE);
5539 #define rb_big2int(x) rb_big2long(x)
5540 unsigned long rb_big2ulong(VALUE);
5541 #define rb_big2uint(x) rb_big2ulong(x)
5542 long long rb_big2ll(VALUE);
5543 unsigned long long rb_big2ull(VALUE);
5544 void rb_big_pack(VALUE val, unsigned long *buf, long num_longs);
5545 VALUE rb_big_unpack(unsigned long *buf, long num_longs);
5546 int rb_uv_to_utf8(char[6],unsigned long);
5547 VALUE rb_dbl2big(double);
5548 double rb_big2dbl(VALUE);
5549 VALUE rb_big_cmp(VALUE, VALUE);
5550 VALUE rb_big_eq(VALUE, VALUE);
5551 VALUE rb_big_eql(VALUE, VALUE);
5552 VALUE rb_big_plus(VALUE, VALUE);
5553 VALUE rb_big_minus(VALUE, VALUE);
5554 VALUE rb_big_mul(VALUE, VALUE);
5555 VALUE rb_big_div(VALUE, VALUE);
5556 VALUE rb_big_idiv(VALUE, VALUE);
5557 VALUE rb_big_modulo(VALUE, VALUE);
5558 VALUE rb_big_divmod(VALUE, VALUE);
5559 VALUE rb_big_pow(VALUE, VALUE);
5560 VALUE rb_big_and(VALUE, VALUE);
5561 VALUE rb_big_or(VALUE, VALUE);
5562 VALUE rb_big_xor(VALUE, VALUE);
5563 VALUE rb_big_lshift(VALUE, VALUE);
5564 VALUE rb_big_rshift(VALUE, VALUE);
5565 #define INTEGER_PACK_MSWORD_FIRST 0x01
5566 #define INTEGER_PACK_LSWORD_FIRST 0x02
5567 #define INTEGER_PACK_MSBYTE_FIRST 0x10
5568 #define INTEGER_PACK_LSBYTE_FIRST 0x20
5569 #define INTEGER_PACK_NATIVE_BYTE_ORDER 0x40
5570 #define INTEGER_PACK_2COMP 0x80
5571 #define INTEGER_PACK_FORCE_GENERIC_IMPLEMENTATION 0x400
5572 #define INTEGER_PACK_FORCE_BIGNUM 0x100
5573 #define INTEGER_PACK_NEGATIVE 0x200
5574 #define INTEGER_PACK_LITTLE_ENDIAN (INTEGER_PACK_LSWORD_FIRST | INTEGER_PACK_LSBYTE_FIRST)
5575 #define INTEGER_PACK_BIG_ENDIAN (INTEGER_PACK_MSWORD_FIRST | INTEGER_PACK_MSBYTE_FIRST)
5576 int rb_integer_pack(VALUE val, void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
5577 VALUE rb_integer_unpack(const void *words, size_t numwords, size_t wordsize, size_t nails, int flags);
5578 size_t rb_absint_size(VALUE val, int *nlz_bits_ret);
5579 size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret);
5580 int rb_absint_singlebit_p(VALUE val);
5581 VALUE rb_rational_raw(VALUE, VALUE);
5582 #define rb_rational_raw1(x) rb_rational_raw((x), INT2FIX(1))
5583 #define rb_rational_raw2(x,y) rb_rational_raw((x), (y))
5584 VALUE rb_rational_new(VALUE, VALUE);
5585 #define rb_rational_new1(x) rb_rational_new((x), INT2FIX(1))
5586 #define rb_rational_new2(x,y) rb_rational_new((x), (y))
5587 VALUE rb_Rational(VALUE, VALUE);
5588 #define rb_Rational1(x) rb_Rational((x), INT2FIX(1))
5589 #define rb_Rational2(x,y) rb_Rational((x), (y))
5590 VALUE rb_rational_num(VALUE rat);
5591 VALUE rb_rational_den(VALUE rat);
5592 VALUE rb_flt_rationalize_with_prec(VALUE, VALUE);
5593 VALUE rb_flt_rationalize(VALUE);
5594 VALUE rb_complex_raw(VALUE, VALUE);
5595 #define rb_complex_raw1(x) rb_complex_raw((x), INT2FIX(0))
5596 #define rb_complex_raw2(x,y) rb_complex_raw((x), (y))
5597 VALUE rb_complex_new(VALUE, VALUE);
5598 #define rb_complex_new1(x) rb_complex_new((x), INT2FIX(0))
5599 #define rb_complex_new2(x,y) rb_complex_new((x), (y))
5600 VALUE rb_complex_new_polar(VALUE abs, VALUE arg);
5601 __attribute__ ((__deprecated__("by ""rb_complex_new_polar"))) VALUE rb_complex_polar(VALUE abs, VALUE arg);
5602 VALUE rb_complex_real(VALUE z);
5603 VALUE rb_complex_imag(VALUE z);
5604 VALUE rb_complex_plus(VALUE x, VALUE y);
5605 VALUE rb_complex_minus(VALUE x, VALUE y);
5606 VALUE rb_complex_mul(VALUE x, VALUE y);
5607 VALUE rb_complex_div(VALUE x, VALUE y);
5608 VALUE rb_complex_uminus(VALUE z);
5609 VALUE rb_complex_conjugate(VALUE z);
5610 VALUE rb_complex_abs(VALUE z);
5611 VALUE rb_complex_arg(VALUE z);
5612 VALUE rb_complex_pow(VALUE base, VALUE exp);
5613 VALUE rb_dbl_complex_new(double real, double imag);
5614 #define rb_complex_add rb_complex_plus
5615 #define rb_complex_sub rb_complex_minus
5616 #define rb_complex_nagate rb_complex_uminus
5617 VALUE rb_Complex(VALUE, VALUE);
5618 #define rb_Complex1(x) rb_Complex((x), INT2FIX(0))
5619 #define rb_Complex2(x,y) rb_Complex((x), (y))
5620 VALUE rb_class_new(VALUE);
5621 VALUE rb_mod_init_copy(VALUE, VALUE);
5622 VALUE rb_singleton_class_clone(VALUE);
5623 void rb_singleton_class_attached(VALUE,VALUE);
5624 void rb_check_inheritable(VALUE);
5625 VALUE rb_define_class_id(ID, VALUE);
5626 VALUE rb_define_class_id_under(VALUE, ID, VALUE);
5627 VALUE rb_module_new(void);
5628 VALUE rb_define_module_id(ID);
5629 VALUE rb_define_module_id_under(VALUE, ID);
5630 VALUE rb_mod_included_modules(VALUE);
5631 VALUE rb_mod_include_p(VALUE, VALUE);
5632 VALUE rb_mod_ancestors(VALUE);
5633 VALUE rb_class_instance_methods(int, const VALUE*, VALUE);
5634 VALUE rb_class_public_instance_methods(int, const VALUE*, VALUE);
5635 VALUE rb_class_protected_instance_methods(int, const VALUE*, VALUE);
5636 VALUE rb_class_private_instance_methods(int, const VALUE*, VALUE);
5637 VALUE rb_obj_singleton_methods(int, const VALUE*, VALUE);
5638 void rb_define_method_id(VALUE, ID, VALUE (*)(), int);
5639 void rb_undef(VALUE, ID);
5640 void rb_define_protected_method(VALUE, const char*, VALUE (*)(), int);
5641 void rb_define_private_method(VALUE, const char*, VALUE (*)(), int);
5642 void rb_define_singleton_method(VALUE, const char*, VALUE(*)(), int);
5643 VALUE rb_singleton_class(VALUE);
5644 int rb_cmpint(VALUE, VALUE, VALUE);
5645 __attribute__ ((__noreturn__)) void rb_cmperr(VALUE, VALUE);
5646 VALUE rb_fiber_new(rb_block_call_func_t, VALUE);
5647 VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv);
5648 VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat);
5649 VALUE rb_fiber_yield(int argc, const VALUE *argv);
5650 VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat);
5651 VALUE rb_fiber_current(void);
5652 VALUE rb_fiber_alive_p(VALUE);
5653 VALUE rb_enum_values_pack(int, const VALUE*);
5654 VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *);
5655 typedef VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE);
5656 VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *);
5657 VALUE rb_enumeratorize_with_size_kw(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *, int);
5658 #define SIZED_ENUMERATOR(obj,argc,argv,size_fn) rb_enumeratorize_with_size((obj), ID2SYM(rb_frame_this_func()), (argc), (argv), (size_fn))
5659 #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))
5660 #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)
5661 #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)
5662 #define RETURN_ENUMERATOR(obj,argc,argv) RETURN_SIZED_ENUMERATOR(obj, argc, argv, 0)
5663 #define RETURN_ENUMERATOR_KW(obj,argc,argv,kw_splat) RETURN_SIZED_ENUMERATOR_KW(obj, argc, argv, 0, kw_splat)
5664 typedef struct {
5665 VALUE begin;
5666 VALUE end;
5667 VALUE step;
5668 int exclude_end;
5669 } rb_arithmetic_sequence_components_t;
5670 int rb_arithmetic_sequence_extract(VALUE, rb_arithmetic_sequence_components_t *);
5671 VALUE rb_exc_new(VALUE, const char*, long);
5672 VALUE rb_exc_new_cstr(VALUE, const char*);
5673 VALUE rb_exc_new_str(VALUE, VALUE);
5674 #define rb_exc_new2 rb_exc_new_cstr
5675 #define rb_exc_new3 rb_exc_new_str
5676 __attribute__ ((__noreturn__)) void rb_loaderror(const char*, ...) __attribute__((format(printf, 1, 2)));
5677 __attribute__ ((__noreturn__)) void rb_loaderror_with_path(VALUE path, const char*, ...) __attribute__((format(printf, 2, 3)));
5678 __attribute__ ((__noreturn__)) void rb_name_error(ID, const char*, ...) __attribute__((format(printf, 2, 3)));
5679 __attribute__ ((__noreturn__)) void rb_name_error_str(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5680 __attribute__ ((__noreturn__)) void rb_frozen_error_raise(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
5681 __attribute__ ((__noreturn__)) void rb_invalid_str(const char*, const char*);
5682 __attribute__ ((__noreturn__)) void rb_error_frozen(const char*);
5683 __attribute__ ((__noreturn__)) void rb_error_frozen_object(VALUE);
5684 void rb_error_untrusted(VALUE);
5685 void rb_check_frozen(VALUE);
5686 void rb_check_trusted(VALUE);
5687 #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)
5688 #define rb_check_frozen(obj) __extension__({rb_check_frozen_internal(obj);})
5689 void rb_check_copyable(VALUE obj, VALUE orig);
5690 #define RB_OBJ_INIT_COPY(obj,orig) ((obj) != (orig) && (rb_obj_init_copy((obj), (orig)), 1))
5691 #define OBJ_INIT_COPY(obj,orig) RB_OBJ_INIT_COPY(obj, orig)
5692 int rb_sourceline(void);
5693 const char *rb_sourcefile(void);
5694 VALUE rb_check_funcall(VALUE, ID, int, const VALUE*);
5695 VALUE rb_check_funcall_kw(VALUE, ID, int, const VALUE*, int);
5696 __attribute__ ((__noreturn__)) static void rb_error_arity(int, int, int);
5697 static inline int
5698 rb_check_arity(int argc, int min, int max)
5699 {
5700 if ((argc < min) || (max != (-1) && argc > max))
5701 rb_error_arity(argc, min, max);
5702 return argc;
5703 }
5704 #define rb_check_arity rb_check_arity
5705 typedef struct {
5706 int maxfd;
5707 _types_fd_set *fdset;
5708 } rb_fdset_t;
5709 void rb_fd_init(rb_fdset_t *);
5710 void rb_fd_term(rb_fdset_t *);
5711 void rb_fd_zero(rb_fdset_t *);
5712 void rb_fd_set(int, rb_fdset_t *);
5713 void rb_fd_clr(int, rb_fdset_t *);
5714 int rb_fd_isset(int, const rb_fdset_t *);
5715 void rb_fd_copy(rb_fdset_t *, const _types_fd_set *, int);
5716 void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src);
5717 struct timeval;
5718 int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
5719 #define rb_fd_ptr(f) ((f)->fdset)
5720 #define rb_fd_max(f) ((f)->maxfd)
5721 __attribute__ ((__noreturn__)) void rb_exc_raise(VALUE);
5722 __attribute__ ((__noreturn__)) void rb_exc_fatal(VALUE);
5723 __attribute__ ((__noreturn__)) VALUE rb_f_exit(int, const VALUE*);
5724 __attribute__ ((__noreturn__)) VALUE rb_f_abort(int, const VALUE*);
5725 void rb_remove_method(VALUE, const char*);
5726 void rb_remove_method_id(VALUE, ID);
5727 #define HAVE_RB_DEFINE_ALLOC_FUNC 1
5728 typedef VALUE (*rb_alloc_func_t)(VALUE);
5729 void rb_define_alloc_func(VALUE, rb_alloc_func_t);
5730 void rb_undef_alloc_func(VALUE);
5731 rb_alloc_func_t rb_get_alloc_func(VALUE);
5732 void rb_clear_constant_cache(void);
5733 void rb_clear_method_cache_by_class(VALUE);
5734 void rb_alias(VALUE, ID, ID);
5735 void rb_attr(VALUE,ID,int,int,int);
5736 int rb_method_boundp(VALUE, ID, int);
5737 int rb_method_basic_definition_p(VALUE, ID);
5738 VALUE rb_eval_cmd(VALUE, VALUE, int);
5739 VALUE rb_eval_cmd_kw(VALUE, VALUE, int);
5740 int rb_obj_respond_to(VALUE, ID, int);
5741 int rb_respond_to(VALUE, ID);
5742 __attribute__ ((__noreturn__)) VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker);
5743 __attribute__ ((__noreturn__)) void rb_interrupt(void);
5744 VALUE rb_apply(VALUE, ID, VALUE);
5745 void rb_backtrace(void);
5746 ID rb_frame_this_func(void);
5747 VALUE rb_obj_instance_eval(int, const VALUE*, VALUE);
5748 VALUE rb_obj_instance_exec(int, const VALUE*, VALUE);
5749 VALUE rb_mod_module_eval(int, const VALUE*, VALUE);
5750 VALUE rb_mod_module_exec(int, const VALUE*, VALUE);
5751 void rb_load(VALUE, int);
5752 void rb_load_protect(VALUE, int, int*);
5753 __attribute__ ((__noreturn__)) void rb_jump_tag(int);
5754 int rb_provided(const char*);
5755 int rb_feature_provided(const char *, const char **);
5756 void rb_provide(const char*);
5757 VALUE rb_f_require(VALUE, VALUE);
5758 VALUE rb_require_safe(VALUE, int);
5759 VALUE rb_require_string(VALUE);
5760 void rb_obj_call_init(VALUE, int, const VALUE*);
5761 void rb_obj_call_init_kw(VALUE, int, const VALUE*, int);
5762 VALUE rb_class_new_instance(int, const VALUE*, VALUE);
5763 VALUE rb_class_new_instance_kw(int, const VALUE*, VALUE, int);
5764 VALUE rb_block_proc(void);
5765 VALUE rb_block_lambda(void);
5766 VALUE rb_proc_new(rb_block_call_func_t, VALUE);
5767 VALUE rb_obj_is_proc(VALUE);
5768 VALUE rb_proc_call(VALUE, VALUE);
5769 VALUE rb_proc_call_kw(VALUE, VALUE, int);
5770 VALUE rb_proc_call_with_block(VALUE, int argc, const VALUE *argv, VALUE);
5771 VALUE rb_proc_call_with_block_kw(VALUE, int argc, const VALUE *argv, VALUE, int);
5772 int rb_proc_arity(VALUE);
5773 VALUE rb_proc_lambda_p(VALUE);
5774 VALUE rb_binding_new(void);
5775 VALUE rb_obj_method(VALUE, VALUE);
5776 VALUE rb_obj_is_method(VALUE);
5777 VALUE rb_method_call(int, const VALUE*, VALUE);
5778 VALUE rb_method_call_kw(int, const VALUE*, VALUE, int);
5779 VALUE rb_method_call_with_block(int, const VALUE *, VALUE, VALUE);
5780 VALUE rb_method_call_with_block_kw(int, const VALUE *, VALUE, VALUE, int);
5781 int rb_mod_method_arity(VALUE, ID);
5782 int rb_obj_method_arity(VALUE, ID);
5783 VALUE rb_protect(VALUE (*)(VALUE), VALUE, int*);
5784 void rb_set_end_proc(void (*)(VALUE), VALUE);
5785 void rb_thread_schedule(void);
5786 void rb_thread_wait_fd(int);
5787 int rb_thread_fd_writable(int);
5788 void rb_thread_fd_close(int);
5789 int rb_thread_alone(void);
5790 void rb_thread_sleep(int);
5791 void rb_thread_sleep_forever(void);
5792 void rb_thread_sleep_deadly(void);
5793 VALUE rb_thread_stop(void);
5794 VALUE rb_thread_wakeup(VALUE);
5795 VALUE rb_thread_wakeup_alive(VALUE);
5796 VALUE rb_thread_run(VALUE);
5797 VALUE rb_thread_kill(VALUE);
5798 VALUE rb_thread_create(VALUE (*)(void *), void*);
5799 int rb_thread_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *);
5800 void rb_thread_wait_for(struct timeval);
5801 VALUE rb_thread_current(void);
5802 VALUE rb_thread_main(void);
5803 VALUE rb_thread_local_aref(VALUE, ID);
5804 VALUE rb_thread_local_aset(VALUE, ID, VALUE);
5805 void rb_thread_atfork(void);
5806 void rb_thread_atfork_before_exec(void);
5807 VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
5808 VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
5809 VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE);
5810 VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int),VALUE,VALUE,VALUE);
5811 VALUE rb_dir_getwd(void);
5812 VALUE rb_file_s_expand_path(int, const VALUE *);
5813 VALUE rb_file_expand_path(VALUE, VALUE);
5814 VALUE rb_file_s_absolute_path(int, const VALUE *);
5815 VALUE rb_file_absolute_path(VALUE, VALUE);
5816 VALUE rb_file_dirname(VALUE fname);
5817 int rb_find_file_ext_safe(VALUE*, const char* const*, int);
5818 VALUE rb_find_file_safe(VALUE, int);
5819 int rb_find_file_ext(VALUE*, const char* const*);
5820 VALUE rb_find_file(VALUE);
5821 VALUE rb_file_directory_p(VALUE,VALUE);
5822 VALUE rb_str_encode_ospath(VALUE);
5823 int rb_is_absolute_path(const char *);
5824 __attribute__((cold)) __attribute__ ((__noreturn__)) void rb_memerror(void);
5825 __attribute__ ((__pure__)) int rb_during_gc(void);
5826 void rb_gc_mark_locations(const VALUE*, const VALUE*);
5827 void rb_mark_tbl(struct st_table*);
5828 void rb_mark_tbl_no_pin(struct st_table*);
5829 void rb_mark_set(struct st_table*);
5830 void rb_mark_hash(struct st_table*);
5831 void rb_gc_update_tbl_refs(st_table *ptr);
5832 void rb_gc_mark_maybe(VALUE);
5833 void rb_gc_mark(VALUE);
5834 void rb_gc_mark_movable(VALUE);
5835 VALUE rb_gc_location(VALUE);
5836 void rb_gc_force_recycle(VALUE);
5837 void rb_gc(void);
5838 void rb_gc_copy_finalizer(VALUE,VALUE);
5839 VALUE rb_gc_enable(void);
5840 VALUE rb_gc_disable(void);
5841 VALUE rb_gc_start(void);
5842 VALUE rb_define_finalizer(VALUE, VALUE);
5843 VALUE rb_undefine_finalizer(VALUE);
5844 size_t rb_gc_count(void);
5845 size_t rb_gc_stat(VALUE);
5846 VALUE rb_gc_latest_gc_info(VALUE);
5847 void rb_gc_adjust_memory_usage(ssize_t);
5848 void rb_st_foreach_safe(struct st_table *, int (*)(st_data_t, st_data_t, st_data_t), st_data_t);
5849 #define st_foreach_safe rb_st_foreach_safe
5850 VALUE rb_check_hash_type(VALUE);
5851 void rb_hash_foreach(VALUE, int (*)(VALUE, VALUE, VALUE), VALUE);
5852 VALUE rb_hash(VALUE);
5853 VALUE rb_hash_new(void);
5854 VALUE rb_hash_dup(VALUE);
5855 VALUE rb_hash_freeze(VALUE);
5856 VALUE rb_hash_aref(VALUE, VALUE);
5857 VALUE rb_hash_lookup(VALUE, VALUE);
5858 VALUE rb_hash_lookup2(VALUE, VALUE, VALUE);
5859 VALUE rb_hash_fetch(VALUE, VALUE);
5860 VALUE rb_hash_aset(VALUE, VALUE, VALUE);
5861 VALUE rb_hash_clear(VALUE);
5862 VALUE rb_hash_delete_if(VALUE);
5863 VALUE rb_hash_delete(VALUE,VALUE);
5864 VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone);
5865 void rb_hash_bulk_insert(long, const VALUE *, VALUE);
5866 typedef VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value);
5867 VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func);
5868 struct st_table *rb_hash_tbl(VALUE, const char *file, int line);
5869 int rb_path_check(const char*);
5870 int rb_env_path_tainted(void);
5871 VALUE rb_env_clear(void);
5872 VALUE rb_hash_size(VALUE);
5873 void rb_hash_free(VALUE);
5874 #define rb_defout rb_stdout
5875 extern VALUE rb_fs;
5876 extern VALUE rb_output_fs;
5877 extern VALUE rb_rs;
5878 extern VALUE rb_default_rs;
5879 extern VALUE rb_output_rs;
5880 VALUE rb_io_write(VALUE, VALUE);
5881 VALUE rb_io_gets(VALUE);
5882 VALUE rb_io_getbyte(VALUE);
5883 VALUE rb_io_ungetc(VALUE, VALUE);
5884 VALUE rb_io_ungetbyte(VALUE, VALUE);
5885 VALUE rb_io_close(VALUE);
5886 VALUE rb_io_flush(VALUE);
5887 VALUE rb_io_eof(VALUE);
5888 VALUE rb_io_binmode(VALUE);
5889 VALUE rb_io_ascii8bit_binmode(VALUE);
5890 VALUE rb_io_addstr(VALUE, VALUE);
5891 VALUE rb_io_printf(int, const VALUE*, VALUE);
5892 VALUE rb_io_print(int, const VALUE*, VALUE);
5893 VALUE rb_io_puts(int, const VALUE*, VALUE);
5894 VALUE rb_io_fdopen(int, int, const char*);
5895 VALUE rb_io_get_io(VALUE);
5896 VALUE rb_file_open(const char*, const char*);
5897 VALUE rb_file_open_str(VALUE, const char*);
5898 VALUE rb_gets(void);
5899 void rb_write_error(const char*);
5900 void rb_write_error2(const char*, long);
5901 void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds);
5902 int rb_pipe(int *pipes);
5903 int rb_reserved_fd_p(int fd);
5904 int rb_cloexec_open(const char *pathname, int flags, mode_t mode);
5905 int rb_cloexec_dup(int oldfd);
5906 int rb_cloexec_dup2(int oldfd, int newfd);
5907 int rb_cloexec_pipe(int fildes[2]);
5908 int rb_cloexec_fcntl_dupfd(int fd, int minfd);
5909 #define RB_RESERVED_FD_P(fd) rb_reserved_fd_p(fd)
5910 void rb_update_max_fd(int fd);
5911 void rb_fd_fix_cloexec(int fd);
5912 VALUE rb_marshal_dump(VALUE, VALUE);
5913 VALUE rb_marshal_load(VALUE);
5914 void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE (*dumper)(VALUE), VALUE (*loader)(VALUE, VALUE));
5915 __attribute__ ((__noreturn__)) void rb_num_zerodiv(void);
5916 #define RB_NUM_COERCE_FUNCS_NEED_OPID 1
5917 VALUE rb_num_coerce_bin(VALUE, VALUE, ID);
5918 VALUE rb_num_coerce_cmp(VALUE, VALUE, ID);
5919 VALUE rb_num_coerce_relop(VALUE, VALUE, ID);
5920 VALUE rb_num_coerce_bit(VALUE, VALUE, ID);
5921 VALUE rb_num2fix(VALUE);
5922 VALUE rb_fix2str(VALUE, int);
5923 __attribute__ ((__const__)) VALUE rb_dbl_cmp(double, double);
5924 int rb_eql(VALUE, VALUE);
5925 VALUE rb_any_to_s(VALUE);
5926 VALUE rb_inspect(VALUE);
5927 VALUE rb_obj_is_instance_of(VALUE, VALUE);
5928 VALUE rb_obj_is_kind_of(VALUE, VALUE);
5929 VALUE rb_obj_alloc(VALUE);
5930 VALUE rb_obj_clone(VALUE);
5931 VALUE rb_obj_dup(VALUE);
5932 VALUE rb_obj_init_copy(VALUE,VALUE);
5933 VALUE rb_obj_taint(VALUE);
5934 __attribute__ ((__pure__)) VALUE rb_obj_tainted(VALUE);
5935 VALUE rb_obj_untaint(VALUE);
5936 VALUE rb_obj_untrust(VALUE);
5937 __attribute__ ((__pure__)) VALUE rb_obj_untrusted(VALUE);
5938 VALUE rb_obj_trust(VALUE);
5939 VALUE rb_obj_freeze(VALUE);
5940 __attribute__ ((__pure__)) VALUE rb_obj_frozen_p(VALUE);
5941 VALUE rb_obj_id(VALUE);
5942 VALUE rb_memory_id(VALUE);
5943 VALUE rb_obj_class(VALUE);
5944 __attribute__ ((__pure__)) VALUE rb_class_real(VALUE);
5945 __attribute__ ((__pure__)) VALUE rb_class_inherited_p(VALUE, VALUE);
5946 VALUE rb_class_superclass(VALUE);
5947 VALUE rb_class_get_superclass(VALUE);
5948 VALUE rb_convert_type(VALUE,int,const char*,const char*);
5949 VALUE rb_check_convert_type(VALUE,int,const char*,const char*);
5950 VALUE rb_check_to_integer(VALUE, const char *);
5951 VALUE rb_check_to_float(VALUE);
5952 VALUE rb_to_int(VALUE);
5953 VALUE rb_check_to_int(VALUE);
5954 VALUE rb_Integer(VALUE);
5955 VALUE rb_to_float(VALUE);
5956 VALUE rb_Float(VALUE);
5957 VALUE rb_String(VALUE);
5958 VALUE rb_Array(VALUE);
5959 VALUE rb_Hash(VALUE);
5960 double rb_cstr_to_dbl(const char*, int);
5961 double rb_str_to_dbl(VALUE, int);
5962 ID rb_id_attrset(ID);
5963 __attribute__ ((__const__)) int rb_is_const_id(ID);
5964 __attribute__ ((__const__)) int rb_is_global_id(ID);
5965 __attribute__ ((__const__)) int rb_is_instance_id(ID);
5966 __attribute__ ((__const__)) int rb_is_attrset_id(ID);
5967 __attribute__ ((__const__)) int rb_is_class_id(ID);
5968 __attribute__ ((__const__)) int rb_is_local_id(ID);
5969 __attribute__ ((__const__)) int rb_is_junk_id(ID);
5970 int rb_symname_p(const char*);
5971 int rb_sym_interned_p(VALUE);
5972 VALUE rb_backref_get(void);
5973 void rb_backref_set(VALUE);
5974 VALUE rb_lastline_get(void);
5975 void rb_lastline_set(VALUE);
5976 void rb_last_status_set(int status, pid_t pid);
5977 VALUE rb_last_status_get(void);
5978 int rb_proc_exec(const char*);
5979 __attribute__ ((__noreturn__)) VALUE rb_f_exec(int, const VALUE*);
5980 pid_t rb_waitpid(pid_t pid, int *status, int flags);
5981 void rb_syswait(pid_t pid);
5982 pid_t rb_spawn(int, const VALUE*);
5983 pid_t rb_spawn_err(int, const VALUE*, char*, size_t);
5984 VALUE rb_proc_times(VALUE);
5985 VALUE rb_detach_process(pid_t pid);
5986 VALUE rb_range_new(VALUE, VALUE, int);
5987 VALUE rb_range_beg_len(VALUE, long*, long*, long, int);
5988 int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp);
5989 unsigned int rb_genrand_int32(void);
5990 double rb_genrand_real(void);
5991 void rb_reset_random_seed(void);
5992 VALUE rb_random_bytes(VALUE rnd, long n);
5993 VALUE rb_random_int(VALUE rnd, VALUE max);
5994 unsigned int rb_random_int32(VALUE rnd);
5995 double rb_random_real(VALUE rnd);
5996 unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit);
5997 unsigned long rb_genrand_ulong_limited(unsigned long i);
5998 #define rb_memcmp memcmp
5999 int rb_memcicmp(const void*,const void*,long);
6000 void rb_match_busy(VALUE);
6001 VALUE rb_reg_nth_defined(int, VALUE);
6002 VALUE rb_reg_nth_match(int, VALUE);
6003 int rb_reg_backref_number(VALUE match, VALUE backref);
6004 VALUE rb_reg_last_match(VALUE);
6005 VALUE rb_reg_match_pre(VALUE);
6006 VALUE rb_reg_match_post(VALUE);
6007 VALUE rb_reg_match_last(VALUE);
6008 #define HAVE_RB_REG_NEW_STR 1
6009 VALUE rb_reg_new_str(VALUE, int);
6010 VALUE rb_reg_new(const char *, long, int);
6011 VALUE rb_reg_alloc(void);
6012 VALUE rb_reg_init_str(VALUE re, VALUE s, int options);
6013 VALUE rb_reg_match(VALUE, VALUE);
6014 VALUE rb_reg_match2(VALUE);
6015 int rb_reg_options(VALUE);
6016 #define rb_argv rb_get_argv()
6017 extern VALUE rb_argv0;
6018 VALUE rb_get_argv(void);
6019 void *rb_load_file(const char*);
6020 void *rb_load_file_str(VALUE);
6021 VALUE rb_f_kill(int, const VALUE*);
6022 #define posix_signal ruby_posix_signal
6023 void (*ruby_posix_signal(int, void (*)(int)))(int);
6024 const char *ruby_signal_name(int);
6025 void ruby_default_signal(int);
6026 VALUE rb_f_sprintf(int, const VALUE*);
6027 VALUE rb_sprintf(const char*, ...) __attribute__((format(printf, 1, 2)));
6028 VALUE rb_vsprintf(const char*, va_list);
6029 VALUE rb_str_catf(VALUE, const char*, ...) __attribute__((format(printf, 2, 3)));
6030 VALUE rb_str_vcatf(VALUE, const char*, va_list);
6031 VALUE rb_str_format(int, const VALUE *, VALUE);
6032 VALUE rb_str_new(const char*, long);
6033 VALUE rb_str_new_cstr(const char*);
6034 VALUE rb_str_new_shared(VALUE);
6035 VALUE rb_str_new_frozen(VALUE);
6036 VALUE rb_str_new_with_class(VALUE, const char*, long);
6037 VALUE rb_tainted_str_new_cstr(const char*);
6038 VALUE rb_tainted_str_new(const char*, long);
6039 VALUE rb_external_str_new(const char*, long);
6040 VALUE rb_external_str_new_cstr(const char*);
6041 VALUE rb_locale_str_new(const char*, long);
6042 VALUE rb_locale_str_new_cstr(const char*);
6043 VALUE rb_filesystem_str_new(const char*, long);
6044 VALUE rb_filesystem_str_new_cstr(const char*);
6045 VALUE rb_str_buf_new(long);
6046 VALUE rb_str_buf_new_cstr(const char*);
6047 VALUE rb_str_buf_new2(const char*);
6048 VALUE rb_str_tmp_new(long);
6049 VALUE rb_usascii_str_new(const char*, long);
6050 VALUE rb_usascii_str_new_cstr(const char*);
6051 VALUE rb_utf8_str_new(const char*, long);
6052 VALUE rb_utf8_str_new_cstr(const char*);
6053 VALUE rb_str_new_static(const char *, long);
6054 VALUE rb_usascii_str_new_static(const char *, long);
6055 VALUE rb_utf8_str_new_static(const char *, long);
6056 void rb_str_free(VALUE);
6057 void rb_str_shared_replace(VALUE, VALUE);
6058 VALUE rb_str_buf_append(VALUE, VALUE);
6059 VALUE rb_str_buf_cat(VALUE, const char*, long);
6060 VALUE rb_str_buf_cat2(VALUE, const char*);
6061 VALUE rb_str_buf_cat_ascii(VALUE, const char*);
6062 VALUE rb_obj_as_string(VALUE);
6063 VALUE rb_check_string_type(VALUE);
6064 void rb_must_asciicompat(VALUE);
6065 VALUE rb_str_dup(VALUE);
6066 VALUE rb_str_resurrect(VALUE str);
6067 VALUE rb_str_locktmp(VALUE);
6068 VALUE rb_str_unlocktmp(VALUE);
6069 VALUE rb_str_dup_frozen(VALUE);
6070 #define rb_str_dup_frozen rb_str_new_frozen
6071 VALUE rb_str_plus(VALUE, VALUE);
6072 VALUE rb_str_times(VALUE, VALUE);
6073 long rb_str_sublen(VALUE, long);
6074 VALUE rb_str_substr(VALUE, long, long);
6075 VALUE rb_str_subseq(VALUE, long, long);
6076 char *rb_str_subpos(VALUE, long, long*);
6077 void rb_str_modify(VALUE);
6078 void rb_str_modify_expand(VALUE, long);
6079 VALUE rb_str_freeze(VALUE);
6080 void rb_str_set_len(VALUE, long);
6081 VALUE rb_str_resize(VALUE, long);
6082 VALUE rb_str_cat(VALUE, const char*, long);
6083 VALUE rb_str_cat_cstr(VALUE, const char*);
6084 VALUE rb_str_cat2(VALUE, const char*);
6085 VALUE rb_str_append(VALUE, VALUE);
6086 VALUE rb_str_concat(VALUE, VALUE);
6087 st_index_t rb_memhash(const void *ptr, long len);
6088 st_index_t rb_hash_start(st_index_t);
6089 st_index_t rb_hash_uint32(st_index_t, uint32_t);
6090 st_index_t rb_hash_uint(st_index_t, st_index_t);
6091 st_index_t rb_hash_end(st_index_t);
6092 #define rb_hash_uint32(h,i) st_hash_uint32((h), (i))
6093 #define rb_hash_uint(h,i) st_hash_uint((h), (i))
6094 #define rb_hash_end(h) st_hash_end(h)
6095 st_index_t rb_str_hash(VALUE);
6096 int rb_str_hash_cmp(VALUE,VALUE);
6097 int rb_str_comparable(VALUE, VALUE);
6098 int rb_str_cmp(VALUE, VALUE);
6099 VALUE rb_str_equal(VALUE str1, VALUE str2);
6100 VALUE rb_str_drop_bytes(VALUE, long);
6101 void rb_str_update(VALUE, long, long, VALUE);
6102 VALUE rb_str_replace(VALUE, VALUE);
6103 VALUE rb_str_inspect(VALUE);
6104 VALUE rb_str_dump(VALUE);
6105 VALUE rb_str_split(VALUE, const char*);
6106 rb_gvar_setter_t rb_str_setter;
6107 VALUE rb_str_intern(VALUE);
6108 VALUE rb_sym_to_s(VALUE);
6109 long rb_str_strlen(VALUE);
6110 VALUE rb_str_length(VALUE);
6111 long rb_str_offset(VALUE, long);
6112 __attribute__ ((__pure__)) size_t rb_str_capacity(VALUE);
6113 VALUE rb_str_ellipsize(VALUE, long);
6114 VALUE rb_str_scrub(VALUE, VALUE);
6115 VALUE rb_sym_all_symbols(void);
6116 #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)) )
6117 #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) )
6118 #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)) )
6119 #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)) )
6120 #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) )
6121 #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) )
6122 #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) )
6123 #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) )
6124 #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) )
6125 #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) )
6126 #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)) )
6127 #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)) )
6128 #define rb_str_new2 rb_str_new_cstr
6129 #define rb_str_new3 rb_str_new_shared
6130 #define rb_str_new4 rb_str_new_frozen
6131 #define rb_str_new5 rb_str_new_with_class
6132 #define rb_tainted_str_new2 rb_tainted_str_new_cstr
6133 #define rb_str_buf_new2 rb_str_buf_new_cstr
6134 #define rb_usascii_str_new2 rb_usascii_str_new_cstr
6135 #define rb_str_buf_cat rb_str_cat
6136 #define rb_str_buf_cat2 rb_str_cat_cstr
6137 #define rb_str_cat2 rb_str_cat_cstr
6138 #define rb_strlen_lit(str) (sizeof(str "") - 1)
6139 #define rb_str_new_lit(str) rb_str_new_static((str), rb_strlen_lit(str))
6140 #define rb_usascii_str_new_lit(str) rb_usascii_str_new_static((str), rb_strlen_lit(str))
6141 #define rb_utf8_str_new_lit(str) rb_utf8_str_new_static((str), rb_strlen_lit(str))
6142 #define rb_enc_str_new_lit(str,enc) rb_enc_str_new_static((str), rb_strlen_lit(str), (enc))
6143 #define rb_str_new_literal(str) rb_str_new_lit(str)
6144 #define rb_usascii_str_new_literal(str) rb_usascii_str_new_lit(str)
6145 #define rb_utf8_str_new_literal(str) rb_utf8_str_new_lit(str)
6146 #define rb_enc_str_new_literal(str,enc) rb_enc_str_new_lit(str, enc)
6147 VALUE rb_struct_new(VALUE, ...);
6148 VALUE rb_struct_define(const char*, ...);
6149 VALUE rb_struct_define_under(VALUE, const char*, ...);
6150 VALUE rb_struct_alloc(VALUE, VALUE);
6151 VALUE rb_struct_initialize(VALUE, VALUE);
6152 VALUE rb_struct_aref(VALUE, VALUE);
6153 VALUE rb_struct_aset(VALUE, VALUE, VALUE);
6154 VALUE rb_struct_getmember(VALUE, ID);
6155 VALUE rb_struct_s_members(VALUE);
6156 VALUE rb_struct_members(VALUE);
6157 VALUE rb_struct_size(VALUE s);
6158 VALUE rb_struct_alloc_noinit(VALUE);
6159 VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t, ...);
6160 VALUE rb_struct_define_without_accessor_under(VALUE outer, const char *class_name, VALUE super, rb_alloc_func_t alloc, ...);
6161 typedef void rb_unblock_function_t(void *);
6162 typedef VALUE rb_blocking_function_t(void *);
6163 void rb_thread_check_ints(void);
6164 int rb_thread_interrupted(VALUE thval);
6165 #define RUBY_UBF_IO ((rb_unblock_function_t *)-1)
6166 #define RUBY_UBF_PROCESS ((rb_unblock_function_t *)-1)
6167 VALUE rb_mutex_new(void);
6168 VALUE rb_mutex_locked_p(VALUE mutex);
6169 VALUE rb_mutex_trylock(VALUE mutex);
6170 VALUE rb_mutex_lock(VALUE mutex);
6171 VALUE rb_mutex_unlock(VALUE mutex);
6172 VALUE rb_mutex_sleep(VALUE self, VALUE timeout);
6173 VALUE rb_mutex_synchronize(VALUE mutex, VALUE (*func)(VALUE arg), VALUE arg);
6174 struct timespec;
6175 void rb_timespec_now(struct timespec *);
6176 VALUE rb_time_new(time_t, long);
6177 VALUE rb_time_nano_new(time_t, long);
6178 VALUE rb_time_timespec_new(const struct timespec *, int);
6179 VALUE rb_time_num_new(VALUE, VALUE);
6180 struct timeval rb_time_interval(VALUE num);
6181 struct timeval rb_time_timeval(VALUE time);
6182 struct timespec rb_time_timespec(VALUE time);
6183 struct timespec rb_time_timespec_interval(VALUE num);
6184 VALUE rb_time_utc_offset(VALUE time);
6185 VALUE rb_mod_name(VALUE);
6186 VALUE rb_class_path(VALUE);
6187 VALUE rb_class_path_cached(VALUE);
6188 void rb_set_class_path(VALUE, VALUE, const char*);
6189 void rb_set_class_path_string(VALUE, VALUE, VALUE);
6190 VALUE rb_path_to_class(VALUE);
6191 VALUE rb_path2class(const char*);
6192 VALUE rb_class_name(VALUE);
6193 VALUE rb_autoload_load(VALUE, ID);
6194 VALUE rb_autoload_p(VALUE, ID);
6195 VALUE rb_f_trace_var(int, const VALUE*);
6196 VALUE rb_f_untrace_var(int, const VALUE*);
6197 VALUE rb_f_global_variables(void);
6198 void rb_alias_variable(ID, ID);
6199 void rb_copy_generic_ivar(VALUE,VALUE);
6200 void rb_free_generic_ivar(VALUE);
6201 VALUE rb_ivar_get(VALUE, ID);
6202 VALUE rb_ivar_set(VALUE, ID, VALUE);
6203 VALUE rb_ivar_defined(VALUE, ID);
6204 void rb_ivar_foreach(VALUE, int (*)(ID, VALUE, st_data_t), st_data_t);
6205 st_index_t rb_ivar_count(VALUE);
6206 VALUE rb_attr_get(VALUE, ID);
6207 VALUE rb_obj_instance_variables(VALUE);
6208 VALUE rb_obj_remove_instance_variable(VALUE, VALUE);
6209 void *rb_mod_const_at(VALUE, void*);
6210 void *rb_mod_const_of(VALUE, void*);
6211 VALUE rb_const_list(void*);
6212 VALUE rb_mod_constants(int, const VALUE *, VALUE);
6213 VALUE rb_mod_remove_const(VALUE, VALUE);
6214 int rb_const_defined(VALUE, ID);
6215 int rb_const_defined_at(VALUE, ID);
6216 int rb_const_defined_from(VALUE, ID);
6217 VALUE rb_const_get(VALUE, ID);
6218 VALUE rb_const_get_at(VALUE, ID);
6219 VALUE rb_const_get_from(VALUE, ID);
6220 void rb_const_set(VALUE, ID, VALUE);
6221 VALUE rb_const_remove(VALUE, ID);
6222 VALUE rb_cvar_defined(VALUE, ID);
6223 void rb_cvar_set(VALUE, ID, VALUE);
6224 VALUE rb_cvar_get(VALUE, ID);
6225 void rb_cv_set(VALUE, const char*, VALUE);
6226 VALUE rb_cv_get(VALUE, const char*);
6227 void rb_define_class_variable(VALUE, const char*, VALUE);
6228 VALUE rb_mod_class_variables(int, const VALUE*, VALUE);
6229 VALUE rb_mod_remove_cvar(VALUE, VALUE);
6230 ID rb_frame_callee(void);
6231 int rb_frame_method_id_and_class(ID *idp, VALUE *klassp);
6232 VALUE rb_str_succ(VALUE);
6233 VALUE rb_time_succ(VALUE);
6234 VALUE rb_make_backtrace(void);
6235 VALUE rb_make_exception(int, const VALUE*);
6236
6237 #pragma GCC visibility pop
6238
6239 #define rb_f_notimplement_p(f) __builtin_types_compatible_p(__typeof__(f),__typeof__(rb_f_notimplement))
6240 static inline void
6241 rb_clone_setup(VALUE clone, VALUE obj)
6242 {
6243 rb_obj_setup(clone, rb_singleton_class_clone(obj),
6244 ((struct RBasic*)(obj))->flags & ~(((VALUE)RUBY_FL_PROMOTED0)|((VALUE)RUBY_FL_PROMOTED1)|((VALUE)RUBY_FL_FINALIZE)));
6245 rb_singleton_class_attached((((struct RBasic*)(clone))->klass), clone);
6246 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);
6247 }
6248 static inline void
6249 rb_dup_setup(VALUE dup, VALUE obj)
6250 {
6251 rb_obj_setup(dup, rb_obj_class(obj), (((struct RBasic*)(obj))->flags&(RUBY_FL_DUPPED)));
6252 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);
6253 }
6254 static inline long
6255 rb_array_len(VALUE a)
6256 {
6257 return (((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ?
6258 (long)((((struct RBasic*)(a))->flags >> RARRAY_EMBED_LEN_SHIFT) & ((VALUE)RARRAY_EMBED_LEN_MASK >> RARRAY_EMBED_LEN_SHIFT)) : ((struct RArray*)(a))->as.heap.len;
6259 }
6260 #define FIX_CONST_VALUE_PTR(x) (x)
6261 static inline const VALUE *
6262 rb_array_const_ptr_transient(VALUE a)
6263 {
6264 return ((((struct RBasic*)(a))->flags & (VALUE)RARRAY_EMBED_FLAG) ? ((struct RArray*)(a))->as.ary : ((struct RArray*)(a))->as.heap.ptr);
6265 }
6266 static inline const VALUE *
6267 rb_array_const_ptr(VALUE a)
6268 {
6269 void rb_ary_detransient(VALUE a);
6270 if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
6271 rb_ary_detransient(a);
6272 }
6273 return rb_array_const_ptr_transient(a);
6274 }
6275 static inline VALUE *
6276 rb_array_ptr_use_start(VALUE a, int allow_transient)
6277 {
6278 VALUE *rb_ary_ptr_use_start(VALUE ary);
6279 if (!allow_transient) {
6280 if ((((struct RBasic*)((a)))->flags&(RARRAY_TRANSIENT_FLAG))) {
6281 void rb_ary_detransient(VALUE a);
6282 rb_ary_detransient(a);
6283 }
6284 }
6285 (void)allow_transient;
6286 return rb_ary_ptr_use_start(a);
6287 }
6288 static inline void
6289 rb_array_ptr_use_end(VALUE a, int allow_transient)
6290 {
6291 void rb_ary_ptr_use_end(VALUE a);
6292 rb_ary_ptr_use_end(a);
6293 (void)allow_transient;
6294 }
6295 #define RUBY_VM 1
6296 #define HAVE_NATIVETHREAD
6297 int ruby_native_thread_p(void);
6298 #define RUBY_EVENT_NONE 0x0000
6299 #define RUBY_EVENT_LINE 0x0001
6300 #define RUBY_EVENT_CLASS 0x0002
6301 #define RUBY_EVENT_END 0x0004
6302 #define RUBY_EVENT_CALL 0x0008
6303 #define RUBY_EVENT_RETURN 0x0010
6304 #define RUBY_EVENT_C_CALL 0x0020
6305 #define RUBY_EVENT_C_RETURN 0x0040
6306 #define RUBY_EVENT_RAISE 0x0080
6307 #define RUBY_EVENT_ALL 0x00ff
6308 #define RUBY_EVENT_B_CALL 0x0100
6309 #define RUBY_EVENT_B_RETURN 0x0200
6310 #define RUBY_EVENT_THREAD_BEGIN 0x0400
6311 #define RUBY_EVENT_THREAD_END 0x0800
6312 #define RUBY_EVENT_FIBER_SWITCH 0x1000
6313 #define RUBY_EVENT_SCRIPT_COMPILED 0x2000
6314 #define RUBY_EVENT_TRACEPOINT_ALL 0xffff
6315 #define RUBY_EVENT_RESERVED_FOR_INTERNAL_USE 0x030000
6316 #define RUBY_INTERNAL_EVENT_SWITCH 0x040000
6317 #define RUBY_EVENT_SWITCH 0x040000
6318 #define RUBY_INTERNAL_EVENT_NEWOBJ 0x100000
6319 #define RUBY_INTERNAL_EVENT_FREEOBJ 0x200000
6320 #define RUBY_INTERNAL_EVENT_GC_START 0x400000
6321 #define RUBY_INTERNAL_EVENT_GC_END_MARK 0x800000
6322 #define RUBY_INTERNAL_EVENT_GC_END_SWEEP 0x1000000
6323 #define RUBY_INTERNAL_EVENT_GC_ENTER 0x2000000
6324 #define RUBY_INTERNAL_EVENT_GC_EXIT 0x4000000
6325 #define RUBY_INTERNAL_EVENT_OBJSPACE_MASK 0x7f00000
6326 #define RUBY_INTERNAL_EVENT_MASK 0xffff0000
6327 typedef uint32_t rb_event_flag_t;
6328 typedef void (*rb_event_hook_func_t)(rb_event_flag_t evflag, VALUE data, VALUE self, ID mid, VALUE klass);
6329 #define RB_EVENT_HOOKS_HAVE_CALLBACK_DATA 1
6330 void rb_add_event_hook(rb_event_hook_func_t func, rb_event_flag_t events, VALUE data);
6331 int rb_remove_event_hook(rb_event_hook_func_t func);
6332 static inline int rb_isascii(int c){ return '\0' <= c && c <= '\x7f'; }
6333 static inline int rb_isupper(int c){ return 'A' <= c && c <= 'Z'; }
6334 static inline int rb_islower(int c){ return 'a' <= c && c <= 'z'; }
6335 static inline int rb_isalpha(int c){ return rb_isupper(c) || rb_islower(c); }
6336 static inline int rb_isdigit(int c){ return '0' <= c && c <= '9'; }
6337 static inline int rb_isalnum(int c){ return rb_isalpha(c) || rb_isdigit(c); }
6338 static inline int rb_isxdigit(int c){ return rb_isdigit(c) || ('A' <= c && c <= 'F') || ('a' <= c && c <= 'f'); }
6339 static inline int rb_isblank(int c){ return c == ' ' || c == '\t'; }
6340 static inline int rb_isspace(int c){ return c == ' ' || ('\t' <= c && c <= '\r'); }
6341 static inline int rb_iscntrl(int c){ return ('\0' <= c && c < ' ') || c == '\x7f'; }
6342 static inline int rb_isprint(int c){ return ' ' <= c && c <= '\x7e'; }
6343 static inline int rb_ispunct(int c){ return !rb_isalnum(c); }
6344 static inline int rb_isgraph(int c){ return '!' <= c && c <= '\x7e'; }
6345 static inline int rb_tolower(int c) { return rb_isupper(c) ? (c|0x20) : c; }
6346 static inline int rb_toupper(int c) { return rb_islower(c) ? (c&0x5f) : c; }
6347 #define ISASCII(c) rb_isascii(c)
6348 #define ISPRINT(c) rb_isprint(c)
6349 #define ISGRAPH(c) rb_isgraph(c)
6350 #define ISSPACE(c) rb_isspace(c)
6351 #define ISUPPER(c) rb_isupper(c)
6352 #define ISLOWER(c) rb_islower(c)
6353 #define ISALNUM(c) rb_isalnum(c)
6354 #define ISALPHA(c) rb_isalpha(c)
6355 #define ISDIGIT(c) rb_isdigit(c)
6356 #define ISXDIGIT(c) rb_isxdigit(c)
6357 #define ISBLANK(c) rb_isblank(c)
6358 #define ISCNTRL(c) rb_iscntrl(c)
6359 #define ISPUNCT(c) rb_ispunct(c)
6360 #define TOUPPER(c) rb_toupper(c)
6361 #define TOLOWER(c) rb_tolower(c)
6362 int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2);
6363 int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n);
6364 #define STRCASECMP(s1,s2) (st_locale_insensitive_strcasecmp((s1), (s2)))
6365 #define STRNCASECMP(s1,s2,n) (st_locale_insensitive_strncasecmp((s1), (s2), (n)))
6366 unsigned long ruby_strtoul(const char *str, char **endptr, int base);
6367 #define STRTOUL(str,endptr,base) (ruby_strtoul((str), (endptr), (base)))
6368 #define InitVM(ext) {void InitVM_ ##ext(void);InitVM_ ##ext();}
6369 int ruby_snprintf(char *str, size_t n, char const *fmt, ...) __attribute__((format(printf, 3, 4)));
6370 int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap);
6371 int rb_empty_keyword_given_p(void);
6372 #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__))
6373 __attribute__ ((__error__ ("bad scan arg format"))) void rb_scan_args_bad_format(const char*);
6374 __attribute__ ((__error__ ("variable argument length doesn't match"))) void rb_scan_args_length_mismatch(const char*,int);
6375 #define rb_scan_args_isdigit(c) ((unsigned char)((c)-'0')<10)
6376 #define rb_scan_args_count_end(fmt,ofs,vari) (fmt[ofs] ? -1 : (vari))
6377 #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))
6378 #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))
6379 #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')))
6380 #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))
6381 #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'))
6382 #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'))
6383 #define rb_scan_args_count(fmt) rb_scan_args_count_lead(fmt, 0, 0)
6384 #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)
6385 __attribute__ ((__always_inline__)) static int rb_scan_args_lead_p(const char *fmt);
6386 static inline int
6387 rb_scan_args_lead_p(const char *fmt)
6388 {
6389 return ((unsigned char)((fmt[0])-'0')<10);
6390 }
6391 __attribute__ ((__always_inline__)) static int rb_scan_args_n_lead(const char *fmt);
6392 static inline int
6393 rb_scan_args_n_lead(const char *fmt)
6394 {
6395 return (rb_scan_args_lead_p(fmt) ? fmt[0]-'0' : 0);
6396 }
6397 __attribute__ ((__always_inline__)) static int rb_scan_args_opt_p(const char *fmt);
6398 static inline int
6399 rb_scan_args_opt_p(const char *fmt)
6400 {
6401 return (rb_scan_args_lead_p(fmt) && ((unsigned char)((fmt[1])-'0')<10));
6402 }
6403 __attribute__ ((__always_inline__)) static int rb_scan_args_n_opt(const char *fmt);
6404 static inline int
6405 rb_scan_args_n_opt(const char *fmt)
6406 {
6407 return (rb_scan_args_opt_p(fmt) ? fmt[1]-'0' : 0);
6408 }
6409 __attribute__ ((__always_inline__)) static int rb_scan_args_var_idx(const char *fmt);
6410 static inline int
6411 rb_scan_args_var_idx(const char *fmt)
6412 {
6413 return (!rb_scan_args_lead_p(fmt) ? 0 : !((unsigned char)((fmt[1])-'0')<10) ? 1 : 2);
6414 }
6415 __attribute__ ((__always_inline__)) static int rb_scan_args_f_var(const char *fmt);
6416 static inline int
6417 rb_scan_args_f_var(const char *fmt)
6418 {
6419 return (fmt[rb_scan_args_var_idx(fmt)]=='*');
6420 }
6421 __attribute__ ((__always_inline__)) static int rb_scan_args_trail_idx(const char *fmt);
6422 static inline int
6423 rb_scan_args_trail_idx(const char *fmt)
6424 {
6425 const int idx = rb_scan_args_var_idx(fmt);
6426 return idx+(fmt[idx]=='*');
6427 }
6428 __attribute__ ((__always_inline__)) static int rb_scan_args_n_trail(const char *fmt);
6429 static inline int
6430 rb_scan_args_n_trail(const char *fmt)
6431 {
6432 const int idx = rb_scan_args_trail_idx(fmt);
6433 return (((unsigned char)((fmt[idx])-'0')<10) ? fmt[idx]-'0' : 0);
6434 }
6435 __attribute__ ((__always_inline__)) static int rb_scan_args_hash_idx(const char *fmt);
6436 static inline int
6437 rb_scan_args_hash_idx(const char *fmt)
6438 {
6439 const int idx = rb_scan_args_trail_idx(fmt);
6440 return idx+((unsigned char)((fmt[idx])-'0')<10);
6441 }
6442 __attribute__ ((__always_inline__)) static int rb_scan_args_f_hash(const char *fmt);
6443 static inline int
6444 rb_scan_args_f_hash(const char *fmt)
6445 {
6446 return (fmt[rb_scan_args_hash_idx(fmt)]==':');
6447 }
6448 __attribute__ ((__always_inline__)) static int rb_scan_args_block_idx(const char *fmt);
6449 static inline int
6450 rb_scan_args_block_idx(const char *fmt)
6451 {
6452 const int idx = rb_scan_args_hash_idx(fmt);
6453 return idx+(fmt[idx]==':');
6454 }
6455 __attribute__ ((__always_inline__)) static int rb_scan_args_f_block(const char *fmt);
6456 static inline int
6457 rb_scan_args_f_block(const char *fmt)
6458 {
6459 return (fmt[rb_scan_args_block_idx(fmt)]=='&');
6460 }
6461 #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)
6462 __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);
6463 inline int
6464 rb_scan_args_set(int argc, const VALUE *argv,
6465 int n_lead, int n_opt, int n_trail,
6466 int f_var, int f_hash, int f_block,
6467 VALUE *vars[], char *fmt __attribute__ ((unused)), int varc __attribute__ ((unused)))
6468 {
6469 int i, argi = 0, vari = 0, last_idx = -1;
6470 VALUE *var, hash = ((VALUE)RUBY_Qnil), last_hash = 0;
6471 const int n_mand = n_lead + n_trail;
6472 int keyword_given = rb_keyword_given_p();
6473 int empty_keyword_given = 0;
6474 VALUE tmp_buffer = 0;
6475 if (!keyword_given) {
6476 empty_keyword_given = rb_empty_keyword_given_p();
6477 }
6478 if (argc > 0 && !(f_hash && empty_keyword_given)) {
6479 VALUE last = argv[argc - 1];
6480 if (f_hash && n_mand < argc) {
6481 if (keyword_given) {
6482 if (!( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(last))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(last))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
6483 rb_warn("Keyword flag set when calling rb_scan_args, but last entry is not a hash");
6484 }
6485 else {
6486 hash = last;
6487 }
6488 }
6489 else if (!((VALUE)(last) != ((VALUE)RUBY_Qnil))) {
6490 if (!f_var && n_mand + n_opt < argc) {
6491 rb_warn("The last argument is nil, treating as empty keywords");
6492 argc--;
6493 }
6494 }
6495 else {
6496 hash = rb_check_hash_type(last);
6497 }
6498 if (!!((VALUE)(hash) != ((VALUE)RUBY_Qnil))) {
6499 VALUE opts = rb_extract_keywords(&hash);
6500 if (!(last_hash = hash)) {
6501 if (!keyword_given) {
6502 rb_warn("Using the last argument as keyword parameters is deprecated");
6503 }
6504 argc--;
6505 }
6506 else {
6507 rb_warn("The last argument is split into positional and keyword parameters");
6508 last_idx = argc - 1;
6509 }
6510 hash = opts ? opts : ((VALUE)RUBY_Qnil);
6511 }
6512 }
6513 else if (f_hash && keyword_given && n_mand == argc) {
6514 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
6515 }
6516 }
6517 if (f_hash && n_mand > 0 && n_mand == argc+1 && empty_keyword_given) {
6518 VALUE *ptr = (VALUE *)rb_alloc_tmp_buffer2(&tmp_buffer, argc+1, sizeof(VALUE));
6519 ((__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));
6520 ptr[argc] = rb_hash_new();
6521 argc++;
6522 *(&argv) = ptr;
6523 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
6524 }
6525 if (argc < n_mand) {
6526 goto argc_error;
6527 }
6528 for (i = n_lead; i-- > 0; ) {
6529 var = vars[vari++];
6530 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6531 argi++;
6532 }
6533 for (i = n_opt; i-- > 0; ) {
6534 var = vars[vari++];
6535 if (argi < argc - n_trail) {
6536 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6537 argi++;
6538 }
6539 else {
6540 if (var) *var = ((VALUE)RUBY_Qnil);
6541 }
6542 }
6543 if (f_var) {
6544 int n_var = argc - argi - n_trail;
6545 var = vars[vari++];
6546 if (0 < n_var) {
6547 if (var) {
6548 int f_last = (last_idx + 1 == argc - n_trail);
6549 *var = rb_ary_new_from_values(n_var-f_last, &argv[argi]);
6550 if (f_last) rb_ary_push(*var, last_hash);
6551 }
6552 argi += n_var;
6553 }
6554 else {
6555 if (var) *var = rb_ary_new();
6556 }
6557 }
6558 for (i = n_trail; i-- > 0; ) {
6559 var = vars[vari++];
6560 if (var) *var = (argi == last_idx) ? last_hash : argv[argi];
6561 argi++;
6562 }
6563 if (f_hash) {
6564 var = vars[vari++];
6565 if (var) *var = hash;
6566 }
6567 if (f_block) {
6568 var = vars[vari++];
6569 if (rb_block_given_p()) {
6570 *var = rb_block_proc();
6571 }
6572 else {
6573 *var = ((VALUE)RUBY_Qnil);
6574 }
6575 }
6576 if (argi < argc) {
6577 argc_error:
6578 if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
6579 rb_error_arity(argc, n_mand, f_var ? (-1) : n_mand + n_opt);
6580 }
6581 if (tmp_buffer) rb_free_tmp_buffer(&tmp_buffer);
6582 return argc;
6583 }
6584 #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); })
6585 #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); })
6586 #define RUBY_SUBST_H 1
6587 #undef snprintf
6588 #undef vsnprintf
6589 #define snprintf ruby_snprintf
6590 #define vsnprintf ruby_vsnprintf
6591 void ruby_sysinit(int *argc, char ***argv);
6592 void ruby_init(void);
6593 void* ruby_options(int argc, char** argv);
6594 int ruby_executable_node(void *n, int *status);
6595 int ruby_run_node(void *n);
6596 void ruby_show_version(void);
6597 void ruby_show_copyright(void);
6598 #define RUBY_INIT_STACK VALUE variable_in_this_stack_frame; ruby_init_stack(&variable_in_this_stack_frame);
6599 void ruby_init_stack(volatile VALUE*);
6600 int ruby_setup(void);
6601 int ruby_cleanup(volatile int);
6602 void ruby_finalize(void);
6603 __attribute__ ((__noreturn__)) void ruby_stop(int);
6604 void ruby_set_stack_size(size_t);
6605 int ruby_stack_check(void);
6606 size_t ruby_stack_length(VALUE**);
6607 int ruby_exec_node(void *n);
6608 void ruby_script(const char* name);
6609 void ruby_set_script_name(VALUE name);
6610 void ruby_prog_init(void);
6611 void ruby_set_argv(int, char**);
6612 void *ruby_process_options(int, char**);
6613 void ruby_init_loadpath(void);
6614 void ruby_incpush(const char*);
6615 void ruby_sig_finalize(void);
6616
6617 #pragma GCC visibility pop
6618
6619 #define RUBY_METHOD_FUNC(func) ((VALUE (*)(ANYARGS))(func))
6620 #define _STDBOOL_H
6621 #define bool _Bool
6622 #define true 1
6623 #define false 0
6624 #define __bool_true_false_are_defined 1
6625 #define HALF_LONG_MSB ((SIGNED_VALUE)1<<((SIZEOF_LONG*CHAR_BIT-1)/2))
6626 #define LIKELY(x) RB_LIKELY(x)
6627 #define UNLIKELY(x) RB_UNLIKELY(x)
6628 #define ATTRIBUTE_NO_ADDRESS_SAFETY_ANALYSIS(x) NO_SANITIZE("address", NOINLINE(x))
6629 #undef NO_SANITIZE
6630 #define NO_SANITIZE(x,y) COMPILER_WARNING_PUSH; COMPILER_WARNING_IGNORED(-Wattributes); __attribute__((__no_sanitize__(x))) y; COMPILER_WARNING_POP
6631 #define VALGRIND_MAKE_MEM_DEFINED(p,n) 0
6632 #define VALGRIND_MAKE_MEM_UNDEFINED(p,n) 0
6633 #define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
6634 #define ACCESS_ONCE(type,x) (*((volatile type *)&(x)))
6635 #define STATIC_ASSERT(name,expr) _Static_assert(expr, #name ": " #expr)
6636 #define SIGNED_INTEGER_TYPE_P(int_type) (0 > ((int_type)0)-1)
6637 #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))
6638 #define SIGNED_INTEGER_MIN(sint_type) (-SIGNED_INTEGER_MAX(sint_type)-1)
6639 #define UNSIGNED_INTEGER_MAX(uint_type) (~(uint_type)0)
6640 #define TIMET_MAX SIGNED_INTEGER_MAX(time_t)
6641 #define TIMET_MIN SIGNED_INTEGER_MIN(time_t)
6642 #define TIMET_MAX_PLUS_ONE (2*(double)(TIMET_MAX/2+1))
6643 #define MUL_OVERFLOW_P(a,b) __builtin_mul_overflow_p((a), (b), (__typeof__(a * b))0)
6644 #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)))
6645 #define MUL_OVERFLOW_FIXNUM_P(a,b) RB_GNUC_EXTENSION_BLOCK( struct { long fixnum : SIZEOF_LONG * CHAR_BIT - 1; } c; __builtin_mul_overflow_p((a), (b), c.fixnum); )
6646 #define MUL_OVERFLOW_LONG_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6647 #define MUL_OVERFLOW_LONG_P(a,b) MUL_OVERFLOW_P(a, b)
6648 #define MUL_OVERFLOW_INT_P(a,b) MUL_OVERFLOW_P(a, b)
6649 #define swap16(x) __builtin_bswap16(x)
6650 #define swap32(x) __builtin_bswap32(x)
6651 #define swap64(x) __builtin_bswap64(x)
6652 static inline unsigned int
6653 nlz_int(unsigned int x)
6654 {
6655 if (x == 0) return 4 * 8;
6656 return (unsigned int)__builtin_clz(x);
6657 }
6658 static inline unsigned int
6659 nlz_long(unsigned long x)
6660 {
6661 if (x == 0) return 8 * 8;
6662 return (unsigned int)__builtin_clzl(x);
6663 }
6664 static inline unsigned int
6665 nlz_long_long(unsigned long long x)
6666 {
6667 if (x == 0) return 8 * 8;
6668 return (unsigned int)__builtin_clzll(x);
6669 }
6670 static inline unsigned int
6671 nlz_int128(unsigned __int128 x)
6672 {
6673 unsigned __int128 y;
6674 unsigned int n = 128;
6675 y = x >> 64; if (y) {n -= 64; x = y;}
6676 y = x >> 32; if (y) {n -= 32; x = y;}
6677 y = x >> 16; if (y) {n -= 16; x = y;}
6678 y = x >> 8; if (y) {n -= 8; x = y;}
6679 y = x >> 4; if (y) {n -= 4; x = y;}
6680 y = x >> 2; if (y) {n -= 2; x = y;}
6681 y = x >> 1; if (y) {return n - 2;}
6682 return (unsigned int)(n - x);
6683 }
6684 static inline unsigned int
6685 nlz_intptr(uintptr_t x)
6686 {
6687 return nlz_long(x);
6688 }
6689 static inline unsigned int
6690 rb_popcount32(uint32_t x)
6691 {
6692 return (unsigned int)__builtin_popcount(x);
6693 }
6694 static inline int
6695 rb_popcount64(uint64_t x)
6696 {
6697 return __builtin_popcountll(x);
6698 }
6699 static inline int
6700 rb_popcount_intptr(uintptr_t x)
6701 {
6702 return rb_popcount64(x);
6703 }
6704 static inline int
6705 ntz_int32(uint32_t x)
6706 {
6707 return __builtin_ctz(x);
6708 }
6709 static inline int
6710 ntz_int64(uint64_t x)
6711 {
6712 return __builtin_ctzll(x);
6713 }
6714 static inline int
6715 ntz_intptr(uintptr_t x)
6716 {
6717 return ntz_int64(x);
6718 }
6719 #define DLONG int128_t
6720 #define DL2NUM(x) (RB_FIXABLE(x) ? LONG2FIX(x) : rb_int128t2big(x))
6721 VALUE rb_int128t2big(__int128 n);
6722 static inline long
6723 rb_overflowed_fix_to_int(long x)
6724 {
6725 return (long)((unsigned long)(x >> 1) ^ (1LU << (8 * 8 - 1)));
6726 }
6727 static inline VALUE
6728 rb_fix_plus_fix(VALUE x, VALUE y)
6729 {
6730 long lz;
6731 if (__builtin_add_overflow((long)x, (long)y-1, &lz)) {
6732 return rb_int2big(rb_overflowed_fix_to_int(lz));
6733 }
6734 else {
6735 return (VALUE)lz;
6736 }
6737 }
6738 static inline VALUE
6739 rb_fix_minus_fix(VALUE x, VALUE y)
6740 {
6741 long lz;
6742 if (__builtin_sub_overflow((long)x, (long)y-1, &lz)) {
6743 return rb_int2big(rb_overflowed_fix_to_int(lz));
6744 }
6745 else {
6746 return (VALUE)lz;
6747 }
6748 }
6749 static inline VALUE
6750 rb_fix_mul_fix(VALUE x, VALUE y)
6751 {
6752 long lx = ((long)(((long)(x))>>(int)(1)));
6753 long ly = ((long)(((long)(y))>>(int)(1)));
6754 return (((((__int128)lx * (__int128)ly) < (0x7fffffffffffffffL>>1)+1) && (((__int128)lx * (__int128)ly) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))) ? (((VALUE)((__int128)lx * (__int128)ly))<<1 | RUBY_FIXNUM_FLAG) : rb_int128t2big((__int128)lx * (__int128)ly));
6755 }
6756 static inline void
6757 rb_fix_divmod_fix(VALUE a, VALUE b, VALUE *divp, VALUE *modp)
6758 {
6759 long x = ((long)(((long)(a))>>(int)(1)));
6760 long y = ((long)(((long)(b))>>(int)(1)));
6761 long div, mod;
6762 if (x == (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)) && y == -1) {
6763 if (divp) *divp = rb_long2num_inline(-(((long)(-0x7fffffffffffffffL -1L))>>(int)(1)));
6764 if (modp) *modp = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
6765 return;
6766 }
6767 div = x / y;
6768 mod = x % y;
6769 if (y > 0 ? mod < 0 : mod > 0) {
6770 mod += y;
6771 div -= 1;
6772 }
6773 if (divp) *divp = (((VALUE)(div))<<1 | RUBY_FIXNUM_FLAG);
6774 if (modp) *modp = (((VALUE)(mod))<<1 | RUBY_FIXNUM_FLAG);
6775 }
6776 static inline VALUE
6777 rb_fix_div_fix(VALUE x, VALUE y)
6778 {
6779 VALUE div;
6780 rb_fix_divmod_fix(x, y, &div, ((void *)0));
6781 return div;
6782 }
6783 static inline VALUE
6784 rb_fix_mod_fix(VALUE x, VALUE y)
6785 {
6786 VALUE mod;
6787 rb_fix_divmod_fix(x, y, ((void *)0), &mod);
6788 return mod;
6789 }
6790 #define bit_length(x) (unsigned int) (sizeof(x) <= SIZEOF_INT ? SIZEOF_INT * CHAR_BIT - nlz_int((unsigned int)(x)) : sizeof(x) <= SIZEOF_LONG ? SIZEOF_LONG * CHAR_BIT - nlz_long((unsigned long)(x)) : sizeof(x) <= SIZEOF_LONG_LONG ? SIZEOF_LONG_LONG * CHAR_BIT - nlz_long_long((unsigned LONG_LONG)(x)) : SIZEOF_INT128_T * CHAR_BIT - nlz_int128((uint128_t)(x)))
6791 #define BDIGIT unsigned int
6792 #define SIZEOF_BDIGIT SIZEOF_INT
6793 #define BDIGIT_DBL unsigned LONG_LONG
6794 #define BDIGIT_DBL_SIGNED LONG_LONG
6795 #define PRI_BDIGIT_PREFIX ""
6796 #define PRI_BDIGIT_DBL_PREFIX PRI_LL_PREFIX
6797 #define SIZEOF_ACTUAL_BDIGIT SIZEOF_BDIGIT
6798 #define PRIdBDIGIT PRI_BDIGIT_PREFIX"d"
6799 #define PRIiBDIGIT PRI_BDIGIT_PREFIX"i"
6800 #define PRIoBDIGIT PRI_BDIGIT_PREFIX"o"
6801 #define PRIuBDIGIT PRI_BDIGIT_PREFIX"u"
6802 #define PRIxBDIGIT PRI_BDIGIT_PREFIX"x"
6803 #define PRIXBDIGIT PRI_BDIGIT_PREFIX"X"
6804 #define PRIdBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"d"
6805 #define PRIiBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"i"
6806 #define PRIoBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"o"
6807 #define PRIuBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"u"
6808 #define PRIxBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"x"
6809 #define PRIXBDIGIT_DBL PRI_BDIGIT_DBL_PREFIX"X"
6810 #define BIGNUM_EMBED_LEN_NUMBITS 3
6811 #define BIGNUM_EMBED_LEN_MAX (SIZEOF_VALUE*RVALUE_EMBED_LEN_MAX/SIZEOF_ACTUAL_BDIGIT)
6812 struct RBignum {
6813 struct RBasic basic;
6814 union {
6815 struct {
6816 size_t len;
6817 unsigned int *digits;
6818 } heap;
6819 unsigned int ary[(8*RVALUE_EMBED_LEN_MAX/4)];
6820 } as;
6821 };
6822 #define BIGNUM_SIGN_BIT ((VALUE)FL_USER1)
6823 #define BIGNUM_SIGN(b) ((RBASIC(b)->flags & BIGNUM_SIGN_BIT) != 0)
6824 #define BIGNUM_SET_SIGN(b,sign) ((sign) ? (RBASIC(b)->flags |= BIGNUM_SIGN_BIT) : (RBASIC(b)->flags &= ~BIGNUM_SIGN_BIT))
6825 #define BIGNUM_POSITIVE_P(b) BIGNUM_SIGN(b)
6826 #define BIGNUM_NEGATIVE_P(b) (!BIGNUM_SIGN(b))
6827 #define BIGNUM_NEGATE(b) (RBASIC(b)->flags ^= BIGNUM_SIGN_BIT)
6828 #define BIGNUM_EMBED_FLAG ((VALUE)FL_USER2)
6829 #define BIGNUM_EMBED_LEN_MASK (~(~(VALUE)0U << BIGNUM_EMBED_LEN_NUMBITS) << BIGNUM_EMBED_LEN_SHIFT)
6830 #define BIGNUM_EMBED_LEN_SHIFT (FL_USHIFT+3)
6831 #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)
6832 #define BIGNUM_DIGITS(b) ((RBASIC(b)->flags & BIGNUM_EMBED_FLAG) ? RBIGNUM(b)->as.ary : RBIGNUM(b)->as.heap.digits)
6833 #define BIGNUM_LENINT(b) rb_long2int(BIGNUM_LEN(b))
6834 #define RBIGNUM(obj) (R_CAST(RBignum)(obj))
6835 struct RRational {
6836 struct RBasic basic;
6837 VALUE num;
6838 VALUE den;
6839 };
6840 #define RRATIONAL(obj) (R_CAST(RRational)(obj))
6841 #define RRATIONAL_SET_NUM(rat,n) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->num,(n))
6842 #define RRATIONAL_SET_DEN(rat,d) RB_OBJ_WRITE((rat), &((struct RRational *)(rat))->den,(d))
6843 struct RFloat {
6844 struct RBasic basic;
6845 double float_value;
6846 };
6847 #define RFLOAT(obj) (R_CAST(RFloat)(obj))
6848 struct RComplex {
6849 struct RBasic basic;
6850 VALUE real;
6851 VALUE imag;
6852 };
6853 #define RCOMPLEX(obj) (R_CAST(RComplex)(obj))
6854 #define RCOMPLEX_SET_REAL(cmp,r) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->real,(r))
6855 #define RCOMPLEX_SET_IMAG(cmp,i) RB_OBJ_WRITE((cmp), &((struct RComplex *)(cmp))->imag,(i))
6856 enum ruby_rhash_flags {
6857 RHASH_PASS_AS_KEYWORDS = ((VALUE)RUBY_FL_USER1),
6858 RHASH_PROC_DEFAULT = ((VALUE)RUBY_FL_USER2),
6859 RHASH_ST_TABLE_FLAG = ((VALUE)RUBY_FL_USER3),
6860 #define RHASH_AR_TABLE_MAX_SIZE SIZEOF_VALUE
6861 RHASH_AR_TABLE_SIZE_MASK = (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)|((VALUE)RUBY_FL_USER7)),
6862 RHASH_AR_TABLE_SIZE_SHIFT = (((VALUE)RUBY_FL_USHIFT)+4),
6863 RHASH_AR_TABLE_BOUND_MASK = (((VALUE)RUBY_FL_USER8)|((VALUE)RUBY_FL_USER9)|((VALUE)RUBY_FL_USER10)|((VALUE)RUBY_FL_USER11)),
6864 RHASH_AR_TABLE_BOUND_SHIFT = (((VALUE)RUBY_FL_USHIFT)+8),
6865 #define RHASH_LEV_MASK (FL_USER13 | FL_USER14 | FL_USER15 | FL_USER16 | FL_USER17 | FL_USER18 | FL_USER19)
6866 RHASH_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER12),
6867 RHASH_LEV_SHIFT = (((VALUE)RUBY_FL_USHIFT) + 13),
6868 RHASH_LEV_MAX = 127,
6869 RHASH_ENUM_END
6870 };
6871 #define RHASH_AR_TABLE_SIZE_RAW(h) ((unsigned int)((RBASIC(h)->flags & RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT))
6872 void rb_hash_st_table_set(VALUE hash, st_table *st);
6873 #define RHASH_AR_TABLE_P(hash) (!FL_TEST_RAW((hash), RHASH_ST_TABLE_FLAG))
6874 #define RHASH_AR_TABLE(hash) (RHASH(hash)->as.ar)
6875 #define RHASH_ST_TABLE(hash) (RHASH(hash)->as.st)
6876 #define RHASH(obj) (R_CAST(RHash)(obj))
6877 #define RHASH_ST_SIZE(h) (RHASH_ST_TABLE(h)->num_entries)
6878 #define RHASH_ST_TABLE_P(h) (!RHASH_AR_TABLE_P(h))
6879 #define RHASH_ST_CLEAR(h) (FL_UNSET_RAW(h, RHASH_ST_TABLE_FLAG), RHASH(h)->as.ar = NULL)
6880 #define RHASH_AR_TABLE_SIZE_MASK (VALUE)RHASH_AR_TABLE_SIZE_MASK
6881 #define RHASH_AR_TABLE_SIZE_SHIFT RHASH_AR_TABLE_SIZE_SHIFT
6882 #define RHASH_AR_TABLE_BOUND_MASK (VALUE)RHASH_AR_TABLE_BOUND_MASK
6883 #define RHASH_AR_TABLE_BOUND_SHIFT RHASH_AR_TABLE_BOUND_SHIFT
6884 #define RHASH_TRANSIENT_P(hash) FL_TEST_RAW((hash), RHASH_TRANSIENT_FLAG)
6885 #define RHASH_SET_TRANSIENT_FLAG(h) FL_SET_RAW(h, RHASH_TRANSIENT_FLAG)
6886 #define RHASH_UNSET_TRANSIENT_FLAG(h) FL_UNSET_RAW(h, RHASH_TRANSIENT_FLAG)
6887 typedef unsigned char ar_hint_t;
6888 struct RHash {
6889 struct RBasic basic;
6890 union {
6891 st_table *st;
6892 struct ar_table_struct *ar;
6893 } as;
6894 const VALUE ifnone;
6895 union {
6896 ar_hint_t ary[8];
6897 VALUE word;
6898 } ar_hint;
6899 };
6900 #undef RHASH_IFNONE
6901 #undef RHASH_SIZE
6902 #define RHASH_IFNONE(h) (RHASH(h)->ifnone)
6903 #define RHASH_SIZE(h) (RHASH_AR_TABLE_P(h) ? RHASH_AR_TABLE_SIZE_RAW(h) : RHASH_ST_SIZE(h))
6904 struct RMoved {
6905 VALUE flags;
6906 VALUE destination;
6907 VALUE next;
6908 };
6909 extern void ruby_init_setproctitle(int argc, char *argv[]);
6910 #define RSTRUCT_EMBED_LEN_MAX RSTRUCT_EMBED_LEN_MAX
6911 #define RSTRUCT_EMBED_LEN_MASK RSTRUCT_EMBED_LEN_MASK
6912 #define RSTRUCT_EMBED_LEN_SHIFT RSTRUCT_EMBED_LEN_SHIFT
6913 enum {
6914 RSTRUCT_EMBED_LEN_MAX = RVALUE_EMBED_LEN_MAX,
6915 RSTRUCT_EMBED_LEN_MASK = (RUBY_FL_USER2|RUBY_FL_USER1),
6916 RSTRUCT_EMBED_LEN_SHIFT = (RUBY_FL_USHIFT+1),
6917 RSTRUCT_TRANSIENT_FLAG = ((VALUE)RUBY_FL_USER3),
6918 RSTRUCT_ENUM_END
6919 };
6920 #define RSTRUCT_TRANSIENT_P(st) FL_TEST_RAW((obj), RSTRUCT_TRANSIENT_FLAG)
6921 #define RSTRUCT_TRANSIENT_SET(st) FL_SET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
6922 #define RSTRUCT_TRANSIENT_UNSET(st) FL_UNSET_RAW((st), RSTRUCT_TRANSIENT_FLAG)
6923 struct RStruct {
6924 struct RBasic basic;
6925 union {
6926 struct {
6927 long len;
6928 const VALUE *ptr;
6929 } heap;
6930 const VALUE ary[RSTRUCT_EMBED_LEN_MAX];
6931 } as;
6932 };
6933 #undef RSTRUCT_LEN
6934 #undef RSTRUCT_PTR
6935 #undef RSTRUCT_SET
6936 #undef RSTRUCT_GET
6937 #define RSTRUCT_EMBED_LEN(st) (long)((RBASIC(st)->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT))
6938 #define RSTRUCT_LEN(st) rb_struct_len(st)
6939 #define RSTRUCT_LENINT(st) rb_long2int(RSTRUCT_LEN(st))
6940 #define RSTRUCT_CONST_PTR(st) rb_struct_const_ptr(st)
6941 #define RSTRUCT_PTR(st) ((VALUE *)RSTRUCT_CONST_PTR(RB_OBJ_WB_UNPROTECT_FOR(STRUCT, st)))
6942 #define RSTRUCT_SET(st,idx,v) RB_OBJ_WRITE(st, &RSTRUCT_CONST_PTR(st)[idx], (v))
6943 #define RSTRUCT_GET(st,idx) (RSTRUCT_CONST_PTR(st)[idx])
6944 #define RSTRUCT(obj) (R_CAST(RStruct)(obj))
6945 static inline long
6946 rb_struct_len(VALUE st)
6947 {
6948 return (((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ?
6949 (long)((((struct RBasic*)(st))->flags >> RSTRUCT_EMBED_LEN_SHIFT) & (RSTRUCT_EMBED_LEN_MASK >> RSTRUCT_EMBED_LEN_SHIFT)) : ((struct RStruct*)(st))->as.heap.len;
6950 }
6951 static inline const VALUE *
6952 rb_struct_const_ptr(VALUE st)
6953 {
6954 return ((((struct RBasic*)(st))->flags & RSTRUCT_EMBED_LEN_MASK) ? ((struct RStruct*)(st))->as.ary : ((struct RStruct*)(st))->as.heap.ptr);
6955 }
6956 static inline const VALUE *
6957 rb_struct_const_heap_ptr(VALUE st)
6958 {
6959 return ((struct RStruct*)(st))->as.heap.ptr;
6960 }
6961 struct rb_deprecated_classext_struct {
6962 char conflict[sizeof(VALUE) * 3];
6963 };
6964 struct rb_subclass_entry;
6965 typedef struct rb_subclass_entry rb_subclass_entry_t;
6966 struct rb_subclass_entry {
6967 VALUE klass;
6968 rb_subclass_entry_t *next;
6969 };
6970 typedef unsigned long long rb_serial_t;
6971 #define SERIALT2NUM ULL2NUM
6972 #define PRI_SERIALT_PREFIX PRI_LL_PREFIX
6973 #define SIZEOF_SERIAL_T SIZEOF_LONG_LONG
6974 struct rb_classext_struct {
6975 struct st_table *iv_index_tbl;
6976 struct st_table *iv_tbl;
6977 struct rb_id_table *m_tbl;
6978 struct rb_id_table *const_tbl;
6979 struct rb_id_table *callable_m_tbl;
6980 rb_subclass_entry_t *subclasses;
6981 rb_subclass_entry_t **parent_subclasses;
6982 rb_subclass_entry_t **module_subclasses;
6983 const VALUE origin_;
6984 const VALUE refined_class;
6985 rb_alloc_func_t allocator;
6986 const VALUE includer;
6987 };
6988 typedef struct rb_classext_struct rb_classext_t;
6989 #undef RClass
6990 struct RClass {
6991 struct RBasic basic;
6992 VALUE super;
6993 rb_classext_t *ptr;
6994 rb_serial_t class_serial;
6995 };
6996 void rb_class_subclass_add(VALUE super, VALUE klass);
6997 void rb_class_remove_from_super_subclasses(VALUE);
6998 int rb_singleton_class_internal_p(VALUE sklass);
6999 #define RCLASS_EXT(c) (RCLASS(c)->ptr)
7000 #define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
7001 #define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
7002 #define RCLASS_M_TBL(c) (RCLASS_EXT(c)->m_tbl)
7003 #define RCLASS_CALLABLE_M_TBL(c) (RCLASS_EXT(c)->callable_m_tbl)
7004 #define RCLASS_IV_INDEX_TBL(c) (RCLASS_EXT(c)->iv_index_tbl)
7005 #define RCLASS_ORIGIN(c) (RCLASS_EXT(c)->origin_)
7006 #define RCLASS_REFINED_CLASS(c) (RCLASS_EXT(c)->refined_class)
7007 #define RCLASS_SERIAL(c) (RCLASS(c)->class_serial)
7008 #define RCLASS_INCLUDER(c) (RCLASS_EXT(c)->includer)
7009 #define RCLASS_CLONED FL_USER6
7010 #define RICLASS_IS_ORIGIN FL_USER5
7011 #define RCLASS_REFINED_BY_ANY FL_USER7
7012 static inline void
7013 RCLASS_SET_ORIGIN(VALUE klass, VALUE origin)
7014 {
7015 rb_obj_write((VALUE)(klass), (VALUE *)(&((((struct RClass*)(klass))->ptr)->origin_)), (VALUE)(origin), "../ruby-2.7.0/internal.h", 1091);
7016 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);
7017 }
7018 static inline void
7019 RCLASS_SET_INCLUDER(VALUE iclass, VALUE klass)
7020 {
7021 rb_obj_write((VALUE)(iclass), (VALUE *)(&((((struct RClass*)(iclass))->ptr)->includer)), (VALUE)(klass), "../ruby-2.7.0/internal.h", 1098);
7022 }
7023 #undef RCLASS_SUPER
7024 static inline VALUE
7025 RCLASS_SUPER(VALUE klass)
7026 {
7027 return ((struct RClass*)(klass))->super;
7028 }
7029 static inline VALUE
7030 RCLASS_SET_SUPER(VALUE klass, VALUE super)
7031 {
7032 if (super) {
7033 rb_class_remove_from_super_subclasses(klass);
7034 rb_class_subclass_add(super, klass);
7035 }
7036 rb_obj_write((VALUE)(klass), (VALUE *)(&((struct RClass*)(klass))->super), (VALUE)(super), "../ruby-2.7.0/internal.h", 1115);
7037 return super;
7038 }
7039 #define IMEMO_DEBUG 0
7040 struct RIMemo {
7041 VALUE flags;
7042 VALUE v0;
7043 VALUE v1;
7044 VALUE v2;
7045 VALUE v3;
7046 };
7047 enum imemo_type {
7048 imemo_env = 0,
7049 imemo_cref = 1,
7050 imemo_svar = 2,
7051 imemo_throw_data = 3,
7052 imemo_ifunc = 4,
7053 imemo_memo = 5,
7054 imemo_ment = 6,
7055 imemo_iseq = 7,
7056 imemo_tmpbuf = 8,
7057 imemo_ast = 9,
7058 imemo_parser_strterm = 10
7059 };
7060 #define IMEMO_MASK 0x0f
7061 static inline enum imemo_type
7062 imemo_type(VALUE imemo)
7063 {
7064 return (((struct RBasic*)(imemo))->flags >> ((VALUE)RUBY_FL_USHIFT)) & 0x0f;
7065 }
7066 static inline int
7067 imemo_type_p(VALUE imemo, enum imemo_type imemo_type)
7068 {
7069 if ((__builtin_expect(!!(!(((VALUE)(imemo) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(imemo) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))), 1))) {
7070 const VALUE mask = (0x0f << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_MASK;
7071 const VALUE expected_type = (imemo_type << ((VALUE)RUBY_FL_USHIFT)) | RUBY_T_IMEMO;
7072 return expected_type == (((struct RBasic*)(imemo))->flags & mask);
7073 }
7074 else {
7075 return 0;
7076 }
7077 }
7078 VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
7079 #define IMEMO_FL_USHIFT (FL_USHIFT + 4)
7080 #define IMEMO_FL_USER0 FL_USER4
7081 #define IMEMO_FL_USER1 FL_USER5
7082 #define IMEMO_FL_USER2 FL_USER6
7083 #define IMEMO_FL_USER3 FL_USER7
7084 #define IMEMO_FL_USER4 FL_USER8
7085 struct vm_svar {
7086 VALUE flags;
7087 const VALUE cref_or_me;
7088 const VALUE lastline;
7089 const VALUE backref;
7090 const VALUE others;
7091 };
7092 #define THROW_DATA_CONSUMED IMEMO_FL_USER0
7093 struct vm_throw_data {
7094 VALUE flags;
7095 VALUE reserved;
7096 const VALUE throw_obj;
7097 const struct rb_control_frame_struct *catch_frame;
7098 int throw_state;
7099 };
7100 #define THROW_DATA_P(err) RB_TYPE_P((VALUE)(err), T_IMEMO)
7101 struct vm_ifunc_argc {
7102 int min, max;
7103 };
7104 struct vm_ifunc {
7105 VALUE flags;
7106 VALUE reserved;
7107 rb_block_call_func_t func;
7108 const void *data;
7109 struct vm_ifunc_argc argc;
7110 };
7111 #define IFUNC_NEW(a,b,c) ((struct vm_ifunc *)rb_imemo_new(imemo_ifunc, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7112 struct vm_ifunc *rb_vm_ifunc_new(rb_block_call_func_t func, const void *data, int min_argc, int max_argc);
7113 static inline struct vm_ifunc *
7114 rb_vm_ifunc_proc_new(rb_block_call_func_t func, const void *data)
7115 {
7116 return rb_vm_ifunc_new(func, data, 0, (-1));
7117 }
7118 typedef struct rb_imemo_tmpbuf_struct {
7119 VALUE flags;
7120 VALUE reserved;
7121 VALUE *ptr;
7122 struct rb_imemo_tmpbuf_struct *next;
7123 size_t cnt;
7124 } rb_imemo_tmpbuf_t;
7125 #define rb_imemo_tmpbuf_auto_free_pointer() rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0)
7126 rb_imemo_tmpbuf_t *rb_imemo_tmpbuf_parser_heap(void *buf, rb_imemo_tmpbuf_t *old_heap, size_t cnt);
7127 #define RB_IMEMO_TMPBUF_PTR(v) ((void *)(((const struct rb_imemo_tmpbuf_struct *)(v))->ptr))
7128 static inline void *
7129 rb_imemo_tmpbuf_set_ptr(VALUE v, void *ptr)
7130 {
7131 return ((rb_imemo_tmpbuf_t *)v)->ptr = ptr;
7132 }
7133 static inline VALUE
7134 rb_imemo_tmpbuf_auto_free_pointer_new_from_an_RString(VALUE str)
7135 {
7136 const void *src;
7137 VALUE imemo;
7138 rb_imemo_tmpbuf_t *tmpbuf;
7139 void *dst;
7140 size_t len;
7141 rb_string_value(&(str));
7142 imemo = rb_imemo_new(imemo_tmpbuf, 0, 0, 0, 0);
7143 tmpbuf = (rb_imemo_tmpbuf_t *)imemo;
7144 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);
7145 src = (!(((struct RBasic*)(str))->flags & RSTRING_NOEMBED) ? ((struct RString*)(str))->as.ary : ((struct RString*)(str))->as.heap.ptr);
7146 dst = ruby_xmalloc(len);
7147 ((__builtin_object_size(dst, 0) != (size_t)-1) ? __builtin___memcpy_chk(dst, src, len, __builtin_object_size(dst, 0)) : __memcpy_ichk(dst, src, len));
7148 tmpbuf->ptr = dst;
7149 return imemo;
7150 }
7151 void rb_strterm_mark(VALUE obj);
7152 struct MEMO {
7153 VALUE flags;
7154 VALUE reserved;
7155 const VALUE v1;
7156 const VALUE v2;
7157 union {
7158 long cnt;
7159 long state;
7160 const VALUE value;
7161 void (*func)(void);
7162 } u3;
7163 };
7164 #define MEMO_V1_SET(m,v) RB_OBJ_WRITE((m), &(m)->v1, (v))
7165 #define MEMO_V2_SET(m,v) RB_OBJ_WRITE((m), &(m)->v2, (v))
7166 #define MEMO_CAST(m) ((struct MEMO *)m)
7167 #define MEMO_NEW(a,b,c) ((struct MEMO *)rb_imemo_new(imemo_memo, (VALUE)(a), (VALUE)(b), (VALUE)(c), 0))
7168 #define roomof(x,y) (((x) + (y) - 1) / (y))
7169 #define type_roomof(x,y) roomof(sizeof(x), sizeof(y))
7170 #define MEMO_FOR(type,value) ((type *)RARRAY_PTR(value))
7171 #define NEW_MEMO_FOR(type,value) ((value) = rb_ary_tmp_new_fill(type_roomof(type, VALUE)), MEMO_FOR(type, value))
7172 #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))
7173 #define STRING_P(s) (RB_TYPE_P((s), T_STRING) && CLASS_OF(s) == rb_cString)
7174 #define rb_cFixnum rb_cInteger
7175 #define rb_cBignum rb_cInteger
7176 enum {
7177 cmp_opt_Fixnum,
7178 cmp_opt_String,
7179 cmp_opt_Float,
7180 cmp_optimizable_count
7181 };
7182 struct cmp_opt_data {
7183 unsigned int opt_methods;
7184 unsigned int opt_inited;
7185 };
7186 #define NEW_CMP_OPT_MEMO(type,value) NEW_PARTIAL_MEMO_FOR(type, value, cmp_opt)
7187 #define CMP_OPTIMIZABLE_BIT(type) (1U << TOKEN_PASTE(cmp_opt_,type))
7188 #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))))
7189 #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))
7190 struct rb_global_entry {
7191 struct rb_global_variable *var;
7192 ID id;
7193 };
7194 struct rb_global_entry *rb_global_entry(ID);
7195 VALUE rb_gvar_get(struct rb_global_entry *);
7196 VALUE rb_gvar_set(struct rb_global_entry *, VALUE);
7197 VALUE rb_gvar_defined(struct rb_global_entry *);
7198 #define ARRAY_DEBUG (0+RUBY_DEBUG)
7199 #define RARRAY_PTR_IN_USE_FLAG FL_USER14
7200 #define ARY_PTR_USING_P(ary) FL_TEST_RAW((ary), RARRAY_PTR_IN_USE_FLAG)
7201 #define RARY_TRANSIENT_SET(ary) FL_SET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7202 #define RARY_TRANSIENT_UNSET(ary) FL_UNSET_RAW((ary), RARRAY_TRANSIENT_FLAG);
7203 VALUE rb_ary_last(int, const VALUE *, VALUE);
7204 void rb_ary_set_len(VALUE, long);
7205 void rb_ary_delete_same(VALUE, VALUE);
7206 VALUE rb_ary_tmp_new_fill(long capa);
7207 VALUE rb_ary_at(VALUE, VALUE);
7208 VALUE rb_ary_aref1(VALUE ary, VALUE i);
7209 size_t rb_ary_memsize(VALUE);
7210 VALUE rb_to_array_type(VALUE obj);
7211 VALUE rb_check_to_array(VALUE ary);
7212 VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *);
7213 VALUE rb_ary_behead(VALUE, long);
7214 #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); })
7215 static inline VALUE
7216 rb_ary_entry_internal(VALUE ary, long offset)
7217 {
7218 long len = rb_array_len(ary);
7219 const VALUE *ptr = rb_array_const_ptr_transient(ary);
7220 if (len == 0) return ((VALUE)RUBY_Qnil);
7221 if (offset < 0) {
7222 offset += len;
7223 if (offset < 0) return ((VALUE)RUBY_Qnil);
7224 }
7225 else if (len <= offset) {
7226 return ((VALUE)RUBY_Qnil);
7227 }
7228 return ptr[offset];
7229 }
7230 void rb_obj_info_dump(VALUE obj);
7231 void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func);
7232 void ruby_debug_breakpoint(void);
7233 #define rp(obj) rb_obj_info_dump_loc((VALUE)(obj), __FILE__, __LINE__, __func__)
7234 #define rp_m(msg,obj) do { fprintf(stderr, "%s", (msg)); rb_obj_info_dump((VALUE)obj); } while (0)
7235 #define bp() ruby_debug_breakpoint()
7236 extern const char ruby_digitmap[];
7237 double rb_big_fdiv_double(VALUE x, VALUE y);
7238 VALUE rb_big_uminus(VALUE x);
7239 VALUE rb_big_hash(VALUE);
7240 VALUE rb_big_odd_p(VALUE);
7241 VALUE rb_big_even_p(VALUE);
7242 size_t rb_big_size(VALUE);
7243 VALUE rb_integer_float_cmp(VALUE x, VALUE y);
7244 VALUE rb_integer_float_eq(VALUE x, VALUE y);
7245 VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception);
7246 VALUE rb_big_comp(VALUE x);
7247 VALUE rb_big_aref(VALUE x, VALUE y);
7248 VALUE rb_big_abs(VALUE x);
7249 VALUE rb_big_size_m(VALUE big);
7250 VALUE rb_big_bit_length(VALUE big);
7251 VALUE rb_big_remainder(VALUE x, VALUE y);
7252 VALUE rb_big_gt(VALUE x, VALUE y);
7253 VALUE rb_big_ge(VALUE x, VALUE y);
7254 VALUE rb_big_lt(VALUE x, VALUE y);
7255 VALUE rb_big_le(VALUE x, VALUE y);
7256 VALUE rb_int_powm(int const argc, VALUE * const argv, VALUE const num);
7257 VALUE rb_class_boot(VALUE);
7258 VALUE rb_class_inherited(VALUE, VALUE);
7259 VALUE rb_make_metaclass(VALUE, VALUE);
7260 VALUE rb_include_class_new(VALUE, VALUE);
7261 void rb_class_foreach_subclass(VALUE klass, void (*f)(VALUE, VALUE), VALUE);
7262 void rb_class_detach_subclasses(VALUE);
7263 void rb_class_detach_module_subclasses(VALUE);
7264 void rb_class_remove_from_module_subclasses(VALUE);
7265 VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj);
7266 VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj);
7267 VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj);
7268 VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj);
7269 VALUE rb_special_singleton_class(VALUE);
7270 VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach);
7271 VALUE rb_singleton_class_get(VALUE obj);
7272 void Init_class_hierarchy(void);
7273 int rb_class_has_methods(VALUE c);
7274 void rb_undef_methods_from(VALUE klass, VALUE super);
7275 VALUE rb_invcmp(VALUE, VALUE);
7276 struct rb_block;
7277 struct rb_iseq_struct;
7278 int rb_dvar_defined(ID, const struct rb_iseq_struct *);
7279 int rb_local_defined(ID, const struct rb_iseq_struct *);
7280 const char * rb_insns_name(int i);
7281 VALUE rb_insns_name_array(void);
7282 int rb_vm_insn_addr2insn(const void *);
7283 VALUE rb_dbl_complex_new_polar_pi(double abs, double ang);
7284 struct rb_thread_struct;
7285 VALUE rb_obj_is_fiber(VALUE);
7286 void rb_fiber_reset_root_local_storage(struct rb_thread_struct *);
7287 void ruby_register_rollback_func_for_ensure(VALUE (*ensure_func)(VALUE), VALUE (*rollback_func)(VALUE));
7288 void ruby_debug_printf(const char*, ...) __attribute__((format(printf, 1, 2)));
7289 VALUE rb_dir_getwd_ospath(void);
7290 void Init_enc(void);
7291 void Init_ext(void);
7292 ID rb_id_encoding(void);
7293 int rb_encdb_replicate(const char *alias, const char *orig);
7294 int rb_encdb_alias(const char *alias, const char *orig);
7295 int rb_encdb_dummy(const char *name);
7296 void rb_encdb_declare(const char *name);
7297 void rb_enc_set_base(const char *name, const char *orig);
7298 int rb_enc_set_dummy(int index);
7299 void rb_encdb_set_unicode(int index);
7300 __attribute__ ((__pure__)) int rb_data_is_encoding(VALUE obj);
7301 extern VALUE rb_cArithSeq;
7302 VALUE rb_f_send(int argc, VALUE *argv, VALUE recv);
7303 VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary);
7304 extern VALUE rb_eEAGAIN;
7305 extern VALUE rb_eEWOULDBLOCK;
7306 extern VALUE rb_eEINPROGRESS;
7307 void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args);
7308 __attribute__ ((__noreturn__)) void rb_async_bug_errno(const char *,int);
7309 const char *rb_builtin_type_name(int t);
7310 const char *rb_builtin_class_name(VALUE x);
7311 void rb_warn_deprecated(const char *fmt, const char *suggest, ...) __attribute__((format(printf, 1, 3)));
7312 typedef enum {
7313 RB_WARN_CATEGORY_NONE,
7314 RB_WARN_CATEGORY_DEPRECATED,
7315 RB_WARN_CATEGORY_EXPERIMENTAL,
7316 } rb_warning_category_t;
7317 rb_warning_category_t rb_warning_category_from_name(VALUE category);
7318 _Bool rb_warning_category_enabled_p(rb_warning_category_t category);
7319 #define rb_raise_cstr(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_cstr(mesg)))
7320 #define rb_raise_static(etype,mesg) rb_exc_raise(rb_exc_new_str(etype, rb_str_new_static(mesg, rb_strlen_lit(mesg))))
7321 VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method);
7322 #define rb_name_err_raise_str(mesg,recv,name) rb_exc_raise(rb_name_err_new(mesg, recv, name))
7323 #define rb_name_err_raise(mesg,recv,name) rb_name_err_raise_str(rb_fstring_cstr(mesg), (recv), (name))
7324 VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv);
7325 VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name);
7326 #define rb_key_err_raise(mesg,recv,name) rb_exc_raise(rb_key_err_new(mesg, recv, name))
7327 VALUE rb_warning_string(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
7328 __attribute__ ((__noreturn__)) void rb_vraise(VALUE, const char *, va_list);
7329 VALUE rb_refinement_module_get_refined_class(VALUE module);
7330 extern ID ruby_static_id_signo, ruby_static_id_status;
7331 void rb_class_modify_check(VALUE);
7332 #define id_signo ruby_static_id_signo
7333 #define id_status ruby_static_id_status
7334 __attribute__ ((__noreturn__)) VALUE rb_f_raise(int argc, VALUE *argv);
7335 VALUE rb_get_backtrace(VALUE info);
7336 void rb_call_end_proc(VALUE data);
7337 void rb_mark_end_proc(void);
7338 extern const char ruby_null_device[];
7339 VALUE rb_home_dir_of(VALUE user, VALUE result);
7340 VALUE rb_default_home_dir(VALUE result);
7341 VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
7342 void rb_file_const(const char*, VALUE);
7343 int rb_file_load_ok(const char *);
7344 VALUE rb_file_expand_path_fast(VALUE, VALUE);
7345 VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE);
7346 VALUE rb_get_path_check_to_string(VALUE);
7347 VALUE rb_get_path_check_convert(VALUE);
7348 void Init_File(void);
7349 int ruby_is_fd_loadable(int fd);
7350 #pragma GCC visibility push(default)
7351 __attribute__ ((__noreturn__)) void rb_sys_fail_path_in(const char *func_name, VALUE path);
7352 __attribute__ ((__noreturn__)) void rb_syserr_fail_path_in(const char *func_name, int err, VALUE path);
7353 #pragma GCC visibility pop
7354 #define rb_sys_fail_path(path) rb_sys_fail_path_in(RUBY_FUNCTION_NAME_STRING, path)
7355 #define rb_syserr_fail_path(err,path) rb_syserr_fail_path_in(RUBY_FUNCTION_NAME_STRING, (err), (path))
7356 extern VALUE *ruby_initial_gc_stress_ptr;
7357 extern int ruby_disable_gc;
7358 void Init_heap(void);
7359 void *ruby_mimmalloc(size_t size) __attribute__((__malloc__));
7360 void ruby_mimfree(void *ptr);
7361 void rb_objspace_set_event_hook(const rb_event_flag_t event);
7362 void rb_gc_writebarrier_remember(VALUE obj);
7363 void ruby_gc_set_params(void);
7364 void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj);
7365 #define ruby_sized_xrealloc(ptr,new_size,old_size) ruby_xrealloc(ptr, new_size)
7366 #define ruby_sized_xrealloc2(ptr,new_count,element_size,old_count) ruby_xrealloc2(ptr, new_count, element_size)
7367 #define ruby_sized_xfree(ptr,size) ruby_xfree(ptr)
7368 #define SIZED_REALLOC_N(var,type,n,old_n) REALLOC_N(var, type, n)
7369 #undef NEWOBJF_OF
7370 #undef RB_NEWOBJ_OF
7371 #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))
7372 #define NEWOBJ_OF(obj,type,klass,flags) RB_NEWOBJ_OF(obj,type,klass,flags)
7373 __attribute__((__alloc_align__(1)))
7374 void *rb_aligned_malloc(size_t, size_t) __attribute__((__malloc__)) __attribute__ ((alloc_size (2)));
7375 size_t rb_size_mul_or_raise(size_t, size_t, VALUE);
7376 size_t rb_size_mul_add_or_raise(size_t, size_t, size_t, VALUE);
7377 void *rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__));
7378 void *rb_xrealloc_mul_add(const void *, size_t, size_t, size_t);
7379 void *rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
7380 void *rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__));
7381 struct st_table *rb_hash_tbl_raw(VALUE hash);
7382 #define RHASH_TBL_RAW(h) rb_hash_tbl_raw(h)
7383 VALUE rb_hash_new_with_size(st_index_t size);
7384 VALUE rb_hash_has_key(VALUE hash, VALUE key);
7385 VALUE rb_hash_default_value(VALUE hash, VALUE key);
7386 VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc);
7387 long rb_dbl_long_hash(double d);
7388 st_table *rb_init_identtable(void);
7389 VALUE rb_hash_compare_by_id_p(VALUE hash);
7390 VALUE rb_to_hash_type(VALUE obj);
7391 VALUE rb_hash_key_str(VALUE);
7392 VALUE rb_hash_keys(VALUE hash);
7393 VALUE rb_hash_values(VALUE hash);
7394 VALUE rb_hash_rehash(VALUE hash);
7395 VALUE rb_hash_resurrect(VALUE hash);
7396 int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val);
7397 VALUE rb_hash_set_pair(VALUE hash, VALUE pair);
7398 int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval);
7399 int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval);
7400
7401 #pragma GCC visibility push(default)
7402
7403 int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg);
7404
7405 #pragma GCC visibility pop
7406
7407 int rb_hash_stlike_foreach_with_replace(VALUE hash, st_foreach_check_callback_func *func, st_update_callback_func *replace, st_data_t arg);
7408 int rb_hash_stlike_update(VALUE hash, st_data_t key, st_update_callback_func func, st_data_t arg);
7409 void rb_call_inits(void);
7410 void ruby_set_inplace_mode(const char *);
7411 void rb_stdio_set_default_encoding(void);
7412 VALUE rb_io_flush_raw(VALUE, int);
7413 int rb_stderr_tty_p(void);
7414 void rb_io_fptr_finalize_internal(void *ptr);
7415 #define rb_io_fptr_finalize rb_io_fptr_finalize_internal
7416 VALUE rb_get_expanded_load_path(void);
7417 int rb_require_internal(VALUE fname);
7418 __attribute__ ((__noreturn__)) void rb_load_fail(VALUE, const char*);
7419 extern const char ruby_exec_prefix[];
7420 extern const char ruby_initial_load_paths[];
7421 int Init_enc_set_filesystem_encoding(void);
7422 VALUE rb_math_atan2(VALUE, VALUE);
7423 VALUE rb_math_cos(VALUE);
7424 VALUE rb_math_cosh(VALUE);
7425 VALUE rb_math_exp(VALUE);
7426 VALUE rb_math_hypot(VALUE, VALUE);
7427 VALUE rb_math_log(int argc, const VALUE *argv);
7428 VALUE rb_math_sin(VALUE);
7429 VALUE rb_math_sinh(VALUE);
7430 extern _Bool mjit_enabled;
7431 VALUE mjit_pause(_Bool wait_p);
7432 VALUE mjit_resume(void);
7433 void mjit_finish(_Bool close_handle_p);
7434 void Init_newline(void);
7435 #define FIXNUM_POSITIVE_P(num) ((SIGNED_VALUE)(num) > (SIGNED_VALUE)INT2FIX(0))
7436 #define FIXNUM_NEGATIVE_P(num) ((SIGNED_VALUE)(num) < 0)
7437 #define FIXNUM_ZERO_P(num) ((num) == INT2FIX(0))
7438 #define INT_NEGATIVE_P(x) (FIXNUM_P(x) ? FIXNUM_NEGATIVE_P(x) : BIGNUM_NEGATIVE_P(x))
7439 #define FLOAT_ZERO_P(x) (RFLOAT_VALUE(x) == 0.0)
7440 #define ROUND_DEFAULT RUBY_NUM_ROUND_HALF_UP
7441 enum ruby_num_rounding_mode {
7442 RUBY_NUM_ROUND_HALF_UP,
7443 RUBY_NUM_ROUND_HALF_EVEN,
7444 RUBY_NUM_ROUND_HALF_DOWN,
7445 RUBY_NUM_ROUND_DEFAULT = RUBY_NUM_ROUND_HALF_UP
7446 };
7447 #define ROUND_TO(mode,even,up,down) ((mode) == RUBY_NUM_ROUND_HALF_EVEN ? even : (mode) == RUBY_NUM_ROUND_HALF_UP ? up : down)
7448 #define ROUND_FUNC(mode,name) ROUND_TO(mode, name ##_half_even, name ##_half_up, name ##_half_down)
7449 #define ROUND_CALL(mode,name,args) ROUND_TO(mode, name ##_half_even args, name ##_half_up args, name ##_half_down args)
7450 int rb_num_to_uint(VALUE val, unsigned int *ret);
7451 VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl);
7452 double ruby_float_step_size(double beg, double end, double unit, int excl);
7453 int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless);
7454 double ruby_float_mod(double x, double y);
7455 int rb_num_negative_p(VALUE);
7456 VALUE rb_int_succ(VALUE num);
7457 VALUE rb_int_uminus(VALUE num);
7458 VALUE rb_float_uminus(VALUE num);
7459 VALUE rb_int_plus(VALUE x, VALUE y);
7460 VALUE rb_float_plus(VALUE x, VALUE y);
7461 VALUE rb_int_minus(VALUE x, VALUE y);
7462 VALUE rb_int_mul(VALUE x, VALUE y);
7463 VALUE rb_float_mul(VALUE x, VALUE y);
7464 VALUE rb_float_div(VALUE x, VALUE y);
7465 VALUE rb_int_idiv(VALUE x, VALUE y);
7466 VALUE rb_int_modulo(VALUE x, VALUE y);
7467 VALUE rb_int2str(VALUE num, int base);
7468 VALUE rb_fix_plus(VALUE x, VALUE y);
7469 VALUE rb_fix_aref(VALUE fix, VALUE idx);
7470 VALUE rb_int_gt(VALUE x, VALUE y);
7471 int rb_float_cmp(VALUE x, VALUE y);
7472 VALUE rb_float_gt(VALUE x, VALUE y);
7473 VALUE rb_int_ge(VALUE x, VALUE y);
7474 enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts);
7475 double rb_int_fdiv_double(VALUE x, VALUE y);
7476 VALUE rb_int_pow(VALUE x, VALUE y);
7477 VALUE rb_float_pow(VALUE x, VALUE y);
7478 VALUE rb_int_cmp(VALUE x, VALUE y);
7479 VALUE rb_int_equal(VALUE x, VALUE y);
7480 VALUE rb_int_divmod(VALUE x, VALUE y);
7481 VALUE rb_int_and(VALUE x, VALUE y);
7482 VALUE rb_int_lshift(VALUE x, VALUE y);
7483 VALUE rb_int_div(VALUE x, VALUE y);
7484 VALUE rb_int_abs(VALUE num);
7485 VALUE rb_int_odd_p(VALUE num);
7486 int rb_int_positive_p(VALUE num);
7487 int rb_int_negative_p(VALUE num);
7488 VALUE rb_num_pow(VALUE x, VALUE y);
7489 VALUE rb_float_ceil(VALUE num, int ndigits);
7490 static inline VALUE
7491 rb_num_compare_with_zero(VALUE num, ID mid)
7492 {
7493 VALUE zero = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
7494 VALUE r = rb_check_funcall(num, mid, 1, &zero);
7495 if (r == ((VALUE)RUBY_Qundef)) {
7496 rb_cmperr(num, zero);
7497 }
7498 return r;
7499 }
7500 static inline int
7501 rb_num_positive_int_p(VALUE num)
7502 {
7503 const ID mid = '>';
7504 if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
7505 if (rb_method_basic_definition_p(rb_cInteger, mid))
7506 return ((long)(num) > (long)(((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG));
7507 }
7508 else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( ((((int)(long)(num))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
7509 if (rb_method_basic_definition_p(rb_cInteger, mid))
7510 return ((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0);
7511 }
7512 return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
7513 }
7514 static inline int
7515 rb_num_negative_int_p(VALUE num)
7516 {
7517 const ID mid = '<';
7518 if ((((int)(long)(num))&RUBY_FIXNUM_FLAG)) {
7519 if (rb_method_basic_definition_p(rb_cInteger, mid))
7520 return ((long)(num) < 0);
7521 }
7522 else if (( ((RUBY_T_BIGNUM) == RUBY_T_FIXNUM) ? (((int)(long)(num))&RUBY_FIXNUM_FLAG) : ((RUBY_T_BIGNUM) == RUBY_T_TRUE) ? ((num) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_BIGNUM) == RUBY_T_FALSE) ? ((num) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_BIGNUM) == RUBY_T_NIL) ? ((num) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_BIGNUM) == RUBY_T_UNDEF) ? ((num) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_BIGNUM) == RUBY_T_SYMBOL) ? ((((VALUE)(num)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_BIGNUM) == RUBY_T_FLOAT) ? ( ((((int)(long)(num))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(num) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(num) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(num))->flags & RUBY_T_MASK) == (RUBY_T_BIGNUM)))) {
7523 if (rb_method_basic_definition_p(rb_cInteger, mid))
7524 return (!((((struct RBasic*)(num))->flags & ((VALUE)((VALUE)RUBY_FL_USER1))) != 0));
7525 }
7526 return !(((VALUE)(rb_num_compare_with_zero(num, mid)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0);
7527 }
7528 VALUE rb_float_abs(VALUE flt);
7529 VALUE rb_float_equal(VALUE x, VALUE y);
7530 VALUE rb_float_eql(VALUE x, VALUE y);
7531 VALUE rb_flo_div_flo(VALUE x, VALUE y);
7532 #define RUBY_BIT_ROTL(v,n) (((v) << (n)) | ((v) >> ((sizeof(v) * 8) - n)))
7533 #define RUBY_BIT_ROTR(v,n) (((v) >> (n)) | ((v) << ((sizeof(v) * 8) - n)))
7534 static inline double
7535 rb_float_flonum_value(VALUE v)
7536 {
7537 if (v != (VALUE)0x8000000000000002) {
7538 union {
7539 double d;
7540 VALUE v;
7541 } t;
7542 VALUE b63 = (v >> 63);
7543 t.v = ((((2 - b63) | (v & ~(VALUE)0x03)) >> (3)) | (((2 - b63) | (v & ~(VALUE)0x03)) << ((sizeof((2 - b63) | (v & ~(VALUE)0x03)) * 8) - 3)));
7544 return t.d;
7545 }
7546 return 0.0;
7547 }
7548 static inline double
7549 rb_float_noflonum_value(VALUE v)
7550 {
7551 return ((struct RFloat *)v)->float_value;
7552 }
7553 static inline double
7554 rb_float_value_inline(VALUE v)
7555 {
7556 if (((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG)) {
7557 return rb_float_flonum_value(v);
7558 }
7559 return rb_float_noflonum_value(v);
7560 }
7561 static inline VALUE
7562 rb_float_new_inline(double d)
7563 {
7564 union {
7565 double d;
7566 VALUE v;
7567 } t;
7568 int bits;
7569 t.d = d;
7570 bits = (int)((VALUE)(t.v >> 60) & 0x7);
7571 if (t.v != 0x3000000000000000 &&
7572 !((bits-3) & ~0x01)) {
7573 return ((((t.v) << (3)) | ((t.v) >> ((sizeof(t.v) * 8) - 3))) & ~(VALUE)0x01) | 0x02;
7574 }
7575 else if (t.v == (VALUE)0) {
7576 return 0x8000000000000002;
7577 }
7578 return rb_float_new_in_heap(d);
7579 }
7580 #define rb_float_value(v) rb_float_value_inline(v)
7581 #define rb_float_new(d) rb_float_new_inline(d)
7582 void rb_obj_copy_ivar(VALUE dest, VALUE obj);
7583 __attribute__ ((__const__)) VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
7584 __attribute__ ((__const__)) VALUE rb_obj_not(VALUE obj);
7585 VALUE rb_class_search_ancestor(VALUE klass, VALUE super);
7586 __attribute__ ((__noreturn__)) void rb_undefined_alloc(VALUE klass);
7587 double rb_num_to_dbl(VALUE val);
7588 VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound);
7589 VALUE rb_immutable_obj_clone(int, VALUE *, VALUE);
7590 VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2);
7591 VALUE rb_convert_type_with_id(VALUE,int,const char*,ID);
7592 VALUE rb_check_convert_type_with_id(VALUE,int,const char*,ID);
7593 int rb_bool_expected(VALUE, const char *);
7594 struct RBasicRaw {
7595 VALUE flags;
7596 VALUE klass;
7597 };
7598 #define RBASIC_CLEAR_CLASS(obj) memset(&(((struct RBasicRaw *)((VALUE)(obj)))->klass), 0, sizeof(VALUE))
7599 #define RBASIC_SET_CLASS_RAW(obj,cls) memcpy(&((struct RBasicRaw *)((VALUE)(obj)))->klass, &(cls), sizeof(VALUE))
7600 #define RBASIC_SET_CLASS(obj,cls) do { VALUE _obj_ = (obj); RB_OBJ_WRITE(_obj_, &((struct RBasicRaw *)(_obj_))->klass, cls); } while (0)
7601 #define USE_SYMBOL_GC 1
7602 VALUE rb_parser_set_yydebug(VALUE, VALUE);
7603
7604 #pragma GCC visibility push(default)
7605
7606 VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int);
7607
7608 #pragma GCC visibility pop
7609
7610 void *rb_parser_load_file(VALUE parser, VALUE name);
7611 int rb_is_const_name(VALUE name);
7612 int rb_is_class_name(VALUE name);
7613 int rb_is_instance_name(VALUE name);
7614 int rb_is_local_name(VALUE name);
7615 __attribute__ ((__pure__)) int rb_is_const_sym(VALUE sym);
7616 __attribute__ ((__pure__)) int rb_is_attrset_sym(VALUE sym);
7617 ID rb_make_internal_id(void);
7618 void rb_gc_free_dsymbol(VALUE);
7619 VALUE rb_proc_location(VALUE self);
7620 st_index_t rb_hash_proc(st_index_t hash, VALUE proc);
7621 int rb_block_arity(void);
7622 int rb_block_min_max_arity(int *max);
7623 VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val);
7624 VALUE rb_func_lambda_new(rb_block_call_func_t func, VALUE val, int min_argc, int max_argc);
7625 VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info);
7626 #define RB_MAX_GROUPS (65536)
7627 struct waitpid_state;
7628 struct rb_execarg {
7629 union {
7630 struct {
7631 VALUE shell_script;
7632 } sh;
7633 struct {
7634 VALUE command_name;
7635 VALUE command_abspath;
7636 VALUE argv_str;
7637 VALUE argv_buf;
7638 } cmd;
7639 } invoke;
7640 VALUE redirect_fds;
7641 VALUE envp_str;
7642 VALUE envp_buf;
7643 VALUE dup2_tmpbuf;
7644 unsigned use_shell : 1;
7645 unsigned pgroup_given : 1;
7646 unsigned umask_given : 1;
7647 unsigned unsetenv_others_given : 1;
7648 unsigned unsetenv_others_do : 1;
7649 unsigned close_others_given : 1;
7650 unsigned close_others_do : 1;
7651 unsigned chdir_given : 1;
7652 unsigned new_pgroup_given : 1;
7653 unsigned new_pgroup_flag : 1;
7654 unsigned uid_given : 1;
7655 unsigned gid_given : 1;
7656 unsigned exception : 1;
7657 unsigned exception_given : 1;
7658 struct waitpid_state *waitpid_state;
7659 pid_t pgroup_pgid;
7660 VALUE rlimit_limits;
7661 mode_t umask_mask;
7662 uid_t uid;
7663 gid_t gid;
7664 int close_others_maxhint;
7665 VALUE fd_dup2;
7666 VALUE fd_close;
7667 VALUE fd_open;
7668 VALUE fd_dup2_child;
7669 VALUE env_modification;
7670 VALUE path_env;
7671 VALUE chdir_dir;
7672 };
7673 #define ARGVSTR2ARGV(argv_str) ((char **)RB_IMEMO_TMPBUF_PTR(argv_str) + 1)
7674 static inline size_t
7675 ARGVSTR2ARGC(VALUE argv_str)
7676 {
7677 size_t i = 0;
7678 char *const *p = ((char **)((void *)(((const struct rb_imemo_tmpbuf_struct *)(argv_str))->ptr)) + 1);
7679 while (p[i++])
7680 ;
7681 return i - 1;
7682 }
7683 pid_t rb_fork_ruby(int *status);
7684 void rb_last_status_clear(void);
7685 #define RANGE_BEG(r) (RSTRUCT(r)->as.ary[0])
7686 #define RANGE_END(r) (RSTRUCT(r)->as.ary[1])
7687 #define RANGE_EXCL(r) (RSTRUCT(r)->as.ary[2])
7688 VALUE rb_rational_canonicalize(VALUE x);
7689 VALUE rb_rational_uminus(VALUE self);
7690 VALUE rb_rational_plus(VALUE self, VALUE other);
7691 VALUE rb_rational_mul(VALUE self, VALUE other);
7692 VALUE rb_lcm(VALUE x, VALUE y);
7693 VALUE rb_rational_reciprocal(VALUE x);
7694 VALUE rb_cstr_to_rat(const char *, int);
7695 VALUE rb_rational_abs(VALUE self);
7696 VALUE rb_rational_cmp(VALUE self, VALUE other);
7697 VALUE rb_rational_pow(VALUE self, VALUE other);
7698 VALUE rb_numeric_quo(VALUE x, VALUE y);
7699 VALUE rb_float_numerator(VALUE x);
7700 VALUE rb_float_denominator(VALUE x);
7701 VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
7702 VALUE rb_reg_check_preprocess(VALUE);
7703 long rb_reg_search0(VALUE, VALUE, long, int, int);
7704 VALUE rb_reg_match_p(VALUE re, VALUE str, long pos);
7705 _Bool rb_reg_start_with_p(VALUE re, VALUE str);
7706 void rb_backref_set_string(VALUE string, long pos, long len);
7707 void rb_match_unbusy(VALUE);
7708 int rb_match_count(VALUE match);
7709 int rb_match_nth_defined(int nth, VALUE match);
7710 VALUE rb_reg_new_ary(VALUE ary, int options);
7711 extern int ruby_enable_coredump;
7712 int rb_get_next_signal(void);
7713 VALUE rb_fstring(VALUE);
7714 VALUE rb_fstring_new(const char *ptr, long len);
7715 #define rb_fstring_lit(str) rb_fstring_new((str), rb_strlen_lit(str))
7716 #define rb_fstring_literal(str) rb_fstring_lit(str)
7717 VALUE rb_fstring_cstr(const char *str);
7718 #define rb_fstring_cstr(str) RB_GNUC_EXTENSION_BLOCK( (__builtin_constant_p(str)) ? rb_fstring_new((str), (long)strlen(str)) : rb_fstring_cstr(str) )
7719 int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
7720 int rb_str_symname_p(VALUE);
7721 VALUE rb_str_quote_unprintable(VALUE);
7722 VALUE rb_id_quote_unprintable(ID);
7723 #define QUOTE(str) rb_str_quote_unprintable(str)
7724 #define QUOTE_ID(id) rb_id_quote_unprintable(id)
7725 char *rb_str_fill_terminator(VALUE str, const int termlen);
7726 void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen);
7727 VALUE rb_str_locktmp_ensure(VALUE str, VALUE (*func)(VALUE), VALUE arg);
7728 VALUE rb_str_chomp_string(VALUE str, VALUE chomp);
7729 #define STR_NOEMBED FL_USER1
7730 #define STR_SHARED FL_USER2
7731 #define STR_EMBED_P(str) (!FL_TEST_RAW((str), STR_NOEMBED))
7732 #define STR_SHARED_P(s) FL_ALL_RAW((s), STR_NOEMBED|ELTS_SHARED)
7733 #define is_ascii_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_7BIT)
7734 #define is_broken_string(str) (rb_enc_str_coderange(str) == ENC_CODERANGE_BROKEN)
7735 size_t rb_str_memsize(VALUE);
7736 VALUE rb_sym_proc_call(ID mid, int argc, const VALUE *argv, int kw_splat, VALUE passed_proc);
7737 VALUE rb_sym_to_proc(VALUE sym);
7738 char *rb_str_to_cstr(VALUE str);
7739 VALUE rb_str_eql(VALUE str1, VALUE str2);
7740 VALUE rb_obj_as_string_result(VALUE str, VALUE obj);
7741 const char *ruby_escaped_char(int c);
7742 VALUE rb_str_opt_plus(VALUE, VALUE);
7743 static inline VALUE
7744 rb_str_eql_internal(const VALUE str1, const VALUE str2)
7745 {
7746 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);
7747 const char *ptr1, *ptr2;
7748 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);
7749 if (!rb_str_comparable(str1, str2)) return ((VALUE)RUBY_Qfalse);
7750 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)))
7751 return ((VALUE)RUBY_Qtrue);
7752 if (memcmp(ptr1, ptr2, len) == 0)
7753 return ((VALUE)RUBY_Qtrue);
7754 return ((VALUE)RUBY_Qfalse);
7755 }
7756 VALUE rb_sym_intern_ascii(const char *ptr, long len);
7757 VALUE rb_sym_intern_ascii_cstr(const char *ptr);
7758 #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); })
7759 VALUE rb_to_symbol_type(VALUE obj);
7760 VALUE rb_struct_init_copy(VALUE copy, VALUE s);
7761 VALUE rb_struct_lookup(VALUE s, VALUE idx);
7762 VALUE rb_struct_s_keyword_init(VALUE klass);
7763 struct timeval rb_time_timeval(VALUE);
7764 #define COVERAGE_INDEX_LINES 0
7765 #define COVERAGE_INDEX_BRANCHES 1
7766 #define COVERAGE_TARGET_LINES 1
7767 #define COVERAGE_TARGET_BRANCHES 2
7768 #define COVERAGE_TARGET_METHODS 4
7769 #define COVERAGE_TARGET_ONESHOT_LINES 8
7770 VALUE rb_obj_is_mutex(VALUE obj);
7771 VALUE rb_suppress_tracing(VALUE (*func)(VALUE), VALUE arg);
7772 void rb_thread_execute_interrupts(VALUE th);
7773 VALUE rb_get_coverages(void);
7774 int rb_get_coverage_mode(void);
7775 VALUE rb_default_coverage(int);
7776 VALUE rb_thread_shield_new(void);
7777 VALUE rb_thread_shield_wait(VALUE self);
7778 VALUE rb_thread_shield_release(VALUE self);
7779 VALUE rb_thread_shield_destroy(VALUE self);
7780 int rb_thread_to_be_killed(VALUE thread);
7781 void rb_mutex_allow_trap(VALUE self, int val);
7782 VALUE rb_uninterruptible(VALUE (*b_proc)(VALUE), VALUE data);
7783 VALUE rb_mutex_owned_p(VALUE self);
7784 extern VALUE rb_cEncodingConverter;
7785 char *ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve);
7786 char *ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve);
7787 #define ROBJECT_TRANSIENT_FLAG FL_USER13
7788 #define ROBJ_TRANSIENT_P(obj) FL_TEST_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7789 #define ROBJ_TRANSIENT_SET(obj) FL_SET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7790 #define ROBJ_TRANSIENT_UNSET(obj) FL_UNSET_RAW((obj), ROBJECT_TRANSIENT_FLAG)
7791 void rb_gc_mark_global_tbl(void);
7792 size_t rb_generic_ivar_memsize(VALUE);
7793 VALUE rb_search_class_path(VALUE);
7794 VALUE rb_attr_delete(VALUE, ID);
7795 VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef);
7796 void rb_autoload_str(VALUE mod, ID id, VALUE file);
7797 VALUE rb_autoload_at_p(VALUE, ID, int);
7798 void rb_deprecate_constant(VALUE mod, const char *name);
7799 __attribute__ ((__noreturn__)) VALUE rb_mod_const_missing(VALUE,VALUE);
7800 rb_gvar_getter_t *rb_gvar_getter_function_of(const struct rb_global_entry *);
7801 rb_gvar_setter_t *rb_gvar_setter_function_of(const struct rb_global_entry *);
7802 _Bool rb_gvar_is_traced(const struct rb_global_entry *);
7803 void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_);
7804 rb_serial_t rb_next_class_serial(void);
7805 VALUE rb_obj_is_thread(VALUE obj);
7806 void rb_vm_mark(void *ptr);
7807 void Init_BareVM(void);
7808 void Init_vm_objects(void);
7809 __attribute__ ((__pure__)) VALUE rb_vm_top_self(void);
7810 void rb_vm_inc_const_missing_count(void);
7811 const void **rb_vm_get_insns_address_table(void);
7812 VALUE rb_source_location(int *pline);
7813 const char *rb_source_location_cstr(int *pline);
7814 static void rb_vm_pop_cfunc_frame(void);
7815 int rb_vm_add_root_module(ID id, VALUE module);
7816 void rb_vm_check_redefinition_by_prepend(VALUE klass);
7817 int rb_vm_check_optimizable_mid(VALUE mid);
7818 VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements);
7819 static VALUE ruby_vm_special_exception_copy(VALUE);
7820 __attribute__ ((__pure__)) st_table *rb_vm_fstring_table(void);
7821 void rb_print_backtrace(void);
7822 void Init_vm_eval(void);
7823 VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *);
7824 VALUE rb_current_realfilepath(void);
7825 VALUE rb_check_block_call(VALUE, ID, int, const VALUE *, rb_block_call_func_t, VALUE);
7826 typedef void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE);
7827 VALUE rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv,
7828 rb_check_funcall_hook *hook, VALUE arg);
7829 VALUE rb_check_funcall_with_hook_kw(VALUE recv, ID mid, int argc, const VALUE *argv,
7830 rb_check_funcall_hook *hook, VALUE arg, int kw_splat);
7831 const char *rb_type_str(enum ruby_value_type type);
7832 VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE);
7833 VALUE rb_yield_1(VALUE val);
7834 VALUE rb_yield_force_blockarg(VALUE values);
7835 VALUE rb_lambda_call(VALUE obj, ID mid, int argc, const VALUE *argv,
7836 rb_block_call_func_t bl_proc, int min_argc, int max_argc,
7837 VALUE data2);
7838 VALUE rb_equal_opt(VALUE obj1, VALUE obj2);
7839 VALUE rb_eql_opt(VALUE obj1, VALUE obj2);
7840 void Init_vm_stack_canary(void);
7841 void Init_eval_method(void);
7842 enum method_missing_reason {
7843 MISSING_NOENTRY = 0x00,
7844 MISSING_PRIVATE = 0x01,
7845 MISSING_PROTECTED = 0x02,
7846 MISSING_FCALL = 0x04,
7847 MISSING_VCALL = 0x08,
7848 MISSING_SUPER = 0x10,
7849 MISSING_MISSING = 0x20,
7850 MISSING_NONE = 0x40
7851 };
7852 struct rb_callable_method_entry_struct;
7853 struct rb_method_definition_struct;
7854 struct rb_execution_context_struct;
7855 struct rb_control_frame_struct;
7856 struct rb_calling_info;
7857 struct rb_call_data;
7858 #define CACHELINE 64
7859 struct rb_call_cache {
7860 rb_serial_t method_state;
7861 rb_serial_t class_serial[
7862 (64
7863 - sizeof(rb_serial_t)
7864 - sizeof(struct rb_callable_method_entry_struct *)
7865 - sizeof(uintptr_t)
7866 - sizeof(enum method_missing_reason)
7867 - sizeof(VALUE (*)(
7868 struct rb_execution_context_struct *e,
7869 struct rb_control_frame_struct *,
7870 struct rb_calling_info *,
7871 const struct rb_call_data *)))
7872 / sizeof(rb_serial_t)
7873 ];
7874 const struct rb_callable_method_entry_struct *me;
7875 uintptr_t method_serial;
7876 VALUE (*call)(struct rb_execution_context_struct *ec,
7877 struct rb_control_frame_struct *cfp,
7878 struct rb_calling_info *calling,
7879 struct rb_call_data *cd);
7880 union {
7881 unsigned int index;
7882 enum method_missing_reason method_missing_reason;
7883 } aux;
7884 };
7885 _Static_assert(sizeof(struct rb_call_cache) <= 64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE");
7886 struct rb_call_info {
7887 ID mid;
7888 unsigned int flag;
7889 int orig_argc;
7890 };
7891 struct rb_call_data {
7892 struct rb_call_cache cc;
7893 struct rb_call_info ci;
7894 };
7895 __attribute__ ((__visibility__("default"))) extern
7896 __attribute__ ((__nonnull__(1))) VALUE rb_funcallv_with_cc(struct rb_call_data*, VALUE, ID, int, const VALUE*);
7897 __attribute__ ((__visibility__("default"))) extern
7898 __attribute__ ((__nonnull__(1))) _Bool rb_method_basic_definition_p_with_cc(struct rb_call_data *, VALUE, ID);
7899 #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); })
7900 #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); })
7901 void Init_vm_backtrace(void);
7902 VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval);
7903 VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval);
7904 VALUE rb_make_backtrace(void);
7905 void rb_backtrace_print_as_bugreport(void);
7906 int rb_backtrace_p(VALUE obj);
7907 VALUE rb_backtrace_to_str_ary(VALUE obj);
7908 VALUE rb_backtrace_to_location_ary(VALUE obj);
7909 void rb_backtrace_each(VALUE (*iter)(VALUE recv, VALUE str), VALUE output);
7910
7911 #pragma GCC visibility push(default)
7912
7913 const char *rb_objspace_data_type_name(VALUE obj);
7914 VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
7915 void rb_ary_detransient(VALUE a);
7916 VALUE *rb_ary_ptr_use_start(VALUE ary);
7917 void rb_ary_ptr_use_end(VALUE ary);
7918 VALUE rb_big_mul_normal(VALUE x, VALUE y);
7919 VALUE rb_big_mul_balance(VALUE x, VALUE y);
7920 VALUE rb_big_mul_karatsuba(VALUE x, VALUE y);
7921 VALUE rb_big_mul_toom3(VALUE x, VALUE y);
7922 VALUE rb_big_sq_fast(VALUE x);
7923 VALUE rb_big_divrem_normal(VALUE x, VALUE y);
7924 VALUE rb_big2str_poweroftwo(VALUE x, int base);
7925 VALUE rb_big2str_generic(VALUE x, int base);
7926 VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck);
7927 VALUE rb_str2big_normal(VALUE arg, int base, int badcheck);
7928 VALUE rb_str2big_karatsuba(VALUE arg, int base, int badcheck);
7929 VALUE rb_big_mul_gmp(VALUE x, VALUE y);
7930 VALUE rb_big_divrem_gmp(VALUE x, VALUE y);
7931 VALUE rb_big2str_gmp(VALUE x, int base);
7932 VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck);
7933 enum rb_int_parse_flags {
7934 RB_INT_PARSE_SIGN = 0x01,
7935 RB_INT_PARSE_UNDERSCORE = 0x02,
7936 RB_INT_PARSE_PREFIX = 0x04,
7937 RB_INT_PARSE_ALL = 0x07,
7938 RB_INT_PARSE_DEFAULT = 0x07
7939 };
7940 VALUE rb_int_parse_cstr(const char *str, ssize_t len, char **endp, size_t *ndigits, int base, int flags);
7941 VALUE rb_arith_seq_new(VALUE obj, VALUE meth, int argc, VALUE const *argv,
7942 rb_enumerator_size_func *size_fn,
7943 VALUE beg, VALUE end, VALUE step, int excl);
7944 int rb_bug_reporter_add(void (*func)(FILE *, void *), void *data);
7945 __attribute__ ((__noreturn__)) void rb_unexpected_type(VALUE,int);
7946 #undef Check_Type
7947 #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)
7948 static inline int
7949 rb_typeddata_is_instance_of_inline(VALUE obj, const rb_data_type_t *data_type)
7950 {
7951 return ( ((RUBY_T_DATA) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_DATA) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_DATA) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_DATA) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_DATA) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_DATA) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_DATA) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_DATA))) && (((struct RTypedData*)(obj))->typed_flag == 1) && ((((struct RTypedData*)(obj))->type) == data_type);
7952 }
7953 #define rb_typeddata_is_instance_of rb_typeddata_is_instance_of_inline
7954 VALUE rb_hash_delete_entry(VALUE hash, VALUE key);
7955 VALUE rb_ident_hash_new(void);
7956 void rb_maygvl_fd_fix_cloexec(int fd);
7957 int rb_gc_for_fd(int err);
7958 void rb_write_error_str(VALUE mesg);
7959 VALUE rb_int_positive_pow(long x, unsigned long y);
7960 int rb_opts_exception_p(VALUE opts, int default_value);
7961 int rb_exec_async_signal_safe(const struct rb_execarg *e, char *errmsg, size_t errmsg_buflen);
7962 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);
7963 VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt);
7964 struct rb_execarg *rb_execarg_get(VALUE execarg_obj);
7965 int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val);
7966 void rb_execarg_parent_start(VALUE execarg_obj);
7967 void rb_execarg_parent_end(VALUE execarg_obj);
7968 int rb_execarg_run_options(const struct rb_execarg *e, struct rb_execarg *s, char* errmsg, size_t errmsg_buflen);
7969 VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash);
7970 void rb_execarg_setenv(VALUE execarg_obj, VALUE env);
7971 VALUE rb_gcd(VALUE x, VALUE y);
7972 VALUE rb_gcd_normal(VALUE self, VALUE other);
7973 VALUE rb_gcd_gmp(VALUE x, VALUE y);
7974 int rb_grantpt(int fd);
7975 VALUE rb_str_tmp_frozen_acquire(VALUE str);
7976 void rb_str_tmp_frozen_release(VALUE str, VALUE tmp);
7977 VALUE rb_str_upto_each(VALUE, VALUE, int, int (*each)(VALUE, VALUE), VALUE);
7978 VALUE rb_str_upto_endless_each(VALUE, int (*each)(VALUE, VALUE), VALUE);
7979 int ruby_thread_has_gvl_p(void);
7980 void ruby_reset_leap_second_info(void);
7981 extern const signed char ruby_digit36_to_number_table[];
7982 extern const char ruby_hexdigits[];
7983 extern unsigned long ruby_scan_digits(const char *str, ssize_t len, int base, size_t *retlen, int *overflow);
7984 void rb_mark_generic_ivar(VALUE);
7985 void rb_mv_generic_ivar(VALUE src, VALUE dst);
7986 VALUE rb_const_missing(VALUE klass, VALUE name);
7987 int rb_class_ivar_set(VALUE klass, ID vid, VALUE value);
7988 void rb_iv_tbl_copy(VALUE dst, VALUE src);
7989 VALUE rb_wb_protected_newobj_of(VALUE, VALUE);
7990 VALUE rb_wb_unprotected_newobj_of(VALUE, VALUE);
7991 size_t rb_obj_memsize_of(VALUE);
7992 void rb_gc_verify_internal_consistency(void);
7993 #define RB_OBJ_GC_FLAGS_MAX 6
7994 size_t rb_obj_gc_flags(VALUE, ID[], size_t);
7995 void rb_gc_mark_values(long n, const VALUE *values);
7996 void rb_gc_mark_vm_stack_values(long n, const VALUE *values);
7997 VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0);
7998 int ruby_fill_random_bytes(void *, size_t, int);
7999
8000 #pragma GCC visibility pop
8001
8002 #define RUBY_DTRACE_CREATE_HOOK(name,arg) RUBY_DTRACE_HOOK(name ##_CREATE, arg)
8003 #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)
8004 #define RB_OBJ_BUILTIN_TYPE(obj) rb_obj_builtin_type(obj)
8005 #define OBJ_BUILTIN_TYPE(obj) RB_OBJ_BUILTIN_TYPE(obj)
8006 #define rb_obj_builtin_type(obj) __extension__({ VALUE arg_obj = (obj); RB_SPECIAL_CONST_P(arg_obj) ? -1 : RB_BUILTIN_TYPE(arg_obj); })
8007 #define FLEX_ARY_LEN
8008 #define BITFIELD(type,name,size) type name : size
8009 #define COMPILER_WARNING_PUSH _Pragma("GCC diagnostic push")
8010 #define COMPILER_WARNING_POP _Pragma("GCC diagnostic pop")
8011 #define COMPILER_WARNING_SPECIFIER(kind,msg) GCC diagnostic kind #msg
8012 #define COMPILER_WARNING_ERROR(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(error, flag))
8013 #define COMPILER_WARNING_IGNORED(flag) COMPILER_WARNING_PRAGMA(COMPILER_WARNING_SPECIFIER(ignored, flag))
8014 #define COMPILER_WARNING_PRAGMA(str) COMPILER_WARNING_PRAGMA_(str)
8015 #define COMPILER_WARNING_PRAGMA_(str) _Pragma(#str)
8016 #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; })
8017 #define UNALIGNED_MEMBER_PTR(ptr,mem) UNALIGNED_MEMBER_ACCESS(&(ptr)->mem)
8018 #undef RB_OBJ_WRITE
8019 #define RB_OBJ_WRITE(a,slot,b) UNALIGNED_MEMBER_ACCESS(rb_obj_write((VALUE)(a), (VALUE *)(slot), (VALUE)(b), __FILE__, __LINE__))
8020 #define RUBY_VM_H 1
8021
8022 #pragma GCC visibility push(default)
8023
8024 typedef struct rb_vm_struct ruby_vm_t;
8025 int ruby_vm_destruct(ruby_vm_t *vm);
8026 void ruby_vm_at_exit(void(*func)(ruby_vm_t *));
8027
8028 #pragma GCC visibility pop
8029
8030 #define vm_exec rb_vm_exec
8031 #define RUBY_GC_H 1
8032 #define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
8033 #define RUBY_MARK_FREE_DEBUG 0
8034 #define RUBY_MARK_ENTER(msg)
8035 #define RUBY_MARK_LEAVE(msg)
8036 #define RUBY_FREE_ENTER(msg)
8037 #define RUBY_FREE_LEAVE(msg)
8038 #define RUBY_GC_INFO if(0)printf
8039 #define RUBY_MARK_NO_PIN_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark_movable(markobj);} } while (0)
8040 #define RUBY_MARK_UNLESS_NULL(ptr) do { VALUE markobj = (ptr); if (RTEST(markobj)) {rb_gc_mark(markobj);} } while (0)
8041 #define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
8042 #define STACK_UPPER(x,a,b) (b)
8043 #define STACK_GROW_DIR_DETECTION
8044 #define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
8045 #define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
8046 const char *rb_obj_info(VALUE obj);
8047 const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
8048 VALUE rb_gc_disable_no_rest(void);
8049 struct rb_thread_struct;
8050
8051 #pragma GCC visibility push(default)
8052
8053 size_t rb_objspace_data_type_memsize(VALUE obj);
8054 void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
8055 void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
8056 int rb_objspace_markable_object_p(VALUE obj);
8057 int rb_objspace_internal_object_p(VALUE obj);
8058 int rb_objspace_marked_object_p(VALUE obj);
8059 int rb_objspace_garbage_object_p(VALUE obj);
8060 void rb_objspace_each_objects(
8061 int (*callback)(void *start, void *end, size_t stride, void *data),
8062 void *data);
8063 void rb_objspace_each_objects_without_setup(
8064 int (*callback)(void *, void *, size_t, void *),
8065 void *data);
8066
8067 #pragma GCC visibility pop
8068
8069 #define RUBY_VM_CORE_H
8070 #define N_OR_RUBY_DEBUG(n) (((n) > 0) ? (n) : RUBY_DEBUG)
8071 #define VM_CHECK_MODE N_OR_RUBY_DEBUG(0)
8072 #define VMDEBUG 0
8073 #undef assert
8074 #define assert RUBY_ASSERT
8075 #define VM_ASSERT(expr) ((void)0)
8076 #define VM_UNREACHABLE(func) UNREACHABLE
8077 #define RUBY_VM_THREAD_MODEL 2
8078 #define VM_INSN_INFO_TABLE_IMPL 2
8079 #define RUBY_NODE_H 1
8080 enum node_type {
8081 NODE_SCOPE,
8082 NODE_BLOCK,
8083 NODE_IF,
8084 NODE_UNLESS,
8085 NODE_CASE,
8086 NODE_CASE2,
8087 NODE_CASE3,
8088 NODE_WHEN,
8089 NODE_IN,
8090 NODE_WHILE,
8091 NODE_UNTIL,
8092 NODE_ITER,
8093 NODE_FOR,
8094 NODE_FOR_MASGN,
8095 NODE_BREAK,
8096 NODE_NEXT,
8097 NODE_REDO,
8098 NODE_RETRY,
8099 NODE_BEGIN,
8100 NODE_RESCUE,
8101 NODE_RESBODY,
8102 NODE_ENSURE,
8103 NODE_AND,
8104 NODE_OR,
8105 NODE_MASGN,
8106 NODE_LASGN,
8107 NODE_DASGN,
8108 NODE_DASGN_CURR,
8109 NODE_GASGN,
8110 NODE_IASGN,
8111 NODE_CDECL,
8112 NODE_CVASGN,
8113 NODE_OP_ASGN1,
8114 NODE_OP_ASGN2,
8115 NODE_OP_ASGN_AND,
8116 NODE_OP_ASGN_OR,
8117 NODE_OP_CDECL,
8118 NODE_CALL,
8119 NODE_OPCALL,
8120 NODE_FCALL,
8121 NODE_VCALL,
8122 NODE_QCALL,
8123 NODE_SUPER,
8124 NODE_ZSUPER,
8125 NODE_LIST,
8126 NODE_ZLIST,
8127 NODE_VALUES,
8128 NODE_HASH,
8129 NODE_RETURN,
8130 NODE_YIELD,
8131 NODE_LVAR,
8132 NODE_DVAR,
8133 NODE_GVAR,
8134 NODE_IVAR,
8135 NODE_CONST,
8136 NODE_CVAR,
8137 NODE_NTH_REF,
8138 NODE_BACK_REF,
8139 NODE_MATCH,
8140 NODE_MATCH2,
8141 NODE_MATCH3,
8142 NODE_LIT,
8143 NODE_STR,
8144 NODE_DSTR,
8145 NODE_XSTR,
8146 NODE_DXSTR,
8147 NODE_EVSTR,
8148 NODE_DREGX,
8149 NODE_ONCE,
8150 NODE_ARGS,
8151 NODE_ARGS_AUX,
8152 NODE_OPT_ARG,
8153 NODE_KW_ARG,
8154 NODE_POSTARG,
8155 NODE_ARGSCAT,
8156 NODE_ARGSPUSH,
8157 NODE_SPLAT,
8158 NODE_BLOCK_PASS,
8159 NODE_DEFN,
8160 NODE_DEFS,
8161 NODE_ALIAS,
8162 NODE_VALIAS,
8163 NODE_UNDEF,
8164 NODE_CLASS,
8165 NODE_MODULE,
8166 NODE_SCLASS,
8167 NODE_COLON2,
8168 NODE_COLON3,
8169 NODE_DOT2,
8170 NODE_DOT3,
8171 NODE_FLIP2,
8172 NODE_FLIP3,
8173 NODE_SELF,
8174 NODE_NIL,
8175 NODE_TRUE,
8176 NODE_FALSE,
8177 NODE_ERRINFO,
8178 NODE_DEFINED,
8179 NODE_POSTEXE,
8180 NODE_DSYM,
8181 NODE_ATTRASGN,
8182 NODE_LAMBDA,
8183 NODE_ARYPTN,
8184 NODE_HSHPTN,
8185 NODE_LAST
8186 };
8187 typedef struct rb_code_position_struct {
8188 int lineno;
8189 int column;
8190 } rb_code_position_t;
8191 typedef struct rb_code_location_struct {
8192 rb_code_position_t beg_pos;
8193 rb_code_position_t end_pos;
8194 } rb_code_location_t;
8195 static inline rb_code_location_t
8196 code_loc_gen(rb_code_location_t *loc1, rb_code_location_t *loc2)
8197 {
8198 rb_code_location_t loc;
8199 loc.beg_pos = loc1->beg_pos;
8200 loc.end_pos = loc2->end_pos;
8201 return loc;
8202 }
8203 typedef struct RNode {
8204 VALUE flags;
8205 union {
8206 struct RNode *node;
8207 ID id;
8208 VALUE value;
8209 ID *tbl;
8210 } u1;
8211 union {
8212 struct RNode *node;
8213 ID id;
8214 long argc;
8215 VALUE value;
8216 } u2;
8217 union {
8218 struct RNode *node;
8219 ID id;
8220 long state;
8221 struct rb_global_entry *entry;
8222 struct rb_args_info *args;
8223 struct rb_ary_pattern_info *apinfo;
8224 VALUE value;
8225 } u3;
8226 rb_code_location_t nd_loc;
8227 int node_id;
8228 } NODE;
8229 #define RNODE(obj) (R_CAST(RNode)(obj))
8230 #define NODE_FL_NEWLINE (((VALUE)1)<<7)
8231 #define NODE_TYPESHIFT 8
8232 #define NODE_TYPEMASK (((VALUE)0x7f)<<NODE_TYPESHIFT)
8233 #define nd_type(n) ((int) (((n)->flags & NODE_TYPEMASK)>>NODE_TYPESHIFT))
8234 #define nd_set_type(n,t) (n)->flags=(((n)->flags&~NODE_TYPEMASK)|((((unsigned long)(t))<<NODE_TYPESHIFT)&NODE_TYPEMASK))
8235 #define NODE_LSHIFT (NODE_TYPESHIFT+7)
8236 #define NODE_LMASK (((SIGNED_VALUE)1<<(sizeof(VALUE)*CHAR_BIT-NODE_LSHIFT))-1)
8237 #define nd_line(n) (int)(((SIGNED_VALUE)(n)->flags)>>NODE_LSHIFT)
8238 #define nd_set_line(n,l) (n)->flags=(((n)->flags&~((VALUE)(-1)<<NODE_LSHIFT))|((VALUE)((l)&NODE_LMASK)<<NODE_LSHIFT))
8239 #define nd_first_column(n) ((int)((n)->nd_loc.beg_pos.column))
8240 #define nd_set_first_column(n,v) ((n)->nd_loc.beg_pos.column = (v))
8241 #define nd_first_lineno(n) ((int)((n)->nd_loc.beg_pos.lineno))
8242 #define nd_set_first_lineno(n,v) ((n)->nd_loc.beg_pos.lineno = (v))
8243 #define nd_first_loc(n) ((n)->nd_loc.beg_pos)
8244 #define nd_set_first_loc(n,v) (nd_first_loc(n) = (v))
8245 #define nd_last_column(n) ((int)((n)->nd_loc.end_pos.column))
8246 #define nd_set_last_column(n,v) ((n)->nd_loc.end_pos.column = (v))
8247 #define nd_last_lineno(n) ((int)((n)->nd_loc.end_pos.lineno))
8248 #define nd_set_last_lineno(n,v) ((n)->nd_loc.end_pos.lineno = (v))
8249 #define nd_last_loc(n) ((n)->nd_loc.end_pos)
8250 #define nd_set_last_loc(n,v) (nd_last_loc(n) = (v))
8251 #define nd_node_id(n) ((n)->node_id)
8252 #define nd_set_node_id(n,id) ((n)->node_id = (id))
8253 #define nd_head u1.node
8254 #define nd_alen u2.argc
8255 #define nd_next u3.node
8256 #define nd_cond u1.node
8257 #define nd_body u2.node
8258 #define nd_else u3.node
8259 #define nd_resq u2.node
8260 #define nd_ensr u3.node
8261 #define nd_1st u1.node
8262 #define nd_2nd u2.node
8263 #define nd_stts u1.node
8264 #define nd_entry u3.entry
8265 #define nd_vid u1.id
8266 #define nd_cflag u2.id
8267 #define nd_cval u3.value
8268 #define nd_oid u1.id
8269 #define nd_tbl u1.tbl
8270 #define nd_var u1.node
8271 #define nd_iter u3.node
8272 #define nd_value u2.node
8273 #define nd_aid u3.id
8274 #define nd_lit u1.value
8275 #define nd_rest u1.id
8276 #define nd_opt u1.node
8277 #define nd_pid u1.id
8278 #define nd_plen u2.argc
8279 #define nd_recv u1.node
8280 #define nd_mid u2.id
8281 #define nd_args u3.node
8282 #define nd_ainfo u3.args
8283 #define nd_defn u3.node
8284 #define nd_cpath u1.node
8285 #define nd_super u3.node
8286 #define nd_beg u1.node
8287 #define nd_end u2.node
8288 #define nd_state u3.state
8289 #define nd_rval u2.value
8290 #define nd_nth u2.argc
8291 #define nd_tag u1.id
8292 #define nd_alias u1.id
8293 #define nd_orig u2.id
8294 #define nd_undef u2.node
8295 #define nd_brace u2.argc
8296 #define nd_pconst u1.node
8297 #define nd_pkwargs u2.node
8298 #define nd_pkwrestarg u3.node
8299 #define nd_apinfo u3.apinfo
8300 #define NEW_NODE(t,a0,a1,a2,loc) rb_node_newnode((t),(VALUE)(a0),(VALUE)(a1),(VALUE)(a2),loc)
8301 #define NEW_NODE_WITH_LOCALS(t,a1,a2,loc) node_newnode_with_locals(p, (t),(VALUE)(a1),(VALUE)(a2),loc)
8302 #define NEW_DEFN(i,a,d,loc) NEW_NODE(NODE_DEFN,0,i,NEW_SCOPE(a,d,loc),loc)
8303 #define NEW_DEFS(r,i,a,d,loc) NEW_NODE(NODE_DEFS,r,i,NEW_SCOPE(a,d,loc),loc)
8304 #define NEW_SCOPE(a,b,loc) NEW_NODE_WITH_LOCALS(NODE_SCOPE,b,a,loc)
8305 #define NEW_BLOCK(a,loc) NEW_NODE(NODE_BLOCK,a,0,0,loc)
8306 #define NEW_IF(c,t,e,loc) NEW_NODE(NODE_IF,c,t,e,loc)
8307 #define NEW_UNLESS(c,t,e,loc) NEW_NODE(NODE_UNLESS,c,t,e,loc)
8308 #define NEW_CASE(h,b,loc) NEW_NODE(NODE_CASE,h,b,0,loc)
8309 #define NEW_CASE2(b,loc) NEW_NODE(NODE_CASE2,0,b,0,loc)
8310 #define NEW_CASE3(h,b,loc) NEW_NODE(NODE_CASE3,h,b,0,loc)
8311 #define NEW_WHEN(c,t,e,loc) NEW_NODE(NODE_WHEN,c,t,e,loc)
8312 #define NEW_IN(c,t,e,loc) NEW_NODE(NODE_IN,c,t,e,loc)
8313 #define NEW_WHILE(c,b,n,loc) NEW_NODE(NODE_WHILE,c,b,n,loc)
8314 #define NEW_UNTIL(c,b,n,loc) NEW_NODE(NODE_UNTIL,c,b,n,loc)
8315 #define NEW_FOR(i,b,loc) NEW_NODE(NODE_FOR,0,b,i,loc)
8316 #define NEW_FOR_MASGN(v,loc) NEW_NODE(NODE_FOR_MASGN,v,0,0,loc)
8317 #define NEW_ITER(a,b,loc) NEW_NODE(NODE_ITER,0,NEW_SCOPE(a,b,loc),0,loc)
8318 #define NEW_LAMBDA(a,b,loc) NEW_NODE(NODE_LAMBDA,0,NEW_SCOPE(a,b,loc),0,loc)
8319 #define NEW_BREAK(s,loc) NEW_NODE(NODE_BREAK,s,0,0,loc)
8320 #define NEW_NEXT(s,loc) NEW_NODE(NODE_NEXT,s,0,0,loc)
8321 #define NEW_REDO(loc) NEW_NODE(NODE_REDO,0,0,0,loc)
8322 #define NEW_RETRY(loc) NEW_NODE(NODE_RETRY,0,0,0,loc)
8323 #define NEW_BEGIN(b,loc) NEW_NODE(NODE_BEGIN,0,b,0,loc)
8324 #define NEW_RESCUE(b,res,e,loc) NEW_NODE(NODE_RESCUE,b,res,e,loc)
8325 #define NEW_RESBODY(a,ex,n,loc) NEW_NODE(NODE_RESBODY,n,ex,a,loc)
8326 #define NEW_ENSURE(b,en,loc) NEW_NODE(NODE_ENSURE,b,0,en,loc)
8327 #define NEW_RETURN(s,loc) NEW_NODE(NODE_RETURN,s,0,0,loc)
8328 #define NEW_YIELD(a,loc) NEW_NODE(NODE_YIELD,a,0,0,loc)
8329 #define NEW_LIST(a,loc) NEW_NODE(NODE_LIST,a,1,0,loc)
8330 #define NEW_ZLIST(loc) NEW_NODE(NODE_ZLIST,0,0,0,loc)
8331 #define NEW_HASH(a,loc) NEW_NODE(NODE_HASH,a,0,0,loc)
8332 #define NEW_MASGN(l,r,loc) NEW_NODE(NODE_MASGN,l,0,r,loc)
8333 #define NEW_GASGN(v,val,loc) NEW_NODE(NODE_GASGN,v,val,rb_global_entry(v),loc)
8334 #define NEW_LASGN(v,val,loc) NEW_NODE(NODE_LASGN,v,val,0,loc)
8335 #define NEW_DASGN(v,val,loc) NEW_NODE(NODE_DASGN,v,val,0,loc)
8336 #define NEW_DASGN_CURR(v,val,loc) NEW_NODE(NODE_DASGN_CURR,v,val,0,loc)
8337 #define NEW_IASGN(v,val,loc) NEW_NODE(NODE_IASGN,v,val,0,loc)
8338 #define NEW_CDECL(v,val,path,loc) NEW_NODE(NODE_CDECL,v,val,path,loc)
8339 #define NEW_CVASGN(v,val,loc) NEW_NODE(NODE_CVASGN,v,val,0,loc)
8340 #define NEW_OP_ASGN1(p,id,a,loc) NEW_NODE(NODE_OP_ASGN1,p,id,a,loc)
8341 #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)
8342 #define NEW_OP_ASGN22(i,o,t,loc) NEW_NODE(NODE_OP_ASGN2,i,o,t,loc)
8343 #define NEW_OP_ASGN_OR(i,val,loc) NEW_NODE(NODE_OP_ASGN_OR,i,val,0,loc)
8344 #define NEW_OP_ASGN_AND(i,val,loc) NEW_NODE(NODE_OP_ASGN_AND,i,val,0,loc)
8345 #define NEW_OP_CDECL(v,op,val,loc) NEW_NODE(NODE_OP_CDECL,v,val,op,loc)
8346 #define NEW_GVAR(v,loc) NEW_NODE(NODE_GVAR,v,0,rb_global_entry(v),loc)
8347 #define NEW_LVAR(v,loc) NEW_NODE(NODE_LVAR,v,0,0,loc)
8348 #define NEW_DVAR(v,loc) NEW_NODE(NODE_DVAR,v,0,0,loc)
8349 #define NEW_IVAR(v,loc) NEW_NODE(NODE_IVAR,v,0,0,loc)
8350 #define NEW_CONST(v,loc) NEW_NODE(NODE_CONST,v,0,0,loc)
8351 #define NEW_CVAR(v,loc) NEW_NODE(NODE_CVAR,v,0,0,loc)
8352 #define NEW_NTH_REF(n,loc) NEW_NODE(NODE_NTH_REF,0,n,0,loc)
8353 #define NEW_BACK_REF(n,loc) NEW_NODE(NODE_BACK_REF,0,n,0,loc)
8354 #define NEW_MATCH(c,loc) NEW_NODE(NODE_MATCH,c,0,0,loc)
8355 #define NEW_MATCH2(n1,n2,loc) NEW_NODE(NODE_MATCH2,n1,n2,0,loc)
8356 #define NEW_MATCH3(r,n2,loc) NEW_NODE(NODE_MATCH3,r,n2,0,loc)
8357 #define NEW_LIT(l,loc) NEW_NODE(NODE_LIT,l,0,0,loc)
8358 #define NEW_STR(s,loc) NEW_NODE(NODE_STR,s,0,0,loc)
8359 #define NEW_DSTR(s,loc) NEW_NODE(NODE_DSTR,s,1,0,loc)
8360 #define NEW_XSTR(s,loc) NEW_NODE(NODE_XSTR,s,0,0,loc)
8361 #define NEW_DXSTR(s,loc) NEW_NODE(NODE_DXSTR,s,0,0,loc)
8362 #define NEW_DSYM(s,loc) NEW_NODE(NODE_DSYM,s,0,0,loc)
8363 #define NEW_EVSTR(n,loc) NEW_NODE(NODE_EVSTR,0,(n),0,loc)
8364 #define NEW_CALL(r,m,a,loc) NEW_NODE(NODE_CALL,r,m,a,loc)
8365 #define NEW_OPCALL(r,m,a,loc) NEW_NODE(NODE_OPCALL,r,m,a,loc)
8366 #define NEW_FCALL(m,a,loc) NEW_NODE(NODE_FCALL,0,m,a,loc)
8367 #define NEW_VCALL(m,loc) NEW_NODE(NODE_VCALL,0,m,0,loc)
8368 #define NEW_SUPER(a,loc) NEW_NODE(NODE_SUPER,0,0,a,loc)
8369 #define NEW_ZSUPER(loc) NEW_NODE(NODE_ZSUPER,0,0,0,loc)
8370 #define NEW_ARGS_AUX(r,b,loc) NEW_NODE(NODE_ARGS_AUX,r,b,0,loc)
8371 #define NEW_OPT_ARG(i,v,loc) NEW_NODE(NODE_OPT_ARG,i,v,0,loc)
8372 #define NEW_KW_ARG(i,v,loc) NEW_NODE(NODE_KW_ARG,i,v,0,loc)
8373 #define NEW_POSTARG(i,v,loc) NEW_NODE(NODE_POSTARG,i,v,0,loc)
8374 #define NEW_ARGSCAT(a,b,loc) NEW_NODE(NODE_ARGSCAT,a,b,0,loc)
8375 #define NEW_ARGSPUSH(a,b,loc) NEW_NODE(NODE_ARGSPUSH,a,b,0,loc)
8376 #define NEW_SPLAT(a,loc) NEW_NODE(NODE_SPLAT,a,0,0,loc)
8377 #define NEW_BLOCK_PASS(b,loc) NEW_NODE(NODE_BLOCK_PASS,0,b,0,loc)
8378 #define NEW_ALIAS(n,o,loc) NEW_NODE(NODE_ALIAS,n,o,0,loc)
8379 #define NEW_VALIAS(n,o,loc) NEW_NODE(NODE_VALIAS,n,o,0,loc)
8380 #define NEW_UNDEF(i,loc) NEW_NODE(NODE_UNDEF,0,i,0,loc)
8381 #define NEW_CLASS(n,b,s,loc) NEW_NODE(NODE_CLASS,n,NEW_SCOPE(0,b,loc),(s),loc)
8382 #define NEW_SCLASS(r,b,loc) NEW_NODE(NODE_SCLASS,r,NEW_SCOPE(0,b,loc),0,loc)
8383 #define NEW_MODULE(n,b,loc) NEW_NODE(NODE_MODULE,n,NEW_SCOPE(0,b,loc),0,loc)
8384 #define NEW_COLON2(c,i,loc) NEW_NODE(NODE_COLON2,c,i,0,loc)
8385 #define NEW_COLON3(i,loc) NEW_NODE(NODE_COLON3,0,i,0,loc)
8386 #define NEW_DOT2(b,e,loc) NEW_NODE(NODE_DOT2,b,e,0,loc)
8387 #define NEW_DOT3(b,e,loc) NEW_NODE(NODE_DOT3,b,e,0,loc)
8388 #define NEW_SELF(loc) NEW_NODE(NODE_SELF,0,0,1,loc)
8389 #define NEW_NIL(loc) NEW_NODE(NODE_NIL,0,0,0,loc)
8390 #define NEW_TRUE(loc) NEW_NODE(NODE_TRUE,0,0,0,loc)
8391 #define NEW_FALSE(loc) NEW_NODE(NODE_FALSE,0,0,0,loc)
8392 #define NEW_ERRINFO(loc) NEW_NODE(NODE_ERRINFO,0,0,0,loc)
8393 #define NEW_DEFINED(e,loc) NEW_NODE(NODE_DEFINED,e,0,0,loc)
8394 #define NEW_PREEXE(b,loc) NEW_SCOPE(b,loc)
8395 #define NEW_POSTEXE(b,loc) NEW_NODE(NODE_POSTEXE,0,b,0,loc)
8396 #define NEW_ATTRASGN(r,m,a,loc) NEW_NODE(NODE_ATTRASGN,r,m,a,loc)
8397 #define NODE_SPECIAL_REQUIRED_KEYWORD ((NODE *)-1)
8398 #define NODE_REQUIRED_KEYWORD_P(node) ((node)->nd_value == NODE_SPECIAL_REQUIRED_KEYWORD)
8399 #define NODE_SPECIAL_NO_NAME_REST ((NODE *)-1)
8400 #define NODE_NAMED_REST_P(node) ((node) != NODE_SPECIAL_NO_NAME_REST)
8401 #define NODE_SPECIAL_EXCESSIVE_COMMA ((ID)1)
8402 #define NODE_SPECIAL_NO_REST_KEYWORD ((NODE *)-1)
8403 VALUE rb_node_case_when_optimizable_literal(const NODE *const node);
8404
8405 #pragma GCC visibility push(default)
8406
8407 typedef struct node_buffer_struct node_buffer_t;
8408 typedef struct rb_ast_body_struct {
8409 const NODE *root;
8410 VALUE compile_option;
8411 int line_count;
8412 } rb_ast_body_t;
8413 typedef struct rb_ast_struct {
8414 VALUE flags;
8415 node_buffer_t *node_buffer;
8416 rb_ast_body_t body;
8417 } rb_ast_t;
8418 rb_ast_t *rb_ast_new(void);
8419 void rb_ast_mark(rb_ast_t*);
8420 void rb_ast_update_references(rb_ast_t*);
8421 void rb_ast_dispose(rb_ast_t*);
8422 void rb_ast_free(rb_ast_t*);
8423 size_t rb_ast_memsize(const rb_ast_t*);
8424 void rb_ast_add_mark_object(rb_ast_t*, VALUE);
8425 NODE *rb_ast_newnode(rb_ast_t*, enum node_type type);
8426 void rb_ast_delete_node(rb_ast_t*, NODE *n);
8427 VALUE rb_parser_new(void);
8428 VALUE rb_parser_end_seen_p(VALUE);
8429 VALUE rb_parser_encoding(VALUE);
8430 VALUE rb_parser_set_yydebug(VALUE, VALUE);
8431 VALUE rb_parser_dump_tree(const NODE *node, int comment);
8432 void rb_parser_set_options(VALUE, int, int, int, int);
8433 rb_ast_t *rb_parser_compile_string(VALUE, const char*, VALUE, int);
8434 rb_ast_t *rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line);
8435 rb_ast_t *rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line);
8436 rb_ast_t *rb_parser_compile_generic(VALUE vparser, VALUE (*lex_gets)(VALUE, int), VALUE fname, VALUE input, int line);
8437 void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2);
8438 const char *ruby_node_name(int node);
8439 const struct kwtable *rb_reserved_word(const char *, unsigned int);
8440 struct rb_args_info {
8441 NODE *pre_init;
8442 NODE *post_init;
8443 int pre_args_num;
8444 int post_args_num;
8445 ID first_post_arg;
8446 ID rest_arg;
8447 ID block_arg;
8448 NODE *kw_args;
8449 NODE *kw_rest_arg;
8450 NODE *opt_args;
8451 unsigned int no_kwarg: 1;
8452 unsigned int ruby2_keywords: 1;
8453 VALUE imemo;
8454 };
8455 struct rb_ary_pattern_info {
8456 NODE *pre_args;
8457 NODE *rest_arg;
8458 NODE *post_args;
8459 VALUE imemo;
8460 };
8461 struct parser_params;
8462 void *rb_parser_malloc(struct parser_params *, size_t);
8463 void *rb_parser_realloc(struct parser_params *, void *, size_t);
8464 void *rb_parser_calloc(struct parser_params *, size_t, size_t);
8465 void rb_parser_free(struct parser_params *, void *);
8466 void rb_parser_printf(struct parser_params *parser, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
8467
8468 #pragma GCC visibility pop
8469
8470 #define RUBY_VM_OPTS_H
8471 #define OPT_TAILCALL_OPTIMIZATION 0
8472 #define OPT_PEEPHOLE_OPTIMIZATION 1
8473 #define OPT_SPECIALISED_INSTRUCTION 1
8474 #define OPT_INLINE_CONST_CACHE 1
8475 #define OPT_FROZEN_STRING_LITERAL 0
8476 #define OPT_DEBUG_FROZEN_STRING_LITERAL 0
8477 #define OPT_THREADED_CODE 0
8478 #define OPT_DIRECT_THREADED_CODE (OPT_THREADED_CODE == 0)
8479 #define OPT_TOKEN_THREADED_CODE (OPT_THREADED_CODE == 1)
8480 #define OPT_CALL_THREADED_CODE (OPT_THREADED_CODE == 2)
8481 #define OPT_CHECKED_RUN 1
8482 #define OPT_INLINE_METHOD_CACHE 1
8483 #define OPT_GLOBAL_METHOD_CACHE 1
8484 #define OPT_BLOCKINLINING 0
8485 #define OPT_IC_FOR_IVAR 1
8486 #define OPT_OPERANDS_UNIFICATION 1
8487 #define OPT_INSTRUCTIONS_UNIFICATION 0
8488 #define OPT_UNIFY_ALL_COMBINATION 0
8489 #define OPT_STACK_CACHING 0
8490 #define OPT_SUPPORT_JOKE 0
8491 #define VM_COLLECT_USAGE_DETAILS 0
8492 #define RUBY_ID_H
8493 enum ruby_id_types {
8494 RUBY_ID_STATIC_SYM = 0x01,
8495 RUBY_ID_LOCAL = 0x00,
8496 RUBY_ID_INSTANCE = (0x01<<1),
8497 RUBY_ID_GLOBAL = (0x03<<1),
8498 RUBY_ID_ATTRSET = (0x04<<1),
8499 RUBY_ID_CONST = (0x05<<1),
8500 RUBY_ID_CLASS = (0x06<<1),
8501 RUBY_ID_JUNK = (0x07<<1),
8502 RUBY_ID_INTERNAL = RUBY_ID_JUNK,
8503 RUBY_ID_SCOPE_SHIFT = 4,
8504 RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
8505 };
8506 #define ID_STATIC_SYM RUBY_ID_STATIC_SYM
8507 #define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
8508 #define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
8509 #define ID_LOCAL RUBY_ID_LOCAL
8510 #define ID_INSTANCE RUBY_ID_INSTANCE
8511 #define ID_GLOBAL RUBY_ID_GLOBAL
8512 #define ID_ATTRSET RUBY_ID_ATTRSET
8513 #define ID_CONST RUBY_ID_CONST
8514 #define ID_CLASS RUBY_ID_CLASS
8515 #define ID_JUNK RUBY_ID_JUNK
8516 #define ID_INTERNAL RUBY_ID_INTERNAL
8517 #define symIFUNC ID2SYM(idIFUNC)
8518 #define symCFUNC ID2SYM(idCFUNC)
8519 #define RUBY_TOKEN_DOT2 128
8520 #define RUBY_TOKEN_DOT3 129
8521 #define RUBY_TOKEN_BDOT2 130
8522 #define RUBY_TOKEN_BDOT3 131
8523 #define RUBY_TOKEN_UPLUS 132
8524 #define RUBY_TOKEN_UMINUS 133
8525 #define RUBY_TOKEN_POW 134
8526 #define RUBY_TOKEN_CMP 135
8527 #define RUBY_TOKEN_LSHFT 136
8528 #define RUBY_TOKEN_RSHFT 137
8529 #define RUBY_TOKEN_LEQ 138
8530 #define RUBY_TOKEN_GEQ 139
8531 #define RUBY_TOKEN_EQ 140
8532 #define RUBY_TOKEN_EQQ 141
8533 #define RUBY_TOKEN_NEQ 142
8534 #define RUBY_TOKEN_MATCH 143
8535 #define RUBY_TOKEN_NMATCH 144
8536 #define RUBY_TOKEN_AREF 145
8537 #define RUBY_TOKEN_ASET 146
8538 #define RUBY_TOKEN_COLON2 147
8539 #define RUBY_TOKEN_ANDOP 148
8540 #define RUBY_TOKEN_OROP 149
8541 #define RUBY_TOKEN_ANDDOT 150
8542 #define RUBY_TOKEN(t) RUBY_TOKEN_ ##t
8543 #define RUBY_TOKEN2ID_TYPE(tok,type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
8544 #define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
8545 #define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
8546 #define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
8547 #define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
8548 #define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
8549 #define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
8550 enum ruby_method_ids {
8551 idDot2 = 128,
8552 idDot3 = 129,
8553 idUPlus = 132,
8554 idUMinus = 133,
8555 idPow = 134,
8556 idCmp = 135,
8557 idPLUS = '+',
8558 idMINUS = '-',
8559 idMULT = '*',
8560 idDIV = '/',
8561 idMOD = '%',
8562 idLTLT = 136,
8563 idGTGT = 137,
8564 idLT = '<',
8565 idLE = 138,
8566 idGT = '>',
8567 idGE = 139,
8568 idEq = 140,
8569 idEqq = 141,
8570 idNeq = 142,
8571 idNot = '!',
8572 idAnd = '&',
8573 idOr = '|',
8574 idBackquote = '`',
8575 idEqTilde = 143,
8576 idNeqTilde = 144,
8577 idAREF = 145,
8578 idASET = 146,
8579 idCOLON2 = 147,
8580 idANDOP = 148,
8581 idOROP = 149,
8582 idANDDOT = 150,
8583 tPRESERVED_ID_BEGIN = 150,
8584 idNilP,
8585 idNULL,
8586 idEmptyP,
8587 idEqlP,
8588 idRespond_to,
8589 idRespond_to_missing,
8590 idIFUNC,
8591 idCFUNC,
8592 id_core_set_method_alias,
8593 id_core_set_variable_alias,
8594 id_core_undef_method,
8595 id_core_define_method,
8596 id_core_define_singleton_method,
8597 id_core_set_postexe,
8598 id_core_hash_merge_ptr,
8599 id_core_hash_merge_kwd,
8600 id_core_raise,
8601 id_debug_created_info,
8602 tPRESERVED_ID_END,
8603 tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
8604 tMax,
8605 tMin,
8606 tFreeze,
8607 tInspect,
8608 tIntern,
8609 tObject_id,
8610 tConst_missing,
8611 tMethodMissing,
8612 tMethod_added,
8613 tSingleton_method_added,
8614 tMethod_removed,
8615 tSingleton_method_removed,
8616 tMethod_undefined,
8617 tSingleton_method_undefined,
8618 tLength,
8619 tSize,
8620 tGets,
8621 tSucc,
8622 tEach,
8623 tProc,
8624 tLambda,
8625 tSend,
8626 t__send__,
8627 t__attached__,
8628 tInitialize,
8629 tInitialize_copy,
8630 tInitialize_clone,
8631 tInitialize_dup,
8632 tTo_int,
8633 tTo_ary,
8634 tTo_str,
8635 tTo_sym,
8636 tTo_hash,
8637 tTo_proc,
8638 tTo_io,
8639 tTo_a,
8640 tTo_s,
8641 tTo_i,
8642 tTo_f,
8643 tTo_r,
8644 tBt,
8645 tBt_locations,
8646 tCall,
8647 tMesg,
8648 tException,
8649 tLocals,
8650 tNOT,
8651 tAND,
8652 tOR,
8653 tDiv,
8654 tDivmod,
8655 tFdiv,
8656 tQuo,
8657 tName,
8658 tNil,
8659 tUScore,
8660 tNUMPARAM_1,
8661 tNUMPARAM_2,
8662 tNUMPARAM_3,
8663 tNUMPARAM_4,
8664 tNUMPARAM_5,
8665 tNUMPARAM_6,
8666 tNUMPARAM_7,
8667 tNUMPARAM_8,
8668 tNUMPARAM_9,
8669 tTOKEN_LOCAL_END,
8670 tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
8671 tTOKEN_INSTANCE_END,
8672 tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
8673 tLASTLINE,
8674 tBACKREF,
8675 tERROR_INFO,
8676 tTOKEN_GLOBAL_END,
8677 tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
8678 tTOKEN_CONST_END,
8679 tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
8680 tTOKEN_CLASS_END,
8681 tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
8682 tTOKEN_ATTRSET_END,
8683 tNEXT_ID = tTOKEN_ATTRSET_END,
8684 #define DEFINE_LOCALID_FROM_TOKEN(n) id ##n = TOKEN2LOCALID(t ##n)
8685 idMax = ((tMax<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8686 idMin = ((tMin<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8687 idFreeze = ((tFreeze<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8688 idInspect = ((tInspect<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8689 idIntern = ((tIntern<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8690 idObject_id = ((tObject_id<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8691 idConst_missing = ((tConst_missing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8692 idMethodMissing = ((tMethodMissing<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8693 idMethod_added = ((tMethod_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8694 idSingleton_method_added = ((tSingleton_method_added<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8695 idMethod_removed = ((tMethod_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8696 idSingleton_method_removed = ((tSingleton_method_removed<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8697 idMethod_undefined = ((tMethod_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8698 idSingleton_method_undefined = ((tSingleton_method_undefined<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8699 idLength = ((tLength<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8700 idSize = ((tSize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8701 idGets = ((tGets<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8702 idSucc = ((tSucc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8703 idEach = ((tEach<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8704 idProc = ((tProc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8705 idLambda = ((tLambda<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8706 idSend = ((tSend<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8707 id__send__ = ((t__send__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8708 id__attached__ = ((t__attached__<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8709 idInitialize = ((tInitialize<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8710 idInitialize_copy = ((tInitialize_copy<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8711 idInitialize_clone = ((tInitialize_clone<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8712 idInitialize_dup = ((tInitialize_dup<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8713 idTo_int = ((tTo_int<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8714 idTo_ary = ((tTo_ary<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8715 idTo_str = ((tTo_str<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8716 idTo_sym = ((tTo_sym<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8717 idTo_hash = ((tTo_hash<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8718 idTo_proc = ((tTo_proc<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8719 idTo_io = ((tTo_io<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8720 idTo_a = ((tTo_a<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8721 idTo_s = ((tTo_s<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8722 idTo_i = ((tTo_i<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8723 idTo_f = ((tTo_f<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8724 idTo_r = ((tTo_r<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8725 idBt = ((tBt<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8726 idBt_locations = ((tBt_locations<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8727 idCall = ((tCall<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8728 idMesg = ((tMesg<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8729 idException = ((tException<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8730 idLocals = ((tLocals<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8731 idNOT = ((tNOT<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8732 idAND = ((tAND<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8733 idOR = ((tOR<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8734 idDiv = ((tDiv<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8735 idDivmod = ((tDivmod<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8736 idFdiv = ((tFdiv<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8737 idQuo = ((tQuo<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8738 idName = ((tName<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8739 idNil = ((tNil<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8740 idUScore = ((tUScore<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8741 idNUMPARAM_1 = ((tNUMPARAM_1<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8742 idNUMPARAM_2 = ((tNUMPARAM_2<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8743 idNUMPARAM_3 = ((tNUMPARAM_3<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8744 idNUMPARAM_4 = ((tNUMPARAM_4<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8745 idNUMPARAM_5 = ((tNUMPARAM_5<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8746 idNUMPARAM_6 = ((tNUMPARAM_6<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8747 idNUMPARAM_7 = ((tNUMPARAM_7<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8748 idNUMPARAM_8 = ((tNUMPARAM_8<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8749 idNUMPARAM_9 = ((tNUMPARAM_9<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_LOCAL|RUBY_ID_STATIC_SYM),
8750 #define DEFINE_INSTANCEID_FROM_TOKEN(n) id ##n = TOKEN2INSTANCEID(t ##n)
8751 #define DEFINE_GLOBALID_FROM_TOKEN(n) id ##n = TOKEN2GLOBALID(t ##n)
8752 idLASTLINE = ((tLASTLINE<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
8753 idBACKREF = ((tBACKREF<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
8754 idERROR_INFO = ((tERROR_INFO<<RUBY_ID_SCOPE_SHIFT)|RUBY_ID_GLOBAL|RUBY_ID_STATIC_SYM),
8755 #define DEFINE_CONSTID_FROM_TOKEN(n) id ##n = TOKEN2CONSTID(t ##n)
8756 #define DEFINE_CLASSID_FROM_TOKEN(n) id ##n = TOKEN2CLASSID(t ##n)
8757 #define DEFINE_ATTRSETID_FROM_TOKEN(n) id ##n = TOKEN2ATTRSETID(t ##n)
8758 tLAST_OP_ID = tPRESERVED_ID_END-1,
8759 idLAST_OP_ID = tLAST_OP_ID >> RUBY_ID_SCOPE_SHIFT
8760 };
8761 #define RUBY_METHOD_H 1
8762 #define END_OF_ENUMERATION(key)
8763 typedef enum {
8764 METHOD_VISI_UNDEF = 0x00,
8765 METHOD_VISI_PUBLIC = 0x01,
8766 METHOD_VISI_PRIVATE = 0x02,
8767 METHOD_VISI_PROTECTED = 0x03,
8768 METHOD_VISI_MASK = 0x03
8769 } rb_method_visibility_t;
8770 typedef struct rb_scope_visi_struct {
8771 rb_method_visibility_t method_visi : 3;
8772 unsigned int module_func : 1;
8773 } rb_scope_visibility_t;
8774 typedef struct rb_cref_struct {
8775 VALUE flags;
8776 VALUE refinements;
8777 VALUE klass;
8778 struct rb_cref_struct * next;
8779 const rb_scope_visibility_t scope_visi;
8780 } rb_cref_t;
8781 typedef struct rb_method_entry_struct {
8782 VALUE flags;
8783 VALUE defined_class;
8784 struct rb_method_definition_struct * const def;
8785 ID called_id;
8786 VALUE owner;
8787 } rb_method_entry_t;
8788 typedef struct rb_callable_method_entry_struct {
8789 VALUE flags;
8790 const VALUE defined_class;
8791 struct rb_method_definition_struct * const def;
8792 ID called_id;
8793 const VALUE owner;
8794 } rb_callable_method_entry_t;
8795 #define METHOD_ENTRY_VISI(me) (rb_method_visibility_t)(((me)->flags & (IMEMO_FL_USER0 | IMEMO_FL_USER1)) >> (IMEMO_FL_USHIFT+0))
8796 #define METHOD_ENTRY_BASIC(me) (int) (((me)->flags & (IMEMO_FL_USER2 )) >> (IMEMO_FL_USHIFT+2))
8797 #define METHOD_ENTRY_COMPLEMENTED(me) ((me)->flags & IMEMO_FL_USER3)
8798 #define METHOD_ENTRY_COMPLEMENTED_SET(me) ((me)->flags = (me)->flags | IMEMO_FL_USER3)
8799 static inline void
8800 METHOD_ENTRY_VISI_SET(rb_method_entry_t *me, rb_method_visibility_t visi)
8801 {
8802 ((void)0);
8803 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) | (visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0));
8804 }
8805 static inline void
8806 METHOD_ENTRY_BASIC_SET(rb_method_entry_t *me, unsigned int basic)
8807 {
8808 ((void)0);
8809 me->flags = (me->flags & ~(((VALUE)RUBY_FL_USER6) )) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2));
8810 }
8811 static inline void
8812 METHOD_ENTRY_FLAGS_SET(rb_method_entry_t *me, rb_method_visibility_t visi, unsigned int basic)
8813 {
8814 ((void)0);
8815 ((void)0);
8816 me->flags =
8817 (me->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8818 ((visi << ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) | (basic << ((((VALUE)RUBY_FL_USHIFT) + 4)+2)));
8819 }
8820 static inline void
8821 METHOD_ENTRY_FLAGS_COPY(rb_method_entry_t *dst, const rb_method_entry_t *src)
8822 {
8823 dst->flags =
8824 (dst->flags & ~(((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6))) |
8825 (src->flags & (((VALUE)RUBY_FL_USER4)|((VALUE)RUBY_FL_USER5)|((VALUE)RUBY_FL_USER6)));
8826 }
8827 typedef enum {
8828 VM_METHOD_TYPE_ISEQ,
8829 VM_METHOD_TYPE_CFUNC,
8830 VM_METHOD_TYPE_ATTRSET,
8831 VM_METHOD_TYPE_IVAR,
8832 VM_METHOD_TYPE_BMETHOD,
8833 VM_METHOD_TYPE_ZSUPER,
8834 VM_METHOD_TYPE_ALIAS,
8835 VM_METHOD_TYPE_UNDEF,
8836 VM_METHOD_TYPE_NOTIMPLEMENTED,
8837 VM_METHOD_TYPE_OPTIMIZED,
8838 VM_METHOD_TYPE_MISSING,
8839 VM_METHOD_TYPE_REFINED,
8840
8841 } rb_method_type_t;
8842 #define VM_METHOD_TYPE_MINIMUM_BITS 4
8843 _Static_assert(VM_METHOD_TYPE_REFINED <= (1<<4), "VM_METHOD_TYPE_MINIMUM_BITS" ": " "VM_METHOD_TYPE_REFINED <= (1<<VM_METHOD_TYPE_MINIMUM_BITS)");
8844 typedef struct rb_iseq_struct rb_iseq_t;
8845 #define rb_iseq_t rb_iseq_t
8846 typedef struct rb_method_iseq_struct {
8847 rb_iseq_t * iseqptr;
8848 rb_cref_t * cref;
8849 } rb_method_iseq_t;
8850 typedef struct rb_method_cfunc_struct {
8851 VALUE (*func)();
8852 VALUE (*invoker)(VALUE recv, int argc, const VALUE *argv, VALUE (*func)());
8853 int argc;
8854 } rb_method_cfunc_t;
8855 typedef struct rb_method_attr_struct {
8856 ID id;
8857 VALUE location;
8858 } rb_method_attr_t;
8859 typedef struct rb_method_alias_struct {
8860 struct rb_method_entry_struct * original_me;
8861 } rb_method_alias_t;
8862 typedef struct rb_method_refined_struct {
8863 struct rb_method_entry_struct * orig_me;
8864 VALUE owner;
8865 } rb_method_refined_t;
8866 typedef struct rb_method_bmethod_struct {
8867 VALUE proc;
8868 struct rb_hook_list_struct *hooks;
8869 } rb_method_bmethod_t;
8870 enum method_optimized_type {
8871 OPTIMIZED_METHOD_TYPE_SEND,
8872 OPTIMIZED_METHOD_TYPE_CALL,
8873 OPTIMIZED_METHOD_TYPE_BLOCK_CALL,
8874 OPTIMIZED_METHOD_TYPE__MAX
8875 };
8876 struct rb_method_definition_struct {
8877 rb_method_type_t type : 4;
8878 int alias_count : 28;
8879 int complemented_count : 28;
8880 union {
8881 rb_method_iseq_t iseq;
8882 rb_method_cfunc_t cfunc;
8883 rb_method_attr_t attr;
8884 rb_method_alias_t alias;
8885 rb_method_refined_t refined;
8886 rb_method_bmethod_t bmethod;
8887 enum method_optimized_type optimize_type;
8888 } body;
8889 ID original_id;
8890 uintptr_t method_serial;
8891 };
8892 typedef struct rb_method_definition_struct rb_method_definition_t;
8893 _Static_assert(__builtin_offsetof (rb_method_definition_t, body)==8, "sizeof_method_def" ": " "offsetof(rb_method_definition_t, body)==8");
8894 #define UNDEFINED_METHOD_ENTRY_P(me) (!(me) || !(me)->def || (me)->def->type == VM_METHOD_TYPE_UNDEF)
8895 #define UNDEFINED_REFINED_METHOD_P(def) ((def)->type == VM_METHOD_TYPE_REFINED && UNDEFINED_METHOD_ENTRY_P((def)->body.refined.orig_me))
8896 void rb_add_method_cfunc(VALUE klass, ID mid, VALUE (*func)(), int argc, rb_method_visibility_t visi);
8897 void rb_add_method_iseq(VALUE klass, ID mid, const rb_iseq_t *iseq, rb_cref_t *cref, rb_method_visibility_t visi);
8898 void rb_add_refined_method_entry(VALUE refined_class, ID mid);
8899 void rb_add_method(VALUE klass, ID mid, rb_method_type_t type, void *option, rb_method_visibility_t visi);
8900 rb_method_entry_t *rb_method_entry_set(VALUE klass, ID mid, const rb_method_entry_t *, rb_method_visibility_t noex);
8901 rb_method_entry_t *rb_method_entry_create(ID called_id, VALUE klass, rb_method_visibility_t visi, const rb_method_definition_t *def);
8902 const rb_method_entry_t *rb_method_entry_at(VALUE obj, ID id);
8903 const rb_method_entry_t *rb_method_entry(VALUE klass, ID id);
8904 const rb_method_entry_t *rb_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class);
8905 const rb_method_entry_t *rb_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
8906 const rb_method_entry_t *rb_resolve_refined_method(VALUE refinements, const rb_method_entry_t *me);
8907
8908 #pragma GCC visibility push(default)
8909
8910 const rb_method_entry_t *rb_resolve_me_location(const rb_method_entry_t *, VALUE[5]);
8911
8912 #pragma GCC visibility pop
8913
8914 const rb_callable_method_entry_t *rb_callable_method_entry(VALUE klass, ID id);
8915 const rb_callable_method_entry_t *rb_callable_method_entry_with_refinements(VALUE klass, ID id, VALUE *defined_class);
8916 const rb_callable_method_entry_t *rb_callable_method_entry_without_refinements(VALUE klass, ID id, VALUE *defined_class);
8917 int rb_method_entry_arity(const rb_method_entry_t *me);
8918 int rb_method_entry_eq(const rb_method_entry_t *m1, const rb_method_entry_t *m2);
8919 st_index_t rb_hash_method_entry(st_index_t hash, const rb_method_entry_t *me);
8920 VALUE rb_method_entry_location(const rb_method_entry_t *me);
8921 void rb_free_method_entry(const rb_method_entry_t *me);
8922 const rb_method_entry_t *rb_method_entry_clone(const rb_method_entry_t *me);
8923 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);
8924 void rb_method_entry_copy(rb_method_entry_t *dst, const rb_method_entry_t *src);
8925 void rb_scope_visibility_set(rb_method_visibility_t);
8926 VALUE rb_unnamed_parameters(int arity);
8927 #define RUBY_ATOMIC_H
8928 typedef unsigned int rb_atomic_t;
8929 #define ATOMIC_SET(var,val) (void)__atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
8930 #define ATOMIC_INC(var) __atomic_fetch_add(&(var), 1, __ATOMIC_SEQ_CST)
8931 #define ATOMIC_DEC(var) __atomic_fetch_sub(&(var), 1, __ATOMIC_SEQ_CST)
8932 #define ATOMIC_OR(var,val) __atomic_fetch_or(&(var), (val), __ATOMIC_SEQ_CST)
8933 #define ATOMIC_EXCHANGE(var,val) __atomic_exchange_n(&(var), (val), __ATOMIC_SEQ_CST)
8934 #define ATOMIC_CAS(var,oldval,newval) RB_GNUC_EXTENSION_BLOCK( __typeof__(var) oldvaldup = (oldval); __atomic_compare_exchange_n(&(var), &oldvaldup, (newval), 0, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST); oldvaldup )
8935 #define ATOMIC_SIZE_ADD(var,val) __atomic_fetch_add(&(var), (val), __ATOMIC_SEQ_CST)
8936 #define ATOMIC_SIZE_SUB(var,val) __atomic_fetch_sub(&(var), (val), __ATOMIC_SEQ_CST)
8937 #define RUBY_ATOMIC_GENERIC_MACRO 1
8938 #define ATOMIC_SIZE_INC(var) ATOMIC_INC(var)
8939 #define ATOMIC_SIZE_DEC(var) ATOMIC_DEC(var)
8940 #define ATOMIC_SIZE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8941 #define ATOMIC_SIZE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
8942 #define ATOMIC_PTR_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8943 #define ATOMIC_PTR_CAS(var,oldval,newval) ATOMIC_CAS(var, oldval, newval)
8944 #define ATOMIC_VALUE_EXCHANGE(var,val) ATOMIC_EXCHANGE(var, val)
8945 #define ATOMIC_VALUE_CAS(var,oldval,val) ATOMIC_CAS(var, oldval, val)
8946 #define CCAN_LIST_H
8947 #undef assert
8948 #define assert(__e) ((__e) ? (void)0 : __assert_func (__FILE__, __LINE__, __ASSERT_FUNC, #__e))
8949 #define __ASSERT_FUNC __func__
8950 void __assert (const char *, int, const char *)
8951 __attribute__ ((__noreturn__));
8952 void __assert_func (const char *, int, const char *, const char *)
8953 __attribute__ ((__noreturn__));
8954 #define static_assert _Static_assert
8955 #define CCAN_STR_H
8956 #define stringify(expr) stringify_1(expr)
8957 #define stringify_1(expr) #expr
8958 #define CCAN_CONTAINER_OF_H
8959 #define CCAN_CHECK_TYPE_H
8960 #define check_type(expr,type) ((typeof(expr) *)0 != (type *)0)
8961 #define check_types_match(expr1,expr2) ((typeof(expr1) *)0 != (typeof(expr2) *)0)
8962 #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))
8963 static inline char *container_of_or_null_(void *member_ptr, size_t offset)
8964 {
8965 return member_ptr ? (char *)member_ptr - offset : ((void *)0);
8966 }
8967 #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))
8968 #define container_off(containing_type,member) offsetof(containing_type, member)
8969 #define container_of_var(member_ptr,container_var,member) container_of(member_ptr, typeof(*container_var), member)
8970 #define container_off_var(var,member) container_off(typeof(*var), member)
8971 struct list_node
8972 {
8973 struct list_node *next, *prev;
8974 };
8975 struct list_head
8976 {
8977 struct list_node n;
8978 };
8979 #define LIST_LOC __FILE__ ":" stringify(__LINE__)
8980 #define list_debug(h,loc) ((void)loc, h)
8981 #define list_debug_node(n,loc) ((void)loc, n)
8982 #define LIST_HEAD_INIT(name) { { &(name).n, &(name).n } }
8983 #define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)
8984 static inline void list_head_init(struct list_head *h)
8985 {
8986 h->n.next = h->n.prev = &h->n;
8987 }
8988 static inline void list_node_init(struct list_node *n)
8989 {
8990 n->next = n->prev = n;
8991 }
8992 #define list_add_after(h,p,n) list_add_after_(h, p, n, LIST_LOC)
8993 static inline void list_add_after_(struct list_head *h,
8994 struct list_node *p,
8995 struct list_node *n,
8996 const char *abortstr)
8997 {
8998 n->next = p->next;
8999 n->prev = p;
9000 p->next->prev = n;
9001 p->next = n;
9002 (void)((void)abortstr, h);
9003 }
9004 #define list_add(h,n) list_add_(h, n, LIST_LOC)
9005 static inline void list_add_(struct list_head *h,
9006 struct list_node *n,
9007 const char *abortstr)
9008 {
9009 list_add_after_(h, &h->n, n, abortstr);
9010 }
9011 #define list_add_before(h,p,n) list_add_before_(h, p, n, LIST_LOC)
9012 static inline void list_add_before_(struct list_head *h,
9013 struct list_node *p,
9014 struct list_node *n,
9015 const char *abortstr)
9016 {
9017 n->next = p;
9018 n->prev = p->prev;
9019 p->prev->next = n;
9020 p->prev = n;
9021 (void)((void)abortstr, h);
9022 }
9023 #define list_add_tail(h,n) list_add_tail_(h, n, LIST_LOC)
9024 static inline void list_add_tail_(struct list_head *h,
9025 struct list_node *n,
9026 const char *abortstr)
9027 {
9028 list_add_before_(h, &h->n, n, abortstr);
9029 }
9030 #define list_empty(h) list_empty_(h, LIST_LOC)
9031 static inline int list_empty_(const struct list_head *h, const char* abortstr)
9032 {
9033 (void)((void)abortstr, h);
9034 return h->n.next == &h->n;
9035 }
9036 #define list_empty_nodebug(h) list_empty(h)
9037 static inline _Bool list_empty_nocheck(const struct list_head *h)
9038 {
9039 return h->n.next == &h->n;
9040 }
9041 #define list_del(n) list_del_(n, LIST_LOC)
9042 static inline void list_del_(struct list_node *n, const char* abortstr)
9043 {
9044 (void)((void)abortstr, n);
9045 n->next->prev = n->prev;
9046 n->prev->next = n->next;
9047 }
9048 #define list_del_init(n) list_del_init_(n, LIST_LOC)
9049 static inline void list_del_init_(struct list_node *n, const char *abortstr)
9050 {
9051 list_del_(n, abortstr);
9052 list_node_init(n);
9053 }
9054 static inline void list_del_from(struct list_head *h, struct list_node *n)
9055 {
9056 ((!list_empty_(h, "../ruby-2.7.0/ccan/list/list.h" ":" "328")) ? (void)0 : __assert_func ("../ruby-2.7.0/ccan/list/list.h", 328, __func__, "!list_empty(h)"));
9057 list_del_(n, "../ruby-2.7.0/ccan/list/list.h" ":" "329");
9058 }
9059 #define list_swap(o,n) list_swap_(o, n, LIST_LOC)
9060 static inline void list_swap_(struct list_node *o,
9061 struct list_node *n,
9062 const char* abortstr)
9063 {
9064 (void)((void)abortstr, o);
9065 *n = *o;
9066 n->next->prev = n;
9067 n->prev->next = n;
9068 }
9069 #define list_entry(n,type,member) container_of(n, type, member)
9070 #define list_top(h,type,member) ((type *)list_top_((h), list_off_(type, member)))
9071 static inline const void *list_top_(const struct list_head *h, size_t off)
9072 {
9073 if (list_empty_(h, "../ruby-2.7.0/ccan/list/list.h" ":" "399"))
9074 return ((void *)0);
9075 return (const char *)h->n.next - off;
9076 }
9077 #define list_pop(h,type,member) ((type *)list_pop_((h), list_off_(type, member)))
9078 static inline const void *list_pop_(const struct list_head *h, size_t off)
9079 {
9080 struct list_node *n;
9081 if (list_empty_(h, "../ruby-2.7.0/ccan/list/list.h" ":" "425"))
9082 return ((void *)0);
9083 n = h->n.next;
9084 list_del_(n, "../ruby-2.7.0/ccan/list/list.h" ":" "428");
9085 return (const char *)n - off;
9086 }
9087 #define list_tail(h,type,member) ((type *)list_tail_((h), list_off_(type, member)))
9088 static inline const void *list_tail_(const struct list_head *h, size_t off)
9089 {
9090 if (list_empty_(h, "../ruby-2.7.0/ccan/list/list.h" ":" "451"))
9091 return ((void *)0);
9092 return (const char *)h->n.prev - off;
9093 }
9094 #define list_for_each(h,i,member) list_for_each_off(h, i, list_off_var_(i, member))
9095 #define list_for_each_rev(h,i,member) list_for_each_rev_off(h, i, list_off_var_(i, member))
9096 #define list_for_each_rev_safe(h,i,nxt,member) list_for_each_rev_safe_off(h, i, nxt, list_off_var_(i, member))
9097 #define list_for_each_safe(h,i,nxt,member) list_for_each_safe_off(h, i, nxt, list_off_var_(i, member))
9098 #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)))
9099 #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)))
9100 #define list_append_list(t,f) list_append_list_(t, f, __FILE__ ":" stringify(__LINE__))
9101 static inline void list_append_list_(struct list_head *to,
9102 struct list_head *from,
9103 const char *abortstr)
9104 {
9105 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
9106 struct list_node *to_tail = ((void)abortstr, to)->n.prev;
9107 to->n.prev = from_tail;
9108 from_tail->next = &to->n;
9109 to_tail->next = &from->n;
9110 from->n.prev = to_tail;
9111 list_del_(&from->n, "../ruby-2.7.0/ccan/list/list.h" ":" "600");
9112 list_head_init(from);
9113 }
9114 #define list_prepend_list(t,f) list_prepend_list_(t, f, LIST_LOC)
9115 static inline void list_prepend_list_(struct list_head *to,
9116 struct list_head *from,
9117 const char *abortstr)
9118 {
9119 struct list_node *from_tail = ((void)abortstr, from)->n.prev;
9120 struct list_node *to_head = ((void)abortstr, to)->n.next;
9121 to->n.next = &from->n;
9122 from->n.prev = &to->n;
9123 to_head->prev = from_tail;
9124 from_tail->next = to_head;
9125 list_del_(&from->n, "../ruby-2.7.0/ccan/list/list.h" ":" "632");
9126 list_head_init(from);
9127 }
9128 #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)))
9129 #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)))
9130 #define list_for_each_off(h,i,off) list_for_each_off_dir_((h),(i),(off),next)
9131 #define list_for_each_rev_off(h,i,off) list_for_each_off_dir_((h),(i),(off),prev)
9132 #define list_for_each_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),next)
9133 #define list_for_each_rev_safe_off(h,i,nxt,off) list_for_each_safe_off_dir_((h),(i),(nxt),(off),prev)
9134 #define list_entry_off(n,type,off) ((type *)list_node_from_off_((n), (off)))
9135 #define list_head_off(h,type,off) ((type *)list_head_off((h), (off)))
9136 #define list_tail_off(h,type,off) ((type *)list_tail_((h), (off)))
9137 #define list_add_off(h,n,off) list_add((h), list_node_from_off_((n), (off)))
9138 #define list_del_off(n,off) list_del(list_node_from_off_((n), (off)))
9139 #define list_del_from_off(h,n,off) list_del_from(h, list_node_from_off_((n), (off)))
9140 static inline void *list_node_to_off_(struct list_node *node, size_t off)
9141 {
9142 return (void *)((char *)node - off);
9143 }
9144 static inline struct list_node *list_node_from_off_(void *ptr, size_t off)
9145 {
9146 return (struct list_node *)((char *)ptr + off);
9147 }
9148 #define list_off_(type,member) (container_off(type, member) + check_type(((type *)0)->member, struct list_node))
9149 #define list_off_var_(var,member) (container_off_var(var, member) + check_type(var->member, struct list_node))
9150 #define list_typeof(var) typeof(var)
9151 static inline void *list_entry_or_null(const struct list_head *h,
9152 const struct list_node *n,
9153 size_t off)
9154 {
9155 if (n == &h->n)
9156 return ((void *)0);
9157 return (char *)n - off;
9158 }
9159 #define RUBY_THREAD_NATIVE_H 1
9160 #define _SCHED_H_
9161 #define _SYS_SCHED_H_
9162 #define SCHED_OTHER 3
9163 #define SCHED_FIFO 1
9164 #define SCHED_RR 2
9165 struct sched_param {
9166 int sched_priority;
9167 };
9168 int sched_setparam(
9169 pid_t __pid,
9170 const struct sched_param *__param
9171 );
9172 int sched_getparam(
9173 pid_t __pid,
9174 struct sched_param *__param
9175 );
9176 int sched_setscheduler(
9177 pid_t __pid,
9178 int __policy,
9179 const struct sched_param *__param
9180 );
9181 int sched_getscheduler(
9182 pid_t __pid
9183 );
9184 int sched_get_priority_max(
9185 int __policy
9186 );
9187 int sched_get_priority_min(
9188 int __policy
9189 );
9190 int sched_rr_get_interval(
9191 pid_t __pid,
9192 struct timespec *__interval
9193 );
9194 int sched_yield( void );
9195 int sched_getcpu(void);
9196 #define _PTHREAD_H
9197 #define PTHREAD_CANCEL_ASYNCHRONOUS 1
9198 #define PTHREAD_CANCEL_ENABLE 0
9199 #define PTHREAD_CANCEL_DEFERRED 0
9200 #define PTHREAD_CANCEL_DISABLE 1
9201 #define PTHREAD_CANCELED ((void *)-1)
9202 #define PTHREAD_COND_INITIALIZER (pthread_cond_t)21
9203 #define PTHREAD_CREATE_DETACHED 1
9204 #define PTHREAD_CREATE_JOINABLE 0
9205 #define PTHREAD_EXPLICIT_SCHED 1
9206 #define PTHREAD_INHERIT_SCHED 0
9207 #define PTHREAD_MUTEX_RECURSIVE 0
9208 #define PTHREAD_MUTEX_ERRORCHECK 1
9209 #define PTHREAD_MUTEX_NORMAL 2
9210 #define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_NORMAL
9211 #define PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP (pthread_mutex_t)18
9212 #define PTHREAD_NORMAL_MUTEX_INITIALIZER_NP (pthread_mutex_t)19
9213 #define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP (pthread_mutex_t)20
9214 #define PTHREAD_MUTEX_INITIALIZER PTHREAD_NORMAL_MUTEX_INITIALIZER_NP
9215 #define PTHREAD_ONCE_INIT { PTHREAD_MUTEX_INITIALIZER, 0 }
9216 #define PTHREAD_PROCESS_SHARED 1
9217 #define PTHREAD_PROCESS_PRIVATE 0
9218 #define PTHREAD_RWLOCK_INITIALIZER (pthread_rwlock_t)22
9219 #define PTHREAD_SCOPE_PROCESS 0
9220 #define PTHREAD_SCOPE_SYSTEM 1
9221 #define PTHREAD_BARRIER_SERIAL_THREAD (-1)
9222 int pthread_atfork (void (*)(void), void (*)(void), void (*)(void));
9223 int pthread_attr_destroy (pthread_attr_t *);
9224 int pthread_attr_getdetachstate (const pthread_attr_t *, int *);
9225 int pthread_attr_getguardsize (const pthread_attr_t *, size_t *);
9226 int pthread_attr_getinheritsched (const pthread_attr_t *, int *);
9227 int pthread_attr_getschedparam (const pthread_attr_t *, struct sched_param *);
9228 int pthread_attr_getschedpolicy (const pthread_attr_t *, int *);
9229 int pthread_attr_getscope (const pthread_attr_t *, int *);
9230 int pthread_attr_init (pthread_attr_t *);
9231 int pthread_attr_setdetachstate (pthread_attr_t *, int);
9232 int pthread_attr_setguardsize (pthread_attr_t *, size_t);
9233 int pthread_attr_setinheritsched (pthread_attr_t *, int);
9234 int pthread_attr_setschedparam (pthread_attr_t *, const struct sched_param *);
9235 int pthread_attr_setschedpolicy (pthread_attr_t *, int);
9236 int pthread_attr_setscope (pthread_attr_t *, int);
9237 int pthread_attr_getstack (const pthread_attr_t *, void **, size_t *);
9238 int pthread_attr_setstack (pthread_attr_t *, void *, size_t);
9239 int pthread_attr_getstacksize (const pthread_attr_t *, size_t *);
9240 int pthread_attr_setstacksize (pthread_attr_t *, size_t);
9241 int pthread_cancel (pthread_t);
9242 typedef void (*__cleanup_routine_type) (void *);
9243 typedef struct _pthread_cleanup_handler
9244 {
9245 __cleanup_routine_type function;
9246 void *arg;
9247 struct _pthread_cleanup_handler *next;
9248 } __pthread_cleanup_handler;
9249 void _pthread_cleanup_push (__pthread_cleanup_handler *handler);
9250 void _pthread_cleanup_pop (int execute);
9251 #define pthread_cleanup_push(_fn,_arg) { __pthread_cleanup_handler __cleanup_handler = { _fn, _arg, NULL }; _pthread_cleanup_push( &__cleanup_handler );
9252 #define pthread_cleanup_pop(_execute) _pthread_cleanup_pop( _execute ); }
9253 int pthread_cond_broadcast (pthread_cond_t *);
9254 int pthread_cond_destroy (pthread_cond_t *);
9255 int pthread_cond_init (pthread_cond_t *, const pthread_condattr_t *);
9256 int pthread_cond_signal (pthread_cond_t *);
9257 int pthread_cond_timedwait (pthread_cond_t *,
9258 pthread_mutex_t *, const struct timespec *);
9259 int pthread_cond_wait (pthread_cond_t *, pthread_mutex_t *);
9260 int pthread_condattr_destroy (pthread_condattr_t *);
9261 int pthread_condattr_getclock (const pthread_condattr_t *, clockid_t *);
9262 int pthread_condattr_getpshared (const pthread_condattr_t *, int *);
9263 int pthread_condattr_init (pthread_condattr_t *);
9264 int pthread_condattr_setclock (pthread_condattr_t *, clockid_t);
9265 int pthread_condattr_setpshared (pthread_condattr_t *, int);
9266 int pthread_barrierattr_init (pthread_barrierattr_t *);
9267 int pthread_barrierattr_setpshared (pthread_barrierattr_t *, int);
9268 int pthread_barrierattr_getpshared (const pthread_barrierattr_t *, int *);
9269 int pthread_barrierattr_destroy (pthread_barrierattr_t *);
9270 int pthread_barrier_init (pthread_barrier_t *,
9271 const pthread_barrierattr_t *, unsigned);
9272 int pthread_barrier_destroy (pthread_barrier_t *);
9273 int pthread_barrier_wait (pthread_barrier_t *);
9274 int pthread_create (pthread_t *, const pthread_attr_t *,
9275 void *(*)(void *), void *);
9276 int pthread_detach (pthread_t);
9277 int pthread_equal (pthread_t, pthread_t);
9278 void pthread_exit (void *) __attribute__ ((__noreturn__));
9279 int pthread_getcpuclockid (pthread_t, clockid_t *);
9280 int pthread_getschedparam (pthread_t, int *, struct sched_param *);
9281 void *pthread_getspecific (pthread_key_t);
9282 int pthread_join (pthread_t, void **);
9283 int pthread_key_create (pthread_key_t *, void (*)(void *));
9284 int pthread_key_delete (pthread_key_t);
9285 int pthread_mutex_destroy (pthread_mutex_t *);
9286 int pthread_mutex_getprioceiling (const pthread_mutex_t *, int *);
9287 int pthread_mutex_init (pthread_mutex_t *, const pthread_mutexattr_t *);
9288 int pthread_mutex_lock (pthread_mutex_t *);
9289 int pthread_mutex_setprioceiling (pthread_mutex_t *, int, int *);
9290 int pthread_mutex_timedlock (pthread_mutex_t *, const struct timespec *);
9291 int pthread_mutex_trylock (pthread_mutex_t *);
9292 int pthread_mutex_unlock (pthread_mutex_t *);
9293 int pthread_mutexattr_destroy (pthread_mutexattr_t *);
9294 int pthread_mutexattr_getprioceiling (const pthread_mutexattr_t *, int *);
9295 int pthread_mutexattr_getprotocol (const pthread_mutexattr_t *, int *);
9296 int pthread_mutexattr_getpshared (const pthread_mutexattr_t *, int *);
9297 int pthread_mutexattr_gettype (const pthread_mutexattr_t *, int *);
9298 int pthread_mutexattr_init (pthread_mutexattr_t *);
9299 int pthread_mutexattr_setprioceiling (pthread_mutexattr_t *, int);
9300 int pthread_mutexattr_setprotocol (pthread_mutexattr_t *, int);
9301 int pthread_mutexattr_setpshared (pthread_mutexattr_t *, int);
9302 int pthread_mutexattr_settype (pthread_mutexattr_t *, int);
9303 int pthread_spin_destroy (pthread_spinlock_t *);
9304 int pthread_spin_init (pthread_spinlock_t *, int);
9305 int pthread_spin_lock (pthread_spinlock_t *);
9306 int pthread_spin_trylock (pthread_spinlock_t *);
9307 int pthread_spin_unlock (pthread_spinlock_t *);
9308 int pthread_rwlock_destroy (pthread_rwlock_t *rwlock);
9309 int pthread_rwlock_init (pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr);
9310 int pthread_rwlock_rdlock (pthread_rwlock_t *rwlock);
9311 int pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlock,
9312 const struct timespec *abstime);
9313 int pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock);
9314 int pthread_rwlock_wrlock (pthread_rwlock_t *rwlock);
9315 int pthread_rwlock_timedwrlock (pthread_rwlock_t *rwlock,
9316 const struct timespec *abstime);
9317 int pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock);
9318 int pthread_rwlock_unlock (pthread_rwlock_t *rwlock);
9319 int pthread_rwlockattr_init (pthread_rwlockattr_t *rwlockattr);
9320 int pthread_rwlockattr_getpshared (const pthread_rwlockattr_t *attr,
9321 int *pshared);
9322 int pthread_rwlockattr_setpshared (pthread_rwlockattr_t *attr, int pshared);
9323 int pthread_rwlockattr_destroy (pthread_rwlockattr_t *rwlockattr);
9324 int pthread_once (pthread_once_t *, void (*)(void));
9325 int pthread_getconcurrency (void);
9326 int pthread_setconcurrency (int);
9327 pthread_t pthread_self (void);
9328 int pthread_setcancelstate (int, int *);
9329 int pthread_setcanceltype (int, int *);
9330 int pthread_setschedparam (pthread_t, int, const struct sched_param *);
9331 int pthread_setschedprio (pthread_t, int);
9332 int pthread_setspecific (pthread_key_t, const void *);
9333 void pthread_testcancel (void);
9334 int pthread_getattr_np (pthread_t, pthread_attr_t *);
9335 int pthread_getname_np (pthread_t, char *, size_t) __attribute__((__nonnull__(2)));
9336 int pthread_setname_np (pthread_t, const char *) __attribute__((__nonnull__(2)));
9337 int pthread_sigqueue (pthread_t *, int, const union sigval);
9338 int pthread_timedjoin_np (pthread_t, void **, const struct timespec *);
9339 int pthread_tryjoin_np (pthread_t, void **);
9340 int pthread_yield (void);
9341 int pthread_suspend (pthread_t);
9342 int pthread_continue (pthread_t);
9343 typedef pthread_t rb_nativethread_id_t;
9344 typedef pthread_mutex_t rb_nativethread_lock_t;
9345
9346 #pragma GCC visibility push(default)
9347
9348 rb_nativethread_id_t rb_nativethread_self();
9349 void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock);
9350 void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock);
9351 void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock);
9352 void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock);
9353
9354 #pragma GCC visibility pop
9355
9356 #define RUBY_THREAD_PTHREAD_H
9357 #define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
9358 #define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
9359 typedef pthread_cond_t rb_nativethread_cond_t;
9360 typedef struct native_thread_data_struct {
9361 union {
9362 struct list_node ubf;
9363 struct list_node gvl;
9364 } node;
9365 struct
9366 {
9367 rb_nativethread_cond_t intr;
9368 rb_nativethread_cond_t gvlq;
9369 } cond;
9370 } native_thread_data_t;
9371 #undef except
9372 #undef try
9373 #undef leave
9374 #undef finally
9375 typedef struct rb_global_vm_lock_struct {
9376 const struct rb_thread_struct *owner;
9377 rb_nativethread_lock_t lock;
9378 struct list_head waitq;
9379 const struct rb_thread_struct *timer;
9380 int timer_err;
9381 rb_nativethread_cond_t switch_cond;
9382 rb_nativethread_cond_t switch_wait_cond;
9383 int need_yield;
9384 int wait_yield;
9385 } rb_global_vm_lock_t;
9386 #define _SETJMP_H_
9387
9388 #define _JBTYPE long
9389 #define _JBLEN 32
9390 typedef long jmp_buf[32];
9391
9392 typedef long sigjmp_buf[32 +1+((sizeof (long) + sizeof (sigset_t) - 1)
9393 /sizeof (long))];
9394 #define _SAVEMASK _JBLEN
9395 #define _SIGMASK (_JBLEN+1)
9396 #define _CYGWIN_WORKING_SIGSETJMP
9397 #define __SIGMASK_FUNC pthread_sigmask
9398 extern void siglongjmp (sigjmp_buf, int) __attribute__ ((__noreturn__));
9399 extern int sigsetjmp (sigjmp_buf, int);
9400 #define sigsetjmp(env,savemask) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((*_sjbuf)[_SAVEMASK] = savemask, __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)), setjmp (*_sjbuf)); })
9401 #define siglongjmp(env,val) __extension__ ({ sigjmp_buf *_sjbuf = &(env); ((((*_sjbuf)[_SAVEMASK]) ? __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0) : 0), longjmp (*_sjbuf, val)); })
9402 extern void _longjmp (jmp_buf, int) __attribute__ ((__noreturn__));
9403 extern int _setjmp (jmp_buf);
9404
9405 void longjmp (jmp_buf __jmpb, int __retval)
9406 __attribute__ ((__noreturn__));
9407 int setjmp (jmp_buf __jmpb);
9408
9409 #define RUBY_NSIG NSIG
9410 #define RUBY_SIGCHLD (SIGCLD)
9411 #define SIGCHLD_LOSSY (0)
9412 #define WAITPID_USE_SIGCHLD (RUBY_SIGCHLD || SIGCHLD_LOSSY)
9413 #define va_init_list(a,b) va_start((a),(b))
9414 #define USE_SIGALTSTACK
9415 void *rb_register_sigaltstack(void);
9416 #define RB_ALTSTACK_INIT(var) var = rb_register_sigaltstack()
9417 #define RB_ALTSTACK_FREE(var) xfree(var)
9418 #define RB_ALTSTACK(var) var
9419 void rb_vm_encoded_insn_data_table_init(void);
9420 typedef unsigned long rb_num_t;
9421 typedef signed long rb_snum_t;
9422 enum ruby_tag_type {
9423 RUBY_TAG_NONE = 0x0,
9424 RUBY_TAG_RETURN = 0x1,
9425 RUBY_TAG_BREAK = 0x2,
9426 RUBY_TAG_NEXT = 0x3,
9427 RUBY_TAG_RETRY = 0x4,
9428 RUBY_TAG_REDO = 0x5,
9429 RUBY_TAG_RAISE = 0x6,
9430 RUBY_TAG_THROW = 0x7,
9431 RUBY_TAG_FATAL = 0x8,
9432 RUBY_TAG_MASK = 0xf
9433 };
9434 #define TAG_NONE RUBY_TAG_NONE
9435 #define TAG_RETURN RUBY_TAG_RETURN
9436 #define TAG_BREAK RUBY_TAG_BREAK
9437 #define TAG_NEXT RUBY_TAG_NEXT
9438 #define TAG_RETRY RUBY_TAG_RETRY
9439 #define TAG_REDO RUBY_TAG_REDO
9440 #define TAG_RAISE RUBY_TAG_RAISE
9441 #define TAG_THROW RUBY_TAG_THROW
9442 #define TAG_FATAL RUBY_TAG_FATAL
9443 #define TAG_MASK RUBY_TAG_MASK
9444 enum ruby_vm_throw_flags {
9445 VM_THROW_NO_ESCAPE_FLAG = 0x8000,
9446 VM_THROW_STATE_MASK = 0xff
9447 };
9448 struct rb_thread_struct;
9449 struct rb_control_frame_struct;
9450 typedef struct rb_compile_option_struct rb_compile_option_t;
9451 struct iseq_inline_cache_entry {
9452 rb_serial_t ic_serial;
9453 const rb_cref_t *ic_cref;
9454 VALUE value;
9455 };
9456 struct iseq_inline_iv_cache_entry {
9457 rb_serial_t ic_serial;
9458 size_t index;
9459 };
9460 union iseq_inline_storage_entry {
9461 struct {
9462 struct rb_thread_struct *running_thread;
9463 VALUE value;
9464 } once;
9465 struct iseq_inline_cache_entry cache;
9466 struct iseq_inline_iv_cache_entry iv_cache;
9467 };
9468 struct rb_call_info_kw_arg {
9469 int keyword_len;
9470 VALUE keywords[1];
9471 };
9472 struct rb_call_info_with_kwarg {
9473 struct rb_call_info ci;
9474 struct rb_call_info_kw_arg *kw_arg;
9475 };
9476 struct rb_calling_info {
9477 VALUE block_handler;
9478 VALUE recv;
9479 int argc;
9480 int kw_splat;
9481 };
9482 struct rb_kwarg_call_data {
9483 struct rb_call_cache cc;
9484 struct rb_call_info_with_kwarg ci_kw;
9485 };
9486 struct rb_execution_context_struct;
9487 typedef 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);
9488 #define CoreDataFromValue(obj,type) (type*)DATA_PTR(obj)
9489 #define GetCoreDataFromValue(obj,type,ptr) ((ptr) = CoreDataFromValue((obj), type))
9490 typedef struct rb_iseq_location_struct {
9491 VALUE pathobj;
9492 VALUE base_label;
9493 VALUE label;
9494 VALUE first_lineno;
9495 int node_id;
9496 rb_code_location_t code_location;
9497 } rb_iseq_location_t;
9498 #define PATHOBJ_PATH 0
9499 #define PATHOBJ_REALPATH 1
9500 static inline VALUE
9501 pathobj_path(VALUE pathobj)
9502 {
9503 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(pathobj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
9504 return pathobj;
9505 }
9506 else {
9507 ((void)0);
9508 return (rb_array_const_ptr_transient(pathobj)[0]);
9509 }
9510 }
9511 static inline VALUE
9512 pathobj_realpath(VALUE pathobj)
9513 {
9514 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(pathobj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((pathobj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((pathobj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((pathobj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((pathobj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(pathobj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(pathobj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(pathobj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(pathobj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(pathobj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
9515 return pathobj;
9516 }
9517 else {
9518 ((void)0);
9519 return (rb_array_const_ptr_transient(pathobj)[1]);
9520 }
9521 }
9522 struct rb_mjit_unit;
9523 struct rb_iseq_constant_body {
9524 enum iseq_type {
9525 ISEQ_TYPE_TOP,
9526 ISEQ_TYPE_METHOD,
9527 ISEQ_TYPE_BLOCK,
9528 ISEQ_TYPE_CLASS,
9529 ISEQ_TYPE_RESCUE,
9530 ISEQ_TYPE_ENSURE,
9531 ISEQ_TYPE_EVAL,
9532 ISEQ_TYPE_MAIN,
9533 ISEQ_TYPE_PLAIN
9534 } type;
9535 unsigned int iseq_size;
9536 VALUE *iseq_encoded;
9537 struct {
9538 struct {
9539 unsigned int has_lead : 1;
9540 unsigned int has_opt : 1;
9541 unsigned int has_rest : 1;
9542 unsigned int has_post : 1;
9543 unsigned int has_kw : 1;
9544 unsigned int has_kwrest : 1;
9545 unsigned int has_block : 1;
9546 unsigned int ambiguous_param0 : 1;
9547 unsigned int accepts_no_kwarg : 1;
9548 unsigned int ruby2_keywords: 1;
9549 } flags;
9550 unsigned int size;
9551 int lead_num;
9552 int opt_num;
9553 int rest_start;
9554 int post_start;
9555 int post_num;
9556 int block_start;
9557 const VALUE *opt_table;
9558 const struct rb_iseq_param_keyword {
9559 int num;
9560 int required_num;
9561 int bits_start;
9562 int rest_start;
9563 const ID *table;
9564 VALUE *default_values;
9565 } *keyword;
9566 } param;
9567 rb_iseq_location_t location;
9568 struct iseq_insn_info {
9569 const struct iseq_insn_info_entry *body;
9570 unsigned int *positions;
9571 unsigned int size;
9572 struct succ_index_table *succ_index_table;
9573 } insns_info;
9574 const ID *local_table;
9575 struct iseq_catch_table *catch_table;
9576 const struct rb_iseq_struct *parent_iseq;
9577 struct rb_iseq_struct *local_iseq;
9578 union iseq_inline_storage_entry *is_entries;
9579 struct rb_call_data *call_data;
9580 struct {
9581 rb_snum_t flip_count;
9582 VALUE coverage;
9583 VALUE pc2branchindex;
9584 VALUE *original_iseq;
9585 } variable;
9586 unsigned int local_table_size;
9587 unsigned int is_size;
9588 unsigned int ci_size;
9589 unsigned int ci_kw_size;
9590 unsigned int stack_max;
9591 char catch_except_p;
9592 VALUE (*jit_func)(struct rb_execution_context_struct *,
9593 struct rb_control_frame_struct *);
9594 long unsigned total_calls;
9595 struct rb_mjit_unit *jit_unit;
9596 uintptr_t iseq_unique_id;
9597 };
9598 struct rb_iseq_struct {
9599 VALUE flags;
9600 VALUE wrapper;
9601 struct rb_iseq_constant_body *body;
9602 union {
9603 struct iseq_compile_data *compile_data;
9604 struct {
9605 VALUE obj;
9606 int index;
9607 } loader;
9608 struct {
9609 struct rb_hook_list_struct *local_hooks;
9610 rb_event_flag_t global_trace_events;
9611 } exec;
9612 } aux;
9613 };
9614 #define USE_LAZY_LOAD 0
9615 static inline const rb_iseq_t *
9616 rb_iseq_check(const rb_iseq_t *iseq)
9617 {
9618 return iseq;
9619 }
9620 static inline const rb_iseq_t *
9621 def_iseq_ptr(rb_method_definition_t *def)
9622 {
9623 return rb_iseq_check(def->body.iseq.iseqptr);
9624 }
9625 enum ruby_special_exceptions {
9626 ruby_error_reenter,
9627 ruby_error_nomemory,
9628 ruby_error_sysstack,
9629 ruby_error_stackfatal,
9630 ruby_error_stream_closed,
9631 ruby_special_error_count
9632 };
9633 enum ruby_basic_operators {
9634 BOP_PLUS,
9635 BOP_MINUS,
9636 BOP_MULT,
9637 BOP_DIV,
9638 BOP_MOD,
9639 BOP_EQ,
9640 BOP_EQQ,
9641 BOP_LT,
9642 BOP_LE,
9643 BOP_LTLT,
9644 BOP_AREF,
9645 BOP_ASET,
9646 BOP_LENGTH,
9647 BOP_SIZE,
9648 BOP_EMPTY_P,
9649 BOP_NIL_P,
9650 BOP_SUCC,
9651 BOP_GT,
9652 BOP_GE,
9653 BOP_NOT,
9654 BOP_NEQ,
9655 BOP_MATCH,
9656 BOP_FREEZE,
9657 BOP_UMINUS,
9658 BOP_MAX,
9659 BOP_MIN,
9660 BOP_CALL,
9661 BOP_AND,
9662 BOP_OR,
9663 BOP_LAST_
9664 };
9665 #define GetVMPtr(obj,ptr) GetCoreDataFromValue((obj), rb_vm_t, (ptr))
9666 struct rb_vm_struct;
9667 typedef void rb_vm_at_exit_func(struct rb_vm_struct*);
9668 typedef struct rb_at_exit_list {
9669 rb_vm_at_exit_func *func;
9670 struct rb_at_exit_list *next;
9671 } rb_at_exit_list;
9672 struct rb_objspace;
9673 struct rb_objspace *rb_objspace_alloc(void);
9674 void rb_objspace_free(struct rb_objspace *);
9675 void rb_objspace_call_finalizer(struct rb_objspace *);
9676 typedef struct rb_hook_list_struct {
9677 struct rb_event_hook_struct *hooks;
9678 rb_event_flag_t events;
9679 unsigned int need_clean;
9680 unsigned int running;
9681 } rb_hook_list_t;
9682 typedef const struct rb_builtin_function *RB_BUILTIN;
9683 typedef struct rb_vm_struct {
9684 VALUE self;
9685 rb_global_vm_lock_t gvl;
9686 struct rb_thread_struct *main_thread;
9687 const struct rb_thread_struct *running_thread;
9688 void *main_altstack;
9689 rb_serial_t fork_gen;
9690 rb_nativethread_lock_t waitpid_lock;
9691 struct list_head waiting_pids;
9692 struct list_head waiting_grps;
9693 struct list_head waiting_fds;
9694 struct list_head living_threads;
9695 VALUE thgroup_default;
9696 int living_thread_num;
9697 volatile int ubf_async_safe;
9698 unsigned int running: 1;
9699 unsigned int thread_abort_on_exception: 1;
9700 unsigned int thread_report_on_exception: 1;
9701 unsigned int safe_level_: 1;
9702 int sleeper;
9703 VALUE mark_object_ary;
9704 const VALUE special_exceptions[ruby_special_error_count];
9705 VALUE top_self;
9706 VALUE load_path;
9707 VALUE load_path_snapshot;
9708 VALUE load_path_check_cache;
9709 VALUE expanded_load_path;
9710 VALUE loaded_features;
9711 VALUE loaded_features_snapshot;
9712 struct st_table *loaded_features_index;
9713 struct st_table *loading_table;
9714 struct {
9715 VALUE cmd[65];
9716 } trap_list;
9717 rb_hook_list_t global_hooks;
9718 struct st_table *ensure_rollback_table;
9719 struct rb_postponed_job_struct *postponed_job_buffer;
9720 int postponed_job_index;
9721 int src_encoding_index;
9722 struct list_head workqueue;
9723 rb_nativethread_lock_t workqueue_lock;
9724 VALUE verbose, debug, orig_progname, progname;
9725 VALUE coverages;
9726 int coverage_mode;
9727 st_table * defined_module_hash;
9728 struct rb_objspace *objspace;
9729 rb_at_exit_list *at_exit;
9730 VALUE *defined_strings;
9731 st_table *frozen_strings;
9732 const struct rb_builtin_function *builtin_function_table;
9733 int builtin_inline_index;
9734 struct {
9735 size_t thread_vm_stack_size;
9736 size_t thread_machine_stack_size;
9737 size_t fiber_vm_stack_size;
9738 size_t fiber_machine_stack_size;
9739 } default_params;
9740 short redefined_flag[BOP_LAST_];
9741 } rb_vm_t;
9742 #define RUBY_VM_SIZE_ALIGN 4096
9743 #define RUBY_VM_THREAD_VM_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9744 #define RUBY_VM_THREAD_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9745 #define RUBY_VM_THREAD_MACHINE_STACK_SIZE ( 128 * 1024 * sizeof(VALUE))
9746 #define RUBY_VM_THREAD_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9747 #define RUBY_VM_FIBER_VM_STACK_SIZE ( 16 * 1024 * sizeof(VALUE))
9748 #define RUBY_VM_FIBER_VM_STACK_SIZE_MIN ( 2 * 1024 * sizeof(VALUE))
9749 #define RUBY_VM_FIBER_MACHINE_STACK_SIZE ( 64 * 1024 * sizeof(VALUE))
9750 #define RUBY_VM_FIBER_MACHINE_STACK_SIZE_MIN ( 16 * 1024 * sizeof(VALUE))
9751 #define INTEGER_REDEFINED_OP_FLAG (1 << 0)
9752 #define FLOAT_REDEFINED_OP_FLAG (1 << 1)
9753 #define STRING_REDEFINED_OP_FLAG (1 << 2)
9754 #define ARRAY_REDEFINED_OP_FLAG (1 << 3)
9755 #define HASH_REDEFINED_OP_FLAG (1 << 4)
9756 #define SYMBOL_REDEFINED_OP_FLAG (1 << 6)
9757 #define TIME_REDEFINED_OP_FLAG (1 << 7)
9758 #define REGEXP_REDEFINED_OP_FLAG (1 << 8)
9759 #define NIL_REDEFINED_OP_FLAG (1 << 9)
9760 #define TRUE_REDEFINED_OP_FLAG (1 << 10)
9761 #define FALSE_REDEFINED_OP_FLAG (1 << 11)
9762 #define PROC_REDEFINED_OP_FLAG (1 << 12)
9763 #define BASIC_OP_UNREDEFINED_P(op,klass) (LIKELY((GET_VM()->redefined_flag[(op)]&(klass)) == 0))
9764 #define VM_DEBUG_BP_CHECK 0
9765 #define VM_DEBUG_VERIFY_METHOD_CACHE (VMDEBUG != 0)
9766 struct rb_captured_block {
9767 VALUE self;
9768 const VALUE *ep;
9769 union {
9770 const rb_iseq_t *iseq;
9771 const struct vm_ifunc *ifunc;
9772 VALUE val;
9773 } code;
9774 };
9775 enum rb_block_handler_type {
9776 block_handler_type_iseq,
9777 block_handler_type_ifunc,
9778 block_handler_type_symbol,
9779 block_handler_type_proc
9780 };
9781 enum rb_block_type {
9782 block_type_iseq,
9783 block_type_ifunc,
9784 block_type_symbol,
9785 block_type_proc
9786 };
9787 struct rb_block {
9788 union {
9789 struct rb_captured_block captured;
9790 VALUE symbol;
9791 VALUE proc;
9792 } as;
9793 enum rb_block_type type;
9794 };
9795 typedef struct rb_control_frame_struct {
9796 const VALUE *pc;
9797 VALUE *sp;
9798 const rb_iseq_t *iseq;
9799 VALUE self;
9800 const VALUE *ep;
9801 const void *block_code;
9802 VALUE *__bp__;
9803 } rb_control_frame_t;
9804 extern const rb_data_type_t ruby_threadptr_data_type;
9805 static inline struct rb_thread_struct *
9806 rb_thread_ptr(VALUE thval)
9807 {
9808 return (struct rb_thread_struct *)rb_check_typeddata(thval, &ruby_threadptr_data_type);
9809 }
9810 enum rb_thread_status {
9811 THREAD_RUNNABLE,
9812 THREAD_STOPPED,
9813 THREAD_STOPPED_FOREVER,
9814 THREAD_KILLED
9815 };
9816 typedef void *rb_jmpbuf_t[5];
9817 struct rb_vm_tag {
9818 VALUE tag;
9819 VALUE retval;
9820 rb_jmpbuf_t buf;
9821 struct rb_vm_tag *prev;
9822 enum ruby_tag_type state;
9823 };
9824 _Static_assert(__builtin_offsetof (struct rb_vm_tag, buf) > 0, "rb_vm_tag_buf_offset" ": " "offsetof(struct rb_vm_tag, buf) > 0");
9825 _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)");
9826 struct rb_vm_protect_tag {
9827 struct rb_vm_protect_tag *prev;
9828 };
9829 struct rb_unblock_callback {
9830 rb_unblock_function_t *func;
9831 void *arg;
9832 };
9833 struct rb_mutex_struct;
9834 typedef struct rb_thread_list_struct{
9835 struct rb_thread_list_struct *next;
9836 struct rb_thread_struct *th;
9837 } rb_thread_list_t;
9838 typedef struct rb_ensure_entry {
9839 VALUE marker;
9840 VALUE (*e_proc)(VALUE);
9841 VALUE data2;
9842 } rb_ensure_entry_t;
9843 typedef struct rb_ensure_list {
9844 struct rb_ensure_list *next;
9845 struct rb_ensure_entry entry;
9846 } rb_ensure_list_t;
9847 typedef char rb_thread_id_string_t[sizeof(rb_nativethread_id_t) * 2 + 3];
9848 typedef struct rb_fiber_struct rb_fiber_t;
9849 typedef struct rb_execution_context_struct {
9850 VALUE *vm_stack;
9851 size_t vm_stack_size;
9852 rb_control_frame_t *cfp;
9853 struct rb_vm_tag *tag;
9854 struct rb_vm_protect_tag *protect_tag;
9855 rb_atomic_t interrupt_flag;
9856 rb_atomic_t interrupt_mask;
9857 rb_fiber_t *fiber_ptr;
9858 struct rb_thread_struct *thread_ptr;
9859 st_table *local_storage;
9860 VALUE local_storage_recursive_hash;
9861 VALUE local_storage_recursive_hash_for_trace;
9862 const VALUE *root_lep;
9863 VALUE root_svar;
9864 rb_ensure_list_t *ensure_list;
9865 struct rb_trace_arg_struct *trace_arg;
9866 VALUE errinfo;
9867 VALUE passed_block_handler;
9868 uint8_t raised_flag;
9869 enum method_missing_reason method_missing_reason : 8;
9870 VALUE private_const_reference;
9871 struct {
9872 VALUE *stack_start;
9873 VALUE *stack_end;
9874 size_t stack_maxsize;
9875 __attribute__((aligned(8))) jmp_buf regs;
9876 } machine;
9877 } rb_execution_context_t;
9878 #define VM_CORE_H_EC_DEFINED 1
9879 void rb_ec_set_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
9880 void rb_ec_initialize_vm_stack(rb_execution_context_t *ec, VALUE *stack, size_t size);
9881 void rb_ec_clear_vm_stack(rb_execution_context_t *ec);
9882 typedef struct rb_thread_struct {
9883 struct list_node vmlt_node;
9884 VALUE self;
9885 rb_vm_t *vm;
9886 rb_execution_context_t *ec;
9887 VALUE last_status;
9888 struct rb_calling_info *calling;
9889 VALUE top_self;
9890 VALUE top_wrapper;
9891 rb_nativethread_id_t thread_id;
9892 enum rb_thread_status status : 2;
9893 unsigned int to_kill : 1;
9894 unsigned int abort_on_exception: 1;
9895 unsigned int report_on_exception: 1;
9896 unsigned int pending_interrupt_queue_checked: 1;
9897 int8_t priority;
9898 uint32_t running_time_us;
9899 native_thread_data_t native_thread_data;
9900 void *blocking_region_buffer;
9901 VALUE thgroup;
9902 VALUE value;
9903 VALUE pending_interrupt_queue;
9904 VALUE pending_interrupt_mask_stack;
9905 rb_nativethread_lock_t interrupt_lock;
9906 struct rb_unblock_callback unblock;
9907 VALUE locking_mutex;
9908 struct rb_mutex_struct *keeping_mutexes;
9909 rb_thread_list_t *join_list;
9910 union {
9911 struct {
9912 VALUE proc;
9913 VALUE args;
9914 int kw_splat;
9915 } proc;
9916 struct {
9917 VALUE (*func)(void *);
9918 void *arg;
9919 } func;
9920 } invoke_arg;
9921 enum {
9922 thread_invoke_type_none = 0,
9923 thread_invoke_type_proc,
9924 thread_invoke_type_func
9925 } invoke_type;
9926 VALUE stat_insn_usage;
9927 rb_fiber_t *root_fiber;
9928 rb_jmpbuf_t root_jmpbuf;
9929 VALUE name;
9930 } rb_thread_t;
9931 typedef enum {
9932 VM_DEFINECLASS_TYPE_CLASS = 0x00,
9933 VM_DEFINECLASS_TYPE_SINGLETON_CLASS = 0x01,
9934 VM_DEFINECLASS_TYPE_MODULE = 0x02,
9935 VM_DEFINECLASS_TYPE_MASK = 0x07
9936 } rb_vm_defineclass_type_t;
9937 #define VM_DEFINECLASS_TYPE(x) ((rb_vm_defineclass_type_t)(x) & VM_DEFINECLASS_TYPE_MASK)
9938 #define VM_DEFINECLASS_FLAG_SCOPED 0x08
9939 #define VM_DEFINECLASS_FLAG_HAS_SUPERCLASS 0x10
9940 #define VM_DEFINECLASS_SCOPED_P(x) ((x) & VM_DEFINECLASS_FLAG_SCOPED)
9941 #define VM_DEFINECLASS_HAS_SUPERCLASS_P(x) ((x) & VM_DEFINECLASS_FLAG_HAS_SUPERCLASS)
9942
9943 #pragma GCC visibility push(default)
9944
9945 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);
9946 rb_iseq_t *rb_iseq_new_top (const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, const rb_iseq_t *parent);
9947 rb_iseq_t *rb_iseq_new_main (const rb_ast_body_t *ast, VALUE path, VALUE realpath, const rb_iseq_t *parent);
9948 rb_iseq_t *rb_iseq_new_with_opt(const rb_ast_body_t *ast, VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
9949 const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
9950 struct iseq_link_anchor;
9951 struct rb_iseq_new_with_callback_callback_func {
9952 VALUE flags;
9953 VALUE reserved;
9954 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *);
9955 const void *data;
9956 };
9957 static inline struct rb_iseq_new_with_callback_callback_func *
9958 rb_iseq_new_with_callback_new_callback(
9959 void (*func)(rb_iseq_t *, struct iseq_link_anchor *, const void *), const void *ptr)
9960 {
9961 VALUE memo = rb_imemo_new(imemo_ifunc, (VALUE)func, (VALUE)ptr, ((VALUE)RUBY_Qundef), ((VALUE)RUBY_Qfalse));
9962 return (struct rb_iseq_new_with_callback_callback_func *)memo;
9963 }
9964 rb_iseq_t *rb_iseq_new_with_callback(const struct rb_iseq_new_with_callback_callback_func * ifunc,
9965 VALUE name, VALUE path, VALUE realpath, VALUE first_lineno,
9966 const rb_iseq_t *parent, enum iseq_type, const rb_compile_option_t*);
9967 VALUE rb_iseq_disasm(const rb_iseq_t *iseq);
9968 int rb_iseq_disasm_insn(VALUE str, const VALUE *iseqval, size_t pos, const rb_iseq_t *iseq, VALUE child);
9969 VALUE rb_iseq_coverage(const rb_iseq_t *iseq);
9970 extern VALUE rb_cISeq;
9971 extern VALUE rb_cRubyVM;
9972 extern VALUE rb_mRubyVMFrozenCore;
9973 extern VALUE rb_block_param_proxy;
9974
9975 #pragma GCC visibility pop
9976
9977 #define GetProcPtr(obj,ptr) GetCoreDataFromValue((obj), rb_proc_t, (ptr))
9978 typedef struct {
9979 const struct rb_block block;
9980 unsigned int is_from_method: 1;
9981 unsigned int is_lambda: 1;
9982 } rb_proc_t;
9983 typedef struct {
9984 VALUE flags;
9985 rb_iseq_t *iseq;
9986 const VALUE *ep;
9987 const VALUE *env;
9988 unsigned int env_size;
9989 } rb_env_t;
9990 extern const rb_data_type_t ruby_binding_data_type;
9991 #define GetBindingPtr(obj,ptr) GetCoreDataFromValue((obj), rb_binding_t, (ptr))
9992 typedef struct {
9993 const struct rb_block block;
9994 const VALUE pathobj;
9995 unsigned short first_lineno;
9996 } rb_binding_t;
9997 enum vm_check_match_type {
9998 VM_CHECKMATCH_TYPE_WHEN = 1,
9999 VM_CHECKMATCH_TYPE_CASE = 2,
10000 VM_CHECKMATCH_TYPE_RESCUE = 3
10001 };
10002 #define VM_CHECKMATCH_TYPE_MASK 0x03
10003 #define VM_CHECKMATCH_ARRAY 0x04
10004 enum vm_call_flag_bits {
10005 VM_CALL_ARGS_SPLAT_bit,
10006 VM_CALL_ARGS_BLOCKARG_bit,
10007 VM_CALL_FCALL_bit,
10008 VM_CALL_VCALL_bit,
10009 VM_CALL_ARGS_SIMPLE_bit,
10010 VM_CALL_BLOCKISEQ_bit,
10011 VM_CALL_KWARG_bit,
10012 VM_CALL_KW_SPLAT_bit,
10013 VM_CALL_TAILCALL_bit,
10014 VM_CALL_SUPER_bit,
10015 VM_CALL_ZSUPER_bit,
10016 VM_CALL_OPT_SEND_bit,
10017 VM_CALL__END
10018 };
10019 #define VM_CALL_ARGS_SPLAT (0x01 << VM_CALL_ARGS_SPLAT_bit)
10020 #define VM_CALL_ARGS_BLOCKARG (0x01 << VM_CALL_ARGS_BLOCKARG_bit)
10021 #define VM_CALL_FCALL (0x01 << VM_CALL_FCALL_bit)
10022 #define VM_CALL_VCALL (0x01 << VM_CALL_VCALL_bit)
10023 #define VM_CALL_ARGS_SIMPLE (0x01 << VM_CALL_ARGS_SIMPLE_bit)
10024 #define VM_CALL_BLOCKISEQ (0x01 << VM_CALL_BLOCKISEQ_bit)
10025 #define VM_CALL_KWARG (0x01 << VM_CALL_KWARG_bit)
10026 #define VM_CALL_KW_SPLAT (0x01 << VM_CALL_KW_SPLAT_bit)
10027 #define VM_CALL_TAILCALL (0x01 << VM_CALL_TAILCALL_bit)
10028 #define VM_CALL_SUPER (0x01 << VM_CALL_SUPER_bit)
10029 #define VM_CALL_ZSUPER (0x01 << VM_CALL_ZSUPER_bit)
10030 #define VM_CALL_OPT_SEND (0x01 << VM_CALL_OPT_SEND_bit)
10031 enum vm_special_object_type {
10032 VM_SPECIAL_OBJECT_VMCORE = 1,
10033 VM_SPECIAL_OBJECT_CBASE,
10034 VM_SPECIAL_OBJECT_CONST_BASE
10035 };
10036 enum vm_svar_index {
10037 VM_SVAR_LASTLINE = 0,
10038 VM_SVAR_BACKREF = 1,
10039 VM_SVAR_EXTRA_START = 2,
10040 VM_SVAR_FLIPFLOP_START = 2
10041 };
10042 typedef struct iseq_inline_cache_entry *IC;
10043 typedef struct iseq_inline_iv_cache_entry *IVC;
10044 typedef union iseq_inline_storage_entry *ISE;
10045 typedef struct rb_call_info *CALL_INFO;
10046 typedef struct rb_call_cache *CALL_CACHE;
10047 typedef struct rb_call_data *CALL_DATA;
10048 typedef VALUE CDHASH;
10049 typedef rb_control_frame_t *
10050 (__attribute__ ((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *, rb_control_frame_t *);
10051 #define VM_TAGGED_PTR_SET(p,tag) ((VALUE)(p) | (tag))
10052 #define VM_TAGGED_PTR_REF(v,mask) ((void *)((v) & ~mask))
10053 #define GC_GUARDED_PTR(p) VM_TAGGED_PTR_SET((p), 0x01)
10054 #define GC_GUARDED_PTR_REF(p) VM_TAGGED_PTR_REF((p), 0x03)
10055 #define GC_GUARDED_PTR_P(p) (((VALUE)(p)) & 0x01)
10056 enum {
10057 VM_FRAME_MAGIC_METHOD = 0x11110001,
10058 VM_FRAME_MAGIC_BLOCK = 0x22220001,
10059 VM_FRAME_MAGIC_CLASS = 0x33330001,
10060 VM_FRAME_MAGIC_TOP = 0x44440001,
10061 VM_FRAME_MAGIC_CFUNC = 0x55550001,
10062 VM_FRAME_MAGIC_IFUNC = 0x66660001,
10063 VM_FRAME_MAGIC_EVAL = 0x77770001,
10064 VM_FRAME_MAGIC_RESCUE = 0x78880001,
10065 VM_FRAME_MAGIC_DUMMY = 0x79990001,
10066 VM_FRAME_MAGIC_MASK = 0x7fff0001,
10067 VM_FRAME_FLAG_PASSED = 0x0010,
10068 VM_FRAME_FLAG_FINISH = 0x0020,
10069 VM_FRAME_FLAG_BMETHOD = 0x0040,
10070 VM_FRAME_FLAG_CFRAME = 0x0080,
10071 VM_FRAME_FLAG_LAMBDA = 0x0100,
10072 VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM = 0x0200,
10073 VM_FRAME_FLAG_CFRAME_KW = 0x0400,
10074 VM_FRAME_FLAG_CFRAME_EMPTY_KW = 0x0800,
10075 VM_ENV_FLAG_LOCAL = 0x0002,
10076 VM_ENV_FLAG_ESCAPED = 0x0004,
10077 VM_ENV_FLAG_WB_REQUIRED = 0x0008
10078 };
10079 #define VM_ENV_DATA_SIZE ( 3)
10080 #define VM_ENV_DATA_INDEX_ME_CREF (-2)
10081 #define VM_ENV_DATA_INDEX_SPECVAL (-1)
10082 #define VM_ENV_DATA_INDEX_FLAGS ( 0)
10083 #define VM_ENV_DATA_INDEX_ENV ( 1)
10084 #define VM_ENV_INDEX_LAST_LVAR (-VM_ENV_DATA_SIZE)
10085 static inline void VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value);
10086 static inline void
10087 VM_ENV_FLAGS_SET(const VALUE *ep, VALUE flag)
10088 {
10089 VALUE flags = ep[( 0)];
10090 ((void)0);
10091 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags | flag);
10092 }
10093 static inline void
10094 VM_ENV_FLAGS_UNSET(const VALUE *ep, VALUE flag)
10095 {
10096 VALUE flags = ep[( 0)];
10097 ((void)0);
10098 VM_FORCE_WRITE_SPECIAL_CONST(&ep[( 0)], flags & ~flag);
10099 }
10100 static inline unsigned long
10101 VM_ENV_FLAGS(const VALUE *ep, long flag)
10102 {
10103 VALUE flags = ep[( 0)];
10104 ((void)0);
10105 return flags & flag;
10106 }
10107 static inline unsigned long
10108 VM_FRAME_TYPE(const rb_control_frame_t *cfp)
10109 {
10110 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_MAGIC_MASK);
10111 }
10112 static inline int
10113 VM_FRAME_LAMBDA_P(const rb_control_frame_t *cfp)
10114 {
10115 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_LAMBDA) != 0;
10116 }
10117 static inline int
10118 VM_FRAME_CFRAME_KW_P(const rb_control_frame_t *cfp)
10119 {
10120 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_KW) != 0;
10121 }
10122 static inline int
10123 VM_FRAME_CFRAME_EMPTY_KW_P(const rb_control_frame_t *cfp)
10124 {
10125 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME_EMPTY_KW) != 0;
10126 }
10127 static inline int
10128 VM_FRAME_FINISHED_P(const rb_control_frame_t *cfp)
10129 {
10130 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_FINISH) != 0;
10131 }
10132 static inline int
10133 VM_FRAME_BMETHOD_P(const rb_control_frame_t *cfp)
10134 {
10135 return VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_BMETHOD) != 0;
10136 }
10137 static inline int
10138 rb_obj_is_iseq(VALUE iseq)
10139 {
10140 return imemo_type_p(iseq, imemo_iseq);
10141 }
10142 static inline int
10143 VM_FRAME_CFRAME_P(const rb_control_frame_t *cfp)
10144 {
10145 int cframe_p = VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_CFRAME) != 0;
10146 ((void)0);
10147 return cframe_p;
10148 }
10149 static inline int
10150 VM_FRAME_RUBYFRAME_P(const rb_control_frame_t *cfp)
10151 {
10152 return !VM_FRAME_CFRAME_P(cfp);
10153 }
10154 #define RUBYVM_CFUNC_FRAME_P(cfp) (VM_FRAME_TYPE(cfp) == VM_FRAME_MAGIC_CFUNC)
10155 #define VM_GUARDED_PREV_EP(ep) GC_GUARDED_PTR(ep)
10156 #define VM_BLOCK_HANDLER_NONE 0
10157 static inline int
10158 VM_ENV_LOCAL_P(const VALUE *ep)
10159 {
10160 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_LOCAL) ? 1 : 0;
10161 }
10162 static inline const VALUE *
10163 VM_ENV_PREV_EP(const VALUE *ep)
10164 {
10165 ((void)0);
10166 return ((void *)(((ep[(-1)])) & ~0x03));
10167 }
10168 static inline VALUE
10169 VM_ENV_BLOCK_HANDLER(const VALUE *ep)
10170 {
10171 ((void)0);
10172 return ep[(-1)];
10173 }
10174 static inline int
10175 VM_ENV_ESCAPED_P(const VALUE *ep)
10176 {
10177 ((void)0);
10178 return VM_ENV_FLAGS(ep, VM_ENV_FLAG_ESCAPED) ? 1 : 0;
10179 }
10180 static inline VALUE
10181 VM_ENV_ENVVAL(const VALUE *ep)
10182 {
10183 VALUE envval = ep[( 1)];
10184 ((void)0);
10185 ((void)0);
10186 return envval;
10187 }
10188 static inline const rb_env_t *
10189 VM_ENV_ENVVAL_PTR(const VALUE *ep)
10190 {
10191 return (const rb_env_t *)VM_ENV_ENVVAL(ep);
10192 }
10193 static inline const rb_env_t *
10194 vm_env_new(VALUE *env_ep, VALUE *env_body, unsigned int env_size, const rb_iseq_t *iseq)
10195 {
10196 rb_env_t *env = (rb_env_t *)rb_imemo_new(imemo_env, (VALUE)env_ep, (VALUE)env_body, 0, (VALUE)iseq);
10197 env->env_size = env_size;
10198 env_ep[( 1)] = (VALUE)env;
10199 return env;
10200 }
10201 static inline void
10202 VM_FORCE_WRITE(const VALUE *ptr, VALUE v)
10203 {
10204 *((VALUE *)ptr) = v;
10205 }
10206 static inline void
10207 VM_FORCE_WRITE_SPECIAL_CONST(const VALUE *ptr, VALUE special_const_value)
10208 {
10209 ((void)0);
10210 VM_FORCE_WRITE(ptr, special_const_value);
10211 }
10212 static inline void
10213 VM_STACK_ENV_WRITE(const VALUE *ep, int index, VALUE v)
10214 {
10215 ((void)0);
10216 VM_FORCE_WRITE(&ep[index], v);
10217 }
10218 const VALUE *rb_vm_ep_local_ep(const VALUE *ep);
10219 const VALUE *rb_vm_proc_local_ep(VALUE proc);
10220 void rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep);
10221 void rb_vm_block_copy(VALUE obj, const struct rb_block *dst, const struct rb_block *src);
10222 VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp);
10223 #define RUBY_VM_PREVIOUS_CONTROL_FRAME(cfp) ((cfp)+1)
10224 #define RUBY_VM_NEXT_CONTROL_FRAME(cfp) ((cfp)-1)
10225 #define RUBY_VM_VALID_CONTROL_FRAME_P(cfp,ecfp) ((void *)(ecfp) > (void *)(cfp))
10226 static inline const rb_control_frame_t *
10227 RUBY_VM_END_CONTROL_FRAME(const rb_execution_context_t *ec)
10228 {
10229 return (rb_control_frame_t *)(ec->vm_stack + ec->vm_stack_size);
10230 }
10231 static inline int
10232 RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
10233 {
10234 return !((void *)(RUBY_VM_END_CONTROL_FRAME(ec)) > (void *)(cfp));
10235 }
10236 static inline int
10237 VM_BH_ISEQ_BLOCK_P(VALUE block_handler)
10238 {
10239 if ((block_handler & 0x03) == 0x01) {
10240 return 1;
10241 }
10242 else {
10243 return 0;
10244 }
10245 }
10246 static inline VALUE
10247 VM_BH_FROM_ISEQ_BLOCK(const struct rb_captured_block *captured)
10248 {
10249 VALUE block_handler = ((VALUE)(captured) | (0x01));
10250 ((void)0);
10251 return block_handler;
10252 }
10253 static inline const struct rb_captured_block *
10254 VM_BH_TO_ISEQ_BLOCK(VALUE block_handler)
10255 {
10256 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10257 ((void)0);
10258 return captured;
10259 }
10260 static inline int
10261 VM_BH_IFUNC_P(VALUE block_handler)
10262 {
10263 if ((block_handler & 0x03) == 0x03) {
10264 return 1;
10265 }
10266 else {
10267 return 0;
10268 }
10269 }
10270 static inline VALUE
10271 VM_BH_FROM_IFUNC_BLOCK(const struct rb_captured_block *captured)
10272 {
10273 VALUE block_handler = ((VALUE)(captured) | (0x03));
10274 ((void)0);
10275 return block_handler;
10276 }
10277 static inline const struct rb_captured_block *
10278 VM_BH_TO_IFUNC_BLOCK(VALUE block_handler)
10279 {
10280 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10281 ((void)0);
10282 return captured;
10283 }
10284 static inline const struct rb_captured_block *
10285 VM_BH_TO_CAPT_BLOCK(VALUE block_handler)
10286 {
10287 struct rb_captured_block *captured = ((void *)((block_handler) & ~0x03));
10288 ((void)0);
10289 return captured;
10290 }
10291 static inline enum rb_block_handler_type
10292 vm_block_handler_type(VALUE block_handler)
10293 {
10294 if (VM_BH_ISEQ_BLOCK_P(block_handler)) {
10295 return block_handler_type_iseq;
10296 }
10297 else if (VM_BH_IFUNC_P(block_handler)) {
10298 return block_handler_type_ifunc;
10299 }
10300 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)))) {
10301 return block_handler_type_symbol;
10302 }
10303 else {
10304 ((void)0);
10305 return block_handler_type_proc;
10306 }
10307 }
10308 static inline void
10309 vm_block_handler_verify(__attribute__ ((__unused__)) VALUE block_handler)
10310 {
10311 ((void)0);
10312 }
10313 static inline int
10314 vm_cfp_forwarded_bh_p(const rb_control_frame_t *cfp, VALUE block_handler)
10315 {
10316 return ((VALUE) cfp->block_code) == block_handler;
10317 }
10318 static inline enum rb_block_type
10319 vm_block_type(const struct rb_block *block)
10320 {
10321 return block->type;
10322 }
10323 static inline void
10324 vm_block_type_set(const struct rb_block *block, enum rb_block_type type)
10325 {
10326 struct rb_block *mb = (struct rb_block *)block;
10327 mb->type = type;
10328 }
10329 static inline const struct rb_block *
10330 vm_proc_block(VALUE procval)
10331 {
10332 ((void)0);
10333 return &((rb_proc_t *)(((struct RTypedData*)(procval))->data))->block;
10334 }
10335 static inline const rb_iseq_t *vm_block_iseq(const struct rb_block *block);
10336 static inline const VALUE *vm_block_ep(const struct rb_block *block);
10337 static inline const rb_iseq_t *
10338 vm_proc_iseq(VALUE procval)
10339 {
10340 return vm_block_iseq(vm_proc_block(procval));
10341 }
10342 static inline const VALUE *
10343 vm_proc_ep(VALUE procval)
10344 {
10345 return vm_block_ep(vm_proc_block(procval));
10346 }
10347 static inline const rb_iseq_t *
10348 vm_block_iseq(const struct rb_block *block)
10349 {
10350 switch (vm_block_type(block)) {
10351 case block_type_iseq: return rb_iseq_check(block->as.captured.code.iseq);
10352 case block_type_proc: return vm_proc_iseq(block->as.proc);
10353 case block_type_ifunc:
10354 case block_type_symbol: return ((void *)0);
10355 }
10356 __builtin_unreachable();
10357 return ((void *)0);
10358 }
10359 static inline const VALUE *
10360 vm_block_ep(const struct rb_block *block)
10361 {
10362 switch (vm_block_type(block)) {
10363 case block_type_iseq:
10364 case block_type_ifunc: return block->as.captured.ep;
10365 case block_type_proc: return vm_proc_ep(block->as.proc);
10366 case block_type_symbol: return ((void *)0);
10367 }
10368 __builtin_unreachable();
10369 return ((void *)0);
10370 }
10371 static inline VALUE
10372 vm_block_self(const struct rb_block *block)
10373 {
10374 switch (vm_block_type(block)) {
10375 case block_type_iseq:
10376 case block_type_ifunc:
10377 return block->as.captured.self;
10378 case block_type_proc:
10379 return vm_block_self(vm_proc_block(block->as.proc));
10380 case block_type_symbol:
10381 return ((VALUE)RUBY_Qundef);
10382 }
10383 __builtin_unreachable();
10384 return ((VALUE)RUBY_Qundef);
10385 }
10386 static inline VALUE
10387 VM_BH_TO_SYMBOL(VALUE block_handler)
10388 {
10389 ((void)0);
10390 return block_handler;
10391 }
10392 static inline VALUE
10393 VM_BH_FROM_SYMBOL(VALUE symbol)
10394 {
10395 ((void)0);
10396 return symbol;
10397 }
10398 static inline VALUE
10399 VM_BH_TO_PROC(VALUE block_handler)
10400 {
10401 ((void)0);
10402 return block_handler;
10403 }
10404 static inline VALUE
10405 VM_BH_FROM_PROC(VALUE procval)
10406 {
10407 ((void)0);
10408 return procval;
10409 }
10410 VALUE rb_thread_alloc(VALUE klass);
10411 VALUE rb_binding_alloc(VALUE klass);
10412 VALUE rb_proc_alloc(VALUE klass);
10413 VALUE rb_proc_dup(VALUE self);
10414 extern void rb_vmdebug_stack_dump_raw(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10415 extern void rb_vmdebug_debug_print_pre(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE *_pc);
10416 extern void rb_vmdebug_debug_print_post(const rb_execution_context_t *ec, const rb_control_frame_t *cfp
10417 );
10418 #define SDR() rb_vmdebug_stack_dump_raw(GET_EC(), GET_EC()->cfp)
10419 #define SDR2(cfp) rb_vmdebug_stack_dump_raw(GET_EC(), (cfp))
10420 void rb_vm_bugreport(const void *);
10421 typedef void (*ruby_sighandler_t)(int);
10422 __attribute__ ((__noreturn__)) void rb_bug_for_fatal_signal(ruby_sighandler_t default_sighandler, int sig, const void *, const char *fmt, ...);
10423
10424 #pragma GCC visibility push(default)
10425
10426 VALUE rb_iseq_eval(const rb_iseq_t *iseq);
10427 VALUE rb_iseq_eval_main(const rb_iseq_t *iseq);
10428 VALUE rb_iseq_path(const rb_iseq_t *iseq);
10429 VALUE rb_iseq_realpath(const rb_iseq_t *iseq);
10430
10431 #pragma GCC visibility pop
10432
10433 VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath);
10434 void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath);
10435 int rb_ec_frame_method_id_and_class(const rb_execution_context_t *ec, ID *idp, ID *called_idp, VALUE *klassp);
10436 void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause);
10437 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);
10438 VALUE rb_vm_make_proc_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass, int8_t is_lambda);
10439 static inline VALUE
10440 rb_vm_make_proc(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10441 {
10442 return rb_vm_make_proc_lambda(ec, captured, klass, 0);
10443 }
10444 static inline VALUE
10445 rb_vm_make_lambda(const rb_execution_context_t *ec, const struct rb_captured_block *captured, VALUE klass)
10446 {
10447 return rb_vm_make_proc_lambda(ec, captured, klass, 1);
10448 }
10449 VALUE rb_vm_make_binding(const rb_execution_context_t *ec, const rb_control_frame_t *src_cfp);
10450 VALUE rb_vm_env_local_variables(const rb_env_t *env);
10451 const rb_env_t *rb_vm_env_prev_env(const rb_env_t *env);
10452 const VALUE *rb_binding_add_dynavars(VALUE bindval, rb_binding_t *bind, int dyncount, const ID *dynvars);
10453 void rb_vm_inc_const_missing_count(void);
10454 void rb_vm_gvl_destroy(rb_vm_t *vm);
10455 VALUE rb_vm_call_kw(rb_execution_context_t *ec, VALUE recv, VALUE id, int argc,
10456 const VALUE *argv, const rb_callable_method_entry_t *me, int kw_splat);
10457 static void rb_vm_pop_frame(rb_execution_context_t *ec);
10458 void rb_thread_start_timer_thread(void);
10459 void rb_thread_stop_timer_thread(void);
10460 void rb_thread_reset_timer_thread(void);
10461 void rb_thread_wakeup_timer_thread(int);
10462 static inline void
10463 rb_vm_living_threads_init(rb_vm_t *vm)
10464 {
10465 list_head_init(&vm->waiting_fds);
10466 list_head_init(&vm->waiting_pids);
10467 list_head_init(&vm->workqueue);
10468 list_head_init(&vm->waiting_grps);
10469 list_head_init(&vm->living_threads);
10470 vm->living_thread_num = 0;
10471 }
10472 static inline void
10473 rb_vm_living_threads_insert(rb_vm_t *vm, rb_thread_t *th)
10474 {
10475 list_add_tail_(&vm->living_threads, &th->vmlt_node, "../ruby-2.7.0/vm_core.h" ":" "1703");
10476 vm->living_thread_num++;
10477 }
10478 static inline void
10479 rb_vm_living_threads_remove(rb_vm_t *vm, rb_thread_t *th)
10480 {
10481 list_del_(&th->vmlt_node, "../ruby-2.7.0/vm_core.h" ":" "1710");
10482 vm->living_thread_num--;
10483 }
10484 typedef int rb_backtrace_iter_func(void *, VALUE, int, VALUE);
10485 rb_control_frame_t *rb_vm_get_ruby_level_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10486 rb_control_frame_t *rb_vm_get_binding_creatable_next_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
10487 int rb_vm_get_sourceline(const rb_control_frame_t *);
10488 void rb_vm_stack_to_heap(rb_execution_context_t *ec);
10489 void ruby_thread_init_stack(rb_thread_t *th);
10490 int rb_vm_control_frame_id_and_class(const rb_control_frame_t *cfp, ID *idp, ID *called_idp, VALUE *klassp);
10491 void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp);
10492 static VALUE rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler);
10493 void rb_vm_register_special_exception_str(enum ruby_special_exceptions sp, VALUE exception_class, VALUE mesg);
10494 #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)))
10495 void rb_gc_mark_machine_stack(const rb_execution_context_t *ec);
10496 void rb_vm_rewrite_cref(rb_cref_t *node, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr);
10497 static const rb_callable_method_entry_t *rb_vm_frame_method_entry(const rb_control_frame_t *cfp);
10498 #define sysstack_error GET_VM()->special_exceptions[ruby_error_sysstack]
10499 #define RUBY_CONST_ASSERT(expr) (1/!!(expr))
10500 #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))
10501 #define WHEN_VM_STACK_OVERFLOWED(cfp,sp,margin) if (LIKELY(!VM_STACK_OVERFLOWED_P(cfp, sp, margin))) {(void)0;} else
10502 #define CHECK_VM_STACK_OVERFLOW0(cfp,sp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, sp, margin) vm_stackoverflow()
10503 #define CHECK_VM_STACK_OVERFLOW(cfp,margin) WHEN_VM_STACK_OVERFLOWED(cfp, (cfp)->sp, margin) vm_stackoverflow()
10504 VALUE rb_catch_protect(VALUE t, rb_block_call_func *func, VALUE data, enum ruby_tag_type *stateptr);
10505
10506 #pragma GCC visibility push(default)
10507
10508 extern rb_vm_t *ruby_current_vm_ptr;
10509 extern rb_execution_context_t *ruby_current_execution_context_ptr;
10510 extern rb_event_flag_t ruby_vm_event_flags;
10511 extern rb_event_flag_t ruby_vm_event_enabled_global_flags;
10512 extern unsigned int ruby_vm_event_local_num;
10513
10514 #pragma GCC visibility pop
10515
10516 #define GET_VM() rb_current_vm()
10517 #define GET_THREAD() rb_current_thread()
10518 #define GET_EC() rb_current_execution_context()
10519 static inline rb_thread_t *
10520 rb_ec_thread_ptr(const rb_execution_context_t *ec)
10521 {
10522 return ec->thread_ptr;
10523 }
10524 static inline rb_vm_t *
10525 rb_ec_vm_ptr(const rb_execution_context_t *ec)
10526 {
10527 const rb_thread_t *th = rb_ec_thread_ptr(ec);
10528 if (th) {
10529 return th->vm;
10530 }
10531 else {
10532 return ((void *)0);
10533 }
10534 }
10535 static inline rb_execution_context_t *
10536 rb_current_execution_context(void)
10537 {
10538 return ruby_current_execution_context_ptr;
10539 }
10540 static inline rb_thread_t *
10541 rb_current_thread(void)
10542 {
10543 const rb_execution_context_t *ec = rb_current_execution_context();
10544 return rb_ec_thread_ptr(ec);
10545 }
10546 static inline rb_vm_t *
10547 rb_current_vm(void)
10548 {
10549 ((void)0);
10550 return ruby_current_vm_ptr;
10551 }
10552 static inline void
10553 rb_thread_set_current_raw(const rb_thread_t *th)
10554 {
10555 ruby_current_execution_context_ptr = th->ec;
10556 }
10557 static inline void
10558 rb_thread_set_current(rb_thread_t *th)
10559 {
10560 if (th->vm->running_thread != th) {
10561 th->running_time_us = 0;
10562 }
10563 rb_thread_set_current_raw(th);
10564 th->vm->running_thread = th;
10565 }
10566 enum {
10567 TIMER_INTERRUPT_MASK = 0x01,
10568 PENDING_INTERRUPT_MASK = 0x02,
10569 POSTPONED_JOB_INTERRUPT_MASK = 0x04,
10570 TRAP_INTERRUPT_MASK = 0x08
10571 };
10572 #define RUBY_VM_SET_TIMER_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TIMER_INTERRUPT_MASK)
10573 #define RUBY_VM_SET_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, PENDING_INTERRUPT_MASK)
10574 #define RUBY_VM_SET_POSTPONED_JOB_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, POSTPONED_JOB_INTERRUPT_MASK)
10575 #define RUBY_VM_SET_TRAP_INTERRUPT(ec) ATOMIC_OR((ec)->interrupt_flag, TRAP_INTERRUPT_MASK)
10576 #define RUBY_VM_INTERRUPTED(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask & (PENDING_INTERRUPT_MASK|TRAP_INTERRUPT_MASK))
10577 #define RUBY_VM_INTERRUPTED_ANY(ec) ((ec)->interrupt_flag & ~(ec)->interrupt_mask)
10578 VALUE rb_exc_set_backtrace(VALUE exc, VALUE bt);
10579 int rb_signal_buff_size(void);
10580 int rb_signal_exec(rb_thread_t *th, int sig);
10581 void rb_threadptr_check_signal(rb_thread_t *mth);
10582 void rb_threadptr_signal_raise(rb_thread_t *th, int sig);
10583 void rb_threadptr_signal_exit(rb_thread_t *th);
10584 int rb_threadptr_execute_interrupts(rb_thread_t *, int);
10585 void rb_threadptr_interrupt(rb_thread_t *th);
10586 void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th);
10587 void rb_threadptr_pending_interrupt_clear(rb_thread_t *th);
10588 void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v);
10589 VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec);
10590 void rb_ec_error_print(rb_execution_context_t * volatile ec, volatile VALUE errinfo);
10591 void rb_execution_context_update(const rb_execution_context_t *ec);
10592 void rb_execution_context_mark(const rb_execution_context_t *ec);
10593 void rb_fiber_close(rb_fiber_t *fib);
10594 void Init_native_thread(rb_thread_t *th);
10595 #define RUBY_VM_CHECK_INTS(ec) rb_vm_check_ints(ec)
10596 static inline void
10597 rb_vm_check_ints(rb_execution_context_t *ec)
10598 {
10599 ((void)0);
10600 if ((__builtin_expect(!!(((ec)->interrupt_flag & ~(ec)->interrupt_mask)), 0))) {
10601 rb_threadptr_execute_interrupts(rb_ec_thread_ptr(ec), 0);
10602 }
10603 }
10604 struct rb_trace_arg_struct {
10605 rb_event_flag_t event;
10606 rb_execution_context_t *ec;
10607 const rb_control_frame_t *cfp;
10608 VALUE self;
10609 ID id;
10610 ID called_id;
10611 VALUE klass;
10612 VALUE data;
10613 int klass_solved;
10614 int lineno;
10615 VALUE path;
10616 };
10617 void rb_hook_list_mark(rb_hook_list_t *hooks);
10618 void rb_hook_list_free(rb_hook_list_t *hooks);
10619 void rb_hook_list_connect_tracepoint(VALUE target, rb_hook_list_t *list, VALUE tpval, unsigned int target_line);
10620 void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval);
10621 void rb_exec_event_hooks(struct rb_trace_arg_struct *trace_arg, rb_hook_list_t *hooks, int pop_p);
10622 #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)
10623 static inline void
10624 rb_exec_event_hook_orig(rb_execution_context_t *ec, rb_hook_list_t *hooks, rb_event_flag_t flag,
10625 VALUE self, ID id, ID called_id, VALUE klass, VALUE data, int pop_p)
10626 {
10627 struct rb_trace_arg_struct trace_arg;
10628 ((void)0);
10629 trace_arg.event = flag;
10630 trace_arg.ec = ec;
10631 trace_arg.cfp = ec->cfp;
10632 trace_arg.self = self;
10633 trace_arg.id = id;
10634 trace_arg.called_id = called_id;
10635 trace_arg.klass = klass;
10636 trace_arg.data = data;
10637 trace_arg.path = ((VALUE)RUBY_Qundef);
10638 trace_arg.klass_solved = 0;
10639 rb_exec_event_hooks(&trace_arg, hooks, pop_p);
10640 }
10641 static inline rb_hook_list_t *
10642 rb_vm_global_hooks(const rb_execution_context_t *ec)
10643 {
10644 return &rb_ec_vm_ptr(ec)->global_hooks;
10645 }
10646 #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)
10647 #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)
10648 static inline void
10649 rb_exec_event_hook_script_compiled(rb_execution_context_t *ec, const rb_iseq_t *iseq, VALUE eval_script)
10650 {
10651 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);
10652 }
10653 void rb_vm_trap_exit(rb_vm_t *vm);
10654
10655 #pragma GCC visibility push(default)
10656
10657 int rb_thread_check_trap_pending(void);
10658 #define RUBY_EVENT_COVERAGE_LINE 0x010000
10659 #define RUBY_EVENT_COVERAGE_BRANCH 0x020000
10660 extern VALUE rb_get_coverages(void);
10661 extern void rb_set_coverages(VALUE, int, VALUE);
10662 extern void rb_clear_coverages(void);
10663 extern void rb_reset_coverages(void);
10664 void rb_postponed_job_flush(rb_vm_t *vm);
10665
10666 #pragma GCC visibility pop
10667
10668 #define RUBY_DEBUG_H
10669
10670 #pragma GCC visibility push(default)
10671
10672 #define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
10673 #define dp(v) ruby_debug_print_value(-1, 0, "", (v))
10674 #define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
10675 #define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
10676 VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
10677 ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
10678 NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
10679 int ruby_debug_print_indent(int level, int debug_level, int indent_level);
10680 void ruby_debug_gc_check_func(void);
10681 void ruby_set_debug_option(const char *str);
10682
10683 #pragma GCC visibility pop
10684
10685 #define RUBY_ISEQ_H 1
10686 extern const int ruby_api_version[];
10687 #define ISEQ_MAJOR_VERSION ((unsigned int)ruby_api_version[0])
10688 #define ISEQ_MINOR_VERSION ((unsigned int)ruby_api_version[1])
10689 extern const ID rb_iseq_shared_exc_local_tbl[];
10690 static inline size_t
10691 rb_call_info_kw_arg_bytes(int keyword_len)
10692 {
10693 return rb_size_mul_add_or_raise(
10694 keyword_len - 1, sizeof(VALUE), sizeof(struct rb_call_info_kw_arg),
10695 rb_eRuntimeError);
10696 }
10697 #define ISEQ_COVERAGE(iseq) iseq->body->variable.coverage
10698 #define ISEQ_COVERAGE_SET(iseq,cov) RB_OBJ_WRITE(iseq, &iseq->body->variable.coverage, cov)
10699 #define ISEQ_LINE_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_LINES)
10700 #define ISEQ_BRANCH_COVERAGE(iseq) RARRAY_AREF(ISEQ_COVERAGE(iseq), COVERAGE_INDEX_BRANCHES)
10701 #define ISEQ_PC2BRANCHINDEX(iseq) iseq->body->variable.pc2branchindex
10702 #define ISEQ_PC2BRANCHINDEX_SET(iseq,h) RB_OBJ_WRITE(iseq, &iseq->body->variable.pc2branchindex, h)
10703 #define ISEQ_FLIP_CNT(iseq) (iseq)->body->variable.flip_count
10704 static inline rb_snum_t
10705 ISEQ_FLIP_CNT_INCREMENT(const rb_iseq_t *iseq)
10706 {
10707 rb_snum_t cnt = iseq->body->variable.flip_count;
10708 iseq->body->variable.flip_count += 1;
10709 return cnt;
10710 }
10711 static inline VALUE *
10712 ISEQ_ORIGINAL_ISEQ(const rb_iseq_t *iseq)
10713 {
10714 return iseq->body->variable.original_iseq;
10715 }
10716 static inline void
10717 ISEQ_ORIGINAL_ISEQ_CLEAR(const rb_iseq_t *iseq)
10718 {
10719 void *ptr = iseq->body->variable.original_iseq;
10720 iseq->body->variable.original_iseq = ((void *)0);
10721 if (ptr) {
10722 ruby_xfree(ptr);
10723 }
10724 }
10725 static inline VALUE *
10726 ISEQ_ORIGINAL_ISEQ_ALLOC(const rb_iseq_t *iseq, long size)
10727 {
10728 return iseq->body->variable.original_iseq =
10729 ((VALUE*)ruby_xmalloc2((size_t)(size),sizeof(VALUE)));
10730 }
10731 #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)
10732 #define ISEQ_NOT_LOADED_YET IMEMO_FL_USER1
10733 #define ISEQ_USE_COMPILE_DATA IMEMO_FL_USER2
10734 #define ISEQ_TRANSLATED IMEMO_FL_USER3
10735 #define ISEQ_MARKABLE_ISEQ IMEMO_FL_USER4
10736 #define ISEQ_EXECUTABLE_P(iseq) (FL_TEST_RAW((iseq), ISEQ_NOT_LOADED_YET | ISEQ_USE_COMPILE_DATA) == 0)
10737 struct iseq_compile_data {
10738 const VALUE err_info;
10739 const VALUE catch_table_ary;
10740 struct iseq_label_data *start_label;
10741 struct iseq_label_data *end_label;
10742 struct iseq_label_data *redo_label;
10743 const rb_iseq_t *current_block;
10744 struct iseq_compile_data_ensure_node_stack *ensure_node_stack;
10745 struct {
10746 struct iseq_compile_data_storage *storage_head;
10747 struct iseq_compile_data_storage *storage_current;
10748 } node;
10749 struct {
10750 struct iseq_compile_data_storage *storage_head;
10751 struct iseq_compile_data_storage *storage_current;
10752 } insn;
10753 int loopval_popped;
10754 int last_line;
10755 int label_no;
10756 int node_level;
10757 unsigned int ci_index;
10758 unsigned int ci_kw_index;
10759 const rb_compile_option_t *option;
10760 struct rb_id_table *ivar_cache_table;
10761 const struct rb_builtin_function *builtin_function_table;
10762 };
10763 static inline struct iseq_compile_data *
10764 ISEQ_COMPILE_DATA(const rb_iseq_t *iseq)
10765 {
10766 if (iseq->flags & ((VALUE)RUBY_FL_USER6)) {
10767 return iseq->aux.compile_data;
10768 }
10769 else {
10770 return ((void *)0);
10771 }
10772 }
10773 static inline void
10774 ISEQ_COMPILE_DATA_ALLOC(rb_iseq_t *iseq)
10775 {
10776 iseq->aux.compile_data = (((struct iseq_compile_data*)ruby_xcalloc((size_t)(1),sizeof(struct iseq_compile_data))));
10777 iseq->flags |= ((VALUE)RUBY_FL_USER6);
10778 }
10779 static inline void
10780 ISEQ_COMPILE_DATA_CLEAR(rb_iseq_t *iseq)
10781 {
10782 iseq->flags &= ~((VALUE)RUBY_FL_USER6);
10783 iseq->aux.compile_data = ((void *)0);
10784 }
10785 static inline rb_iseq_t *
10786 iseq_imemo_alloc(void)
10787 {
10788 return (rb_iseq_t *)rb_imemo_new(imemo_iseq, 0, 0, 0, 0);
10789 }
10790 VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt);
10791 void rb_ibf_load_iseq_complete(rb_iseq_t *iseq);
10792 const rb_iseq_t *rb_iseq_ibf_load(VALUE str);
10793 const rb_iseq_t *rb_iseq_ibf_load_bytes(const char *cstr, size_t);
10794 VALUE rb_iseq_ibf_load_extra_data(VALUE str);
10795 void rb_iseq_init_trace(rb_iseq_t *iseq);
10796 int rb_iseq_add_local_tracepoint_recursively(const rb_iseq_t *iseq, rb_event_flag_t turnon_events, VALUE tpval, unsigned int target_line);
10797 int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval);
10798 const rb_iseq_t *rb_iseq_load_iseq(VALUE fname);
10799 unsigned int *rb_iseq_insns_info_decode_positions(const struct rb_iseq_constant_body *body);
10800
10801 #pragma GCC visibility push(default)
10802
10803 VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node);
10804 VALUE rb_iseq_compile_callback(rb_iseq_t *iseq, const struct rb_iseq_new_with_callback_callback_func * ifunc);
10805 VALUE *rb_iseq_original_iseq(const rb_iseq_t *iseq);
10806 void rb_iseq_build_from_ary(rb_iseq_t *iseq, VALUE misc,
10807 VALUE locals, VALUE args,
10808 VALUE exception, VALUE body);
10809 void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena);
10810 VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt);
10811 VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc);
10812 unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos);
10813 void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events);
10814 void rb_iseq_trace_set_all(rb_event_flag_t turnon_events);
10815 void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq);
10816 struct rb_iseq_constant_body *rb_iseq_constant_body_alloc(void);
10817 VALUE rb_iseqw_new(const rb_iseq_t *iseq);
10818 const rb_iseq_t *rb_iseqw_to_iseq(VALUE iseqw);
10819 VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq);
10820 VALUE rb_iseq_label(const rb_iseq_t *iseq);
10821 VALUE rb_iseq_base_label(const rb_iseq_t *iseq);
10822 VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq);
10823 VALUE rb_iseq_method_name(const rb_iseq_t *iseq);
10824 void rb_iseq_code_location(const rb_iseq_t *iseq, int *first_lineno, int *first_column, int *last_lineno, int *last_column);
10825 void rb_iseq_remove_coverage_all(void);
10826 const rb_iseq_t *rb_method_iseq(VALUE body);
10827 const rb_iseq_t *rb_proc_get_iseq(VALUE proc, int *is_proc);
10828 struct rb_compile_option_struct {
10829 unsigned int inline_const_cache: 1;
10830 unsigned int peephole_optimization: 1;
10831 unsigned int tailcall_optimization: 1;
10832 unsigned int specialized_instruction: 1;
10833 unsigned int operands_unification: 1;
10834 unsigned int instructions_unification: 1;
10835 unsigned int stack_caching: 1;
10836 unsigned int frozen_string_literal: 1;
10837 unsigned int debug_frozen_string_literal: 1;
10838 unsigned int coverage_enabled: 1;
10839 int debug_level;
10840 };
10841 struct iseq_insn_info_entry {
10842 int line_no;
10843 rb_event_flag_t events;
10844 };
10845 struct iseq_catch_table_entry {
10846 enum catch_type {
10847 CATCH_TYPE_RESCUE = (((VALUE)(1))<<1 | RUBY_FIXNUM_FLAG),
10848 CATCH_TYPE_ENSURE = (((VALUE)(2))<<1 | RUBY_FIXNUM_FLAG),
10849 CATCH_TYPE_RETRY = (((VALUE)(3))<<1 | RUBY_FIXNUM_FLAG),
10850 CATCH_TYPE_BREAK = (((VALUE)(4))<<1 | RUBY_FIXNUM_FLAG),
10851 CATCH_TYPE_REDO = (((VALUE)(5))<<1 | RUBY_FIXNUM_FLAG),
10852 CATCH_TYPE_NEXT = (((VALUE)(6))<<1 | RUBY_FIXNUM_FLAG)
10853 } type;
10854 rb_iseq_t *iseq;
10855 unsigned int start;
10856 unsigned int end;
10857 unsigned int cont;
10858 unsigned int sp;
10859 };
10860 struct iseq_catch_table { unsigned int size; struct iseq_catch_table_entry entries[]; } __attribute__((packed));
10861 static inline int
10862 iseq_catch_table_bytes(int n)
10863 {
10864 enum {
10865 catch_table_entry_size = sizeof(struct iseq_catch_table_entry),
10866 catch_table_entries_max = (0x7fffffff - __builtin_offsetof (struct iseq_catch_table, entries)) / catch_table_entry_size
10867 };
10868 if (n > catch_table_entries_max) rb_fatal("too large iseq_catch_table - %d", n);
10869 return (int)(__builtin_offsetof (struct iseq_catch_table, entries) +
10870 n * catch_table_entry_size);
10871 }
10872 #define INITIAL_ISEQ_COMPILE_DATA_STORAGE_BUFF_SIZE (512)
10873 struct iseq_compile_data_storage {
10874 struct iseq_compile_data_storage *next;
10875 unsigned int pos;
10876 unsigned int size;
10877 char buff[];
10878 };
10879 enum defined_type {
10880 DEFINED_NOT_DEFINED,
10881 DEFINED_NIL = 1,
10882 DEFINED_IVAR,
10883 DEFINED_LVAR,
10884 DEFINED_GVAR,
10885 DEFINED_CVAR,
10886 DEFINED_CONST,
10887 DEFINED_METHOD,
10888 DEFINED_YIELD,
10889 DEFINED_ZSUPER,
10890 DEFINED_SELF,
10891 DEFINED_TRUE,
10892 DEFINED_FALSE,
10893 DEFINED_ASGN,
10894 DEFINED_EXPR,
10895 DEFINED_IVAR2,
10896 DEFINED_REF,
10897 DEFINED_FUNC,
10898 DEFINED_CONST_FROM
10899 };
10900 VALUE rb_iseq_defined_string(enum defined_type type);
10901 VALUE rb_iseq_local_variables(const rb_iseq_t *iseq);
10902
10903 #pragma GCC visibility pop
10904
10905 #define RUBY_EVAL_INTERN_H
10906 static inline void
10907 vm_passed_block_handler_set(rb_execution_context_t *ec, VALUE block_handler)
10908 {
10909 vm_block_handler_verify(block_handler);
10910 ec->passed_block_handler = block_handler;
10911 }
10912 static inline void
10913 pass_passed_block_handler(rb_execution_context_t *ec)
10914 {
10915 VALUE block_handler = rb_vm_frame_block_handler(ec->cfp);
10916 vm_passed_block_handler_set(ec, block_handler);
10917 VM_ENV_FLAGS_SET(ec->cfp->ep, VM_FRAME_FLAG_PASSED);
10918 }
10919 #define PASS_PASSED_BLOCK_HANDLER_EC(ec) pass_passed_block_handler(ec)
10920 #define PASS_PASSED_BLOCK_HANDLER() pass_passed_block_handler(GET_EC())
10921 #define ruby_setjmp(env) RUBY_SETJMP(env)
10922 #define ruby_longjmp(env,val) RUBY_LONGJMP((env),(val))
10923 int _setjmp(jmp_buf);
10924 __attribute__ ((__noreturn__)) void _longjmp(jmp_buf, int);
10925 #define __ERRNO_H__
10926 typedef int error_t;
10927 #define __error_t_defined 1
10928 #define _SYS_ERRNO_H_
10929 #define errno (*__errno())
10930 extern int *__errno (void);
10931 extern __attribute__((dllimport)) const char * const _sys_errlist[];
10932 extern __attribute__((dllimport)) int _sys_nerr;
10933 extern __attribute__((dllimport)) const char * const sys_errlist[];
10934 extern __attribute__((dllimport)) int sys_nerr;
10935 extern __attribute__((dllimport)) char *program_invocation_name;
10936 extern __attribute__((dllimport)) char *program_invocation_short_name;
10937 #define __errno_r(ptr) ((ptr)->_errno)
10938 #define EPERM 1
10939 #define ENOENT 2
10940 #define ESRCH 3
10941 #define EINTR 4
10942 #define EIO 5
10943 #define ENXIO 6
10944 #define E2BIG 7
10945 #define ENOEXEC 8
10946 #define EBADF 9
10947 #define ECHILD 10
10948 #define EAGAIN 11
10949 #define ENOMEM 12
10950 #define EACCES 13
10951 #define EFAULT 14
10952 #define ENOTBLK 15
10953 #define EBUSY 16
10954 #define EEXIST 17
10955 #define EXDEV 18
10956 #define ENODEV 19
10957 #define ENOTDIR 20
10958 #define EISDIR 21
10959 #define EINVAL 22
10960 #define ENFILE 23
10961 #define EMFILE 24
10962 #define ENOTTY 25
10963 #define ETXTBSY 26
10964 #define EFBIG 27
10965 #define ENOSPC 28
10966 #define ESPIPE 29
10967 #define EROFS 30
10968 #define EMLINK 31
10969 #define EPIPE 32
10970 #define EDOM 33
10971 #define ERANGE 34
10972 #define ENOMSG 35
10973 #define EIDRM 36
10974 #define ECHRNG 37
10975 #define EL2NSYNC 38
10976 #define EL3HLT 39
10977 #define EL3RST 40
10978 #define ELNRNG 41
10979 #define EUNATCH 42
10980 #define ENOCSI 43
10981 #define EL2HLT 44
10982 #define EDEADLK 45
10983 #define ENOLCK 46
10984 #define EBADE 50
10985 #define EBADR 51
10986 #define EXFULL 52
10987 #define ENOANO 53
10988 #define EBADRQC 54
10989 #define EBADSLT 55
10990 #define EDEADLOCK 56
10991 #define EBFONT 57
10992 #define ENOSTR 60
10993 #define ENODATA 61
10994 #define ETIME 62
10995 #define ENOSR 63
10996 #define ENONET 64
10997 #define ENOPKG 65
10998 #define EREMOTE 66
10999 #define ENOLINK 67
11000 #define EADV 68
11001 #define ESRMNT 69
11002 #define ECOMM 70
11003 #define EPROTO 71
11004 #define EMULTIHOP 74
11005 #define ELBIN 75
11006 #define EDOTDOT 76
11007 #define EBADMSG 77
11008 #define EFTYPE 79
11009 #define ENOTUNIQ 80
11010 #define EBADFD 81
11011 #define EREMCHG 82
11012 #define ELIBACC 83
11013 #define ELIBBAD 84
11014 #define ELIBSCN 85
11015 #define ELIBMAX 86
11016 #define ELIBEXEC 87
11017 #define ENOSYS 88
11018 #define ENMFILE 89
11019 #define ENOTEMPTY 90
11020 #define ENAMETOOLONG 91
11021 #define ELOOP 92
11022 #define EOPNOTSUPP 95
11023 #define EPFNOSUPPORT 96
11024 #define ECONNRESET 104
11025 #define ENOBUFS 105
11026 #define EAFNOSUPPORT 106
11027 #define EPROTOTYPE 107
11028 #define ENOTSOCK 108
11029 #define ENOPROTOOPT 109
11030 #define ESHUTDOWN 110
11031 #define ECONNREFUSED 111
11032 #define EADDRINUSE 112
11033 #define ECONNABORTED 113
11034 #define ENETUNREACH 114
11035 #define ENETDOWN 115
11036 #define ETIMEDOUT 116
11037 #define EHOSTDOWN 117
11038 #define EHOSTUNREACH 118
11039 #define EINPROGRESS 119
11040 #define EALREADY 120
11041 #define EDESTADDRREQ 121
11042 #define EMSGSIZE 122
11043 #define EPROTONOSUPPORT 123
11044 #define ESOCKTNOSUPPORT 124
11045 #define EADDRNOTAVAIL 125
11046 #define ENETRESET 126
11047 #define EISCONN 127
11048 #define ENOTCONN 128
11049 #define ETOOMANYREFS 129
11050 #define EPROCLIM 130
11051 #define EUSERS 131
11052 #define EDQUOT 132
11053 #define ESTALE 133
11054 #define ENOTSUP 134
11055 #define ENOMEDIUM 135
11056 #define ENOSHARE 136
11057 #define ECASECLASH 137
11058 #define EILSEQ 138
11059 #define EOVERFLOW 139
11060 #define ECANCELED 140
11061 #define ENOTRECOVERABLE 141
11062 #define EOWNERDEAD 142
11063 #define ESTRPIPE 143
11064 #define EWOULDBLOCK EAGAIN
11065 #define __ELASTERROR 2000
11066 #define _SYS_PARAM_H
11067 #define __need_NULL
11068 #undef __need_ptrdiff_t
11069 #undef __need_size_t
11070 #undef __need_wchar_t
11071 #undef NULL
11072 #define NULL ((void *)0)
11073 #undef __need_NULL
11074 #define offsetof(TYPE,MEMBER) __builtin_offsetof (TYPE, MEMBER)
11075 #define NOFILE 8192
11076 #define NGROUPS NGROUPS_MAX
11077 #define HZ 1000
11078 #define MAXHOSTNAMELEN 128
11079 #define MAXPATHLEN PATH_MAX
11080 #define MAXSYMLINKS SYMLOOP_MAX
11081 #define DEV_BSIZE 1024
11082 #define NBBY 8
11083 #define setbit(a,i) ((a)[(i)/NBBY] |= 1<<((i)%NBBY))
11084 #define clrbit(a,i) ((a)[(i)/NBBY] &= ~(1<<((i)%NBBY)))
11085 #define isset(a,i) ((a)[(i)/NBBY] & (1<<((i)%NBBY)))
11086 #define isclr(a,i) (((a)[(i)/NBBY] & (1<<((i)%NBBY))) == 0)
11087 #define howmany(x,y) (((x)+((y)-1))/(y))
11088 #define rounddown(x,y) (((x)/(y))*(y))
11089 #define roundup(x,y) ((((x)+((y)-1))/(y))*(y))
11090 #define roundup2(x,y) (((x)+((y)-1))&(~((y)-1)))
11091 #define powerof2(x) ((((x)-1)&(x))==0)
11092 #define MIN(a,b) (((a)<(b))?(a):(b))
11093 #define MAX(a,b) (((a)>(b))?(a):(b))
11094 #define SAVE_ROOT_JMPBUF_BEFORE_STMT
11095 #define SAVE_ROOT_JMPBUF_AFTER_STMT
11096 #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)
11097 #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;
11098 #define EC_POP_TAG() _ec->tag = _tag.prev; } while (0)
11099 #define EC_TMPPOP_TAG() _ec->tag = _tag.prev
11100 #define EC_REPUSH_TAG() (void)(_ec->tag = &_tag)
11101 #define VAR_FROM_MEMORY(var) (var)
11102 #define VAR_INITIALIZED(var) ((void)&(var))
11103 #define VAR_NOCLOBBERED(var) var
11104 static inline int
11105 rb_ec_tag_state(const rb_execution_context_t *ec)
11106 {
11107 enum ruby_tag_type state = ec->tag->state;
11108 ec->tag->state = RUBY_TAG_NONE;
11109 return state;
11110 }
11111 __attribute__ ((__noreturn__)) static inline void rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st);
11112 static inline void
11113 rb_ec_tag_jump(const rb_execution_context_t *ec, enum ruby_tag_type st)
11114 {
11115 ec->tag->state = st;
11116 __builtin_longjmp(((ec->tag->buf)),(1));
11117 }
11118 #define EC_EXEC_TAG() (ruby_setjmp(_tag.buf) ? rb_ec_tag_state(VAR_FROM_MEMORY(_ec)) : (EC_REPUSH_TAG(), 0))
11119 #define EC_JUMP_TAG(ec,st) rb_ec_tag_jump(ec, st)
11120 #define INTERNAL_EXCEPTION_P(exc) FIXNUM_P(exc)
11121 #define CREF_FL_PUSHED_BY_EVAL IMEMO_FL_USER1
11122 #define CREF_FL_OMOD_SHARED IMEMO_FL_USER2
11123 static inline VALUE
11124 CREF_CLASS(const rb_cref_t *cref)
11125 {
11126 return cref->klass;
11127 }
11128 static inline rb_cref_t *
11129 CREF_NEXT(const rb_cref_t *cref)
11130 {
11131 return cref->next;
11132 }
11133 static inline const rb_scope_visibility_t *
11134 CREF_SCOPE_VISI(const rb_cref_t *cref)
11135 {
11136 return &cref->scope_visi;
11137 }
11138 static inline VALUE
11139 CREF_REFINEMENTS(const rb_cref_t *cref)
11140 {
11141 return cref->refinements;
11142 }
11143 static inline void
11144 CREF_REFINEMENTS_SET(rb_cref_t *cref, VALUE refs)
11145 {
11146 __extension__({
11147 #pragma GCC diagnostic push
11148 ;
11149 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11150 ; typeof(rb_obj_write((VALUE)(cref), (VALUE *)(&cref->refinements), (VALUE)(refs), "../ruby-2.7.0/eval_intern.h", 220)) unaligned_member_access_result = (rb_obj_write((VALUE)(cref), (VALUE *)(&cref->refinements), (VALUE)(refs), "../ruby-2.7.0/eval_intern.h", 220));
11151 #pragma GCC diagnostic pop
11152 ; unaligned_member_access_result; });
11153 }
11154 static inline int
11155 CREF_PUSHED_BY_EVAL(const rb_cref_t *cref)
11156 {
11157 return cref->flags & ((VALUE)RUBY_FL_USER5);
11158 }
11159 static inline void
11160 CREF_PUSHED_BY_EVAL_SET(rb_cref_t *cref)
11161 {
11162 cref->flags |= ((VALUE)RUBY_FL_USER5);
11163 }
11164 static inline int
11165 CREF_OMOD_SHARED(const rb_cref_t *cref)
11166 {
11167 return cref->flags & ((VALUE)RUBY_FL_USER6);
11168 }
11169 static inline void
11170 CREF_OMOD_SHARED_SET(rb_cref_t *cref)
11171 {
11172 cref->flags |= ((VALUE)RUBY_FL_USER6);
11173 }
11174 static inline void
11175 CREF_OMOD_SHARED_UNSET(rb_cref_t *cref)
11176 {
11177 cref->flags &= ~((VALUE)RUBY_FL_USER6);
11178 }
11179 enum {
11180 RAISED_EXCEPTION = 1,
11181 RAISED_STACKOVERFLOW = 2,
11182 RAISED_NOMEMORY = 4
11183 };
11184 #define rb_ec_raised_set(ec,f) ((ec)->raised_flag |= (f))
11185 #define rb_ec_raised_reset(ec,f) ((ec)->raised_flag &= ~(f))
11186 #define rb_ec_raised_p(ec,f) (((ec)->raised_flag & (f)) != 0)
11187 #define rb_ec_raised_clear(ec) ((ec)->raised_flag = 0)
11188 int rb_ec_set_raised(rb_execution_context_t *ec);
11189 int rb_ec_reset_raised(rb_execution_context_t *ec);
11190 int rb_ec_stack_check(rb_execution_context_t *ec);
11191 VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self);
11192 VALUE rb_make_exception(int argc, const VALUE *argv);
11193 __attribute__ ((__noreturn__)) void rb_method_name_error(VALUE, VALUE);
11194 __attribute__ ((__noreturn__)) void rb_fiber_start(void);
11195 __attribute__ ((__noreturn__)) void rb_print_undef(VALUE, ID, rb_method_visibility_t);
11196 __attribute__ ((__noreturn__)) void rb_print_undef_str(VALUE, VALUE);
11197 __attribute__ ((__noreturn__)) void rb_print_inaccessible(VALUE, ID, rb_method_visibility_t);
11198 __attribute__ ((__noreturn__)) void rb_vm_localjump_error(const char *,VALUE, int);
11199 __attribute__ ((__noreturn__)) void rb_vm_jump_tag_but_local_jump(int);
11200 VALUE rb_vm_make_jump_tag_but_local_jump(int state, VALUE val);
11201 rb_cref_t *rb_vm_cref(void);
11202 rb_cref_t *rb_vm_cref_replace_with_duplicated_cref(void);
11203 VALUE rb_vm_call_cfunc(VALUE recv, VALUE (*func)(VALUE), VALUE arg, VALUE block_handler, VALUE filename);
11204 void rb_vm_set_progname(VALUE filename);
11205 void rb_thread_terminate_all(void);
11206 VALUE rb_vm_cbase(void);
11207 VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec);
11208 VALUE rb_ec_backtrace_str_ary(const rb_execution_context_t *ec, long lev, long n);
11209 VALUE rb_ec_backtrace_location_ary(const rb_execution_context_t *ec, long lev, long n);
11210 #define CharNext(p) ((p) + mblen((p), RUBY_MBCHAR_MAXSIZE))
11211 static inline void
11212 translit_char(char *p, int from, int to)
11213 {
11214 while (*p) {
11215 if ((unsigned char)*p == from)
11216 *p = to;
11217 p = ((p) + mblen((p), 0x7fffffff));
11218 }
11219 }
11220 #define BUILTIN_H_INCLUDED
11221 struct rb_builtin_function {
11222 const void * const func_ptr;
11223 const int argc;
11224 const int index;
11225 const char * const name;
11226 };
11227 #define RB_BUILTIN_FUNCTION(_i,_name,_fname,_arity) { .name = #_name, .func_ptr = (void *)_fname, .argc = _arity, .index = _i }
11228 void rb_load_with_builtin_functions(const char *feature_name, const struct rb_builtin_function *table);
11229 static inline void rb_builtin_function_check_arity0(VALUE (*f)(rb_execution_context_t *ec, VALUE self)){}
11230 static inline void rb_builtin_function_check_arity1(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE)){}
11231 static inline void rb_builtin_function_check_arity2(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE)){}
11232 static inline void rb_builtin_function_check_arity3(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE)){}
11233 static inline void rb_builtin_function_check_arity4(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE)){}
11234 static inline void rb_builtin_function_check_arity5(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11235 static inline void rb_builtin_function_check_arity6(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11236 static inline void rb_builtin_function_check_arity7(VALUE (*f)(rb_execution_context_t *ec, VALUE self, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE)){}
11237 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)){}
11238 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)){}
11239 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)){}
11240 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)){}
11241 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)){}
11242 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)){}
11243 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)){}
11244 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)){}
11245 VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index);
11246 __attribute__ ((__pure__)) static inline VALUE rb_vm_lvar(rb_execution_context_t *ec, int index);
11247 static inline VALUE
11248 rb_vm_lvar(rb_execution_context_t *ec, int index)
11249 {
11250 return ec->cfp->ep[index];
11251 }
11252 struct builtin_binary {
11253 const char *feature;
11254 const unsigned char *bin;
11255 size_t bin_size;
11256 };
11257 #define _PROBES_H
11258 #define DTRACE_PROBES_DISABLED 1
11259 #define RUBY_DTRACE_METHOD_ENTRY_ENABLED() 0
11260 #define RUBY_DTRACE_METHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11261 #define RUBY_DTRACE_METHOD_RETURN_ENABLED() 0
11262 #define RUBY_DTRACE_METHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11263 #define RUBY_DTRACE_CMETHOD_ENTRY_ENABLED() 0
11264 #define RUBY_DTRACE_CMETHOD_ENTRY(classname,methodname,filename,lineno) do {} while (0)
11265 #define RUBY_DTRACE_CMETHOD_RETURN_ENABLED() 0
11266 #define RUBY_DTRACE_CMETHOD_RETURN(classname,methodname,filename,lineno) do {} while (0)
11267 #define RUBY_DTRACE_REQUIRE_ENTRY_ENABLED() 0
11268 #define RUBY_DTRACE_REQUIRE_ENTRY(rquiredfile,filename,lineno) do {} while (0)
11269 #define RUBY_DTRACE_REQUIRE_RETURN_ENABLED() 0
11270 #define RUBY_DTRACE_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11271 #define RUBY_DTRACE_FIND_REQUIRE_ENTRY_ENABLED() 0
11272 #define RUBY_DTRACE_FIND_REQUIRE_ENTRY(requiredfile,filename,lineno) do {} while (0)
11273 #define RUBY_DTRACE_FIND_REQUIRE_RETURN_ENABLED() 0
11274 #define RUBY_DTRACE_FIND_REQUIRE_RETURN(requiredfile,filename,lineno) do {} while (0)
11275 #define RUBY_DTRACE_LOAD_ENTRY_ENABLED() 0
11276 #define RUBY_DTRACE_LOAD_ENTRY(loadedfile,filename,lineno) do {} while (0)
11277 #define RUBY_DTRACE_LOAD_RETURN_ENABLED() 0
11278 #define RUBY_DTRACE_LOAD_RETURN(loadedfile,filename,lineno) do {} while (0)
11279 #define RUBY_DTRACE_RAISE_ENABLED() 0
11280 #define RUBY_DTRACE_RAISE(classname,filename,lineno) do {} while (0)
11281 #define RUBY_DTRACE_OBJECT_CREATE_ENABLED() 0
11282 #define RUBY_DTRACE_OBJECT_CREATE(classname,filename,lineno) do {} while (0)
11283 #define RUBY_DTRACE_ARRAY_CREATE_ENABLED() 0
11284 #define RUBY_DTRACE_ARRAY_CREATE(length,filename,lineno) do {} while (0)
11285 #define RUBY_DTRACE_HASH_CREATE_ENABLED() 0
11286 #define RUBY_DTRACE_HASH_CREATE(length,filename,lineno) do {} while (0)
11287 #define RUBY_DTRACE_STRING_CREATE_ENABLED() 0
11288 #define RUBY_DTRACE_STRING_CREATE(length,filename,lineno) do {} while (0)
11289 #define RUBY_DTRACE_SYMBOL_CREATE_ENABLED() 0
11290 #define RUBY_DTRACE_SYMBOL_CREATE(str,filename,lineno) do {} while (0)
11291 #define RUBY_DTRACE_PARSE_BEGIN_ENABLED() 0
11292 #define RUBY_DTRACE_PARSE_BEGIN(sourcefile,lineno) do {} while (0)
11293 #define RUBY_DTRACE_PARSE_END_ENABLED() 0
11294 #define RUBY_DTRACE_PARSE_END(sourcefile,lineno) do {} while (0)
11295 #define RUBY_DTRACE_INSN_ENABLED() 0
11296 #define RUBY_DTRACE_INSN(insns_name) do {} while (0)
11297 #define RUBY_DTRACE_INSN_OPERAND_ENABLED() 0
11298 #define RUBY_DTRACE_INSN_OPERAND(val,insns_name) do {} while (0)
11299 #define RUBY_DTRACE_GC_MARK_BEGIN_ENABLED() 0
11300 #define RUBY_DTRACE_GC_MARK_BEGIN() do {} while (0)
11301 #define RUBY_DTRACE_GC_MARK_END_ENABLED() 0
11302 #define RUBY_DTRACE_GC_MARK_END() do {} while (0)
11303 #define RUBY_DTRACE_GC_SWEEP_BEGIN_ENABLED() 0
11304 #define RUBY_DTRACE_GC_SWEEP_BEGIN() do {} while (0)
11305 #define RUBY_DTRACE_GC_SWEEP_END_ENABLED() 0
11306 #define RUBY_DTRACE_GC_SWEEP_END() do {} while (0)
11307 #define RUBY_DTRACE_METHOD_CACHE_CLEAR_ENABLED() 0
11308 #define RUBY_DTRACE_METHOD_CACHE_CLEAR(class,filename,lineno) do {} while (0)
11309 #define RUBY_PROBES_HELPER_H
11310 struct ruby_dtrace_method_hook_args {
11311 const char *classname;
11312 const char *methodname;
11313 const char *filename;
11314 int line_no;
11315 volatile VALUE klass;
11316 volatile VALUE name;
11317 };
11318 __attribute__ ((__noinline__)) int rb_dtrace_setup(rb_execution_context_t *, VALUE, ID, struct ruby_dtrace_method_hook_args *);
11319 #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)
11320 #define RUBY_DTRACE_METHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_ENTRY, ec, klass, id)
11321 #define RUBY_DTRACE_METHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(METHOD_RETURN, ec, klass, id)
11322 #define RUBY_DTRACE_CMETHOD_ENTRY_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_ENTRY, ec, klass, id)
11323 #define RUBY_DTRACE_CMETHOD_RETURN_HOOK(ec,klass,id) RUBY_DTRACE_METHOD_HOOK(CMETHOD_RETURN, ec, klass, id)
11324 VALUE rb_str_concat_literals(size_t, const VALUE*);
11325 __attribute__ ((__visibility__("default"))) extern
11326 VALUE rb_vm_exec(rb_execution_context_t *, int);
11327 __attribute__ ((__pure__)) static inline const VALUE *VM_EP_LEP(const VALUE *);
11328 static inline const VALUE *
11329 VM_EP_LEP(const VALUE *ep)
11330 {
11331 while (!VM_ENV_LOCAL_P(ep)) {
11332 ep = VM_ENV_PREV_EP(ep);
11333 }
11334 return ep;
11335 }
11336 static inline const rb_control_frame_t *
11337 rb_vm_search_cf_from_ep(const rb_execution_context_t *ec, const rb_control_frame_t *cfp, const VALUE * const ep)
11338 {
11339 if (!ep) {
11340 return ((void *)0);
11341 }
11342 else {
11343 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
11344 while (cfp < eocfp) {
11345 if (cfp->ep == ep) {
11346 return cfp;
11347 }
11348 cfp = ((cfp)+1);
11349 }
11350 return ((void *)0);
11351 }
11352 }
11353 const VALUE *
11354 rb_vm_ep_local_ep(const VALUE *ep)
11355 {
11356 return VM_EP_LEP(ep);
11357 }
11358 __attribute__ ((__pure__)) static inline const VALUE *VM_CF_LEP(const rb_control_frame_t * const cfp);
11359 static inline const VALUE *
11360 VM_CF_LEP(const rb_control_frame_t * const cfp)
11361 {
11362 return VM_EP_LEP(cfp->ep);
11363 }
11364 static inline const VALUE *
11365 VM_CF_PREV_EP(const rb_control_frame_t * const cfp)
11366 {
11367 return VM_ENV_PREV_EP(cfp->ep);
11368 }
11369 __attribute__ ((__pure__)) static inline VALUE VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp);
11370 static inline VALUE
11371 VM_CF_BLOCK_HANDLER(const rb_control_frame_t * const cfp)
11372 {
11373 const VALUE *ep = VM_CF_LEP(cfp);
11374 return VM_ENV_BLOCK_HANDLER(ep);
11375 }
11376 int
11377 rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
11378 {
11379 return VM_FRAME_CFRAME_KW_P(cfp);
11380 }
11381 int
11382 rb_vm_cframe_empty_keyword_p(const rb_control_frame_t *cfp)
11383 {
11384 return VM_FRAME_CFRAME_EMPTY_KW_P(cfp);
11385 }
11386 VALUE
11387 rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
11388 {
11389 return VM_CF_BLOCK_HANDLER(cfp);
11390 }
11391 static struct rb_captured_block *
11392 VM_CFP_TO_CAPTURED_BLOCK(const rb_control_frame_t *cfp)
11393 {
11394 ((void)0);
11395 return (struct rb_captured_block *)&cfp->self;
11396 }
11397 static rb_control_frame_t *
11398 VM_CAPTURED_BLOCK_TO_CFP(const struct rb_captured_block *captured)
11399 {
11400 rb_control_frame_t *cfp = ((rb_control_frame_t *)((VALUE *)(captured) - 3));
11401 ((void)0);
11402 ((void)0);
11403 return cfp;
11404 }
11405 static int
11406 VM_BH_FROM_CFP_P(VALUE block_handler, const rb_control_frame_t *cfp)
11407 {
11408 const struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
11409 return ((void *)((block_handler) & ~0x03)) == captured;
11410 }
11411 static VALUE
11412 vm_passed_block_handler(rb_execution_context_t *ec)
11413 {
11414 VALUE block_handler = ec->passed_block_handler;
11415 ec->passed_block_handler = 0;
11416 vm_block_handler_verify(block_handler);
11417 return block_handler;
11418 }
11419 static rb_cref_t *
11420 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)
11421 {
11422 VALUE refinements = ((VALUE)RUBY_Qnil);
11423 int omod_shared = 0;
11424 rb_cref_t *cref;
11425 union {
11426 rb_scope_visibility_t visi;
11427 VALUE value;
11428 } scope_visi;
11429 scope_visi.visi.method_visi = visi;
11430 scope_visi.visi.module_func = module_func;
11431 if (prev_cref != ((void *)0) && prev_cref != (void *)1 ) {
11432 refinements = CREF_REFINEMENTS(prev_cref);
11433 if (!!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
11434 omod_shared = 1;
11435 CREF_OMOD_SHARED_SET(prev_cref);
11436 }
11437 }
11438 cref = (rb_cref_t *)rb_imemo_new(imemo_cref, klass, (VALUE)(use_prev_prev ? CREF_NEXT(prev_cref) : prev_cref), scope_visi.value, refinements);
11439 if (pushed_by_eval) CREF_PUSHED_BY_EVAL_SET(cref);
11440 if (omod_shared) CREF_OMOD_SHARED_SET(cref);
11441 return cref;
11442 }
11443 static rb_cref_t *
11444 vm_cref_new(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
11445 {
11446 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 0);
11447 }
11448 static rb_cref_t *
11449 vm_cref_new_use_prev(VALUE klass, rb_method_visibility_t visi, int module_func, rb_cref_t *prev_cref, int pushed_by_eval)
11450 {
11451 return vm_cref_new0(klass, visi, module_func, prev_cref, pushed_by_eval, 1);
11452 }
11453 static int
11454 ref_delete_symkey(VALUE key, VALUE value, VALUE unused)
11455 {
11456 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;
11457 }
11458 static rb_cref_t *
11459 vm_cref_dup(const rb_cref_t *cref)
11460 {
11461 VALUE klass = CREF_CLASS(cref);
11462 const rb_scope_visibility_t *visi = CREF_SCOPE_VISI(cref);
11463 rb_cref_t *next_cref = CREF_NEXT(cref), *new_cref;
11464 int pushed_by_eval = CREF_PUSHED_BY_EVAL(cref);
11465 new_cref = vm_cref_new(klass, visi->method_visi, visi->module_func, next_cref, pushed_by_eval);
11466 if (!!((VALUE)(CREF_REFINEMENTS(cref)) != ((VALUE)RUBY_Qnil))) {
11467 VALUE ref = rb_hash_dup(CREF_REFINEMENTS(cref));
11468 rb_hash_foreach(ref, ref_delete_symkey, ((VALUE)RUBY_Qnil));
11469 CREF_REFINEMENTS_SET(new_cref, ref);
11470 CREF_OMOD_SHARED_UNSET(new_cref);
11471 }
11472 return new_cref;
11473 }
11474 static rb_cref_t *
11475 vm_cref_new_toplevel(rb_execution_context_t *ec)
11476 {
11477 rb_cref_t *cref = vm_cref_new(rb_cObject, METHOD_VISI_PRIVATE , 0, ((void *)0), 0);
11478 VALUE top_wrapper = rb_ec_thread_ptr(ec)->top_wrapper;
11479 if (top_wrapper) {
11480 cref = vm_cref_new(top_wrapper, METHOD_VISI_PRIVATE, 0, cref, 0);
11481 }
11482 return cref;
11483 }
11484 rb_cref_t *
11485 rb_vm_cref_new_toplevel(void)
11486 {
11487 return vm_cref_new_toplevel(rb_current_execution_context());
11488 }
11489 static void
11490 vm_cref_dump(const char *mesg, const rb_cref_t *cref)
11491 {
11492 fprintf(((__getreent())->_stderr), "vm_cref_dump: %s (%p)\n", mesg, (void *)cref);
11493 while (cref) {
11494 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));
11495 cref = CREF_NEXT(cref);
11496 }
11497 }
11498 void
11499 rb_vm_block_ep_update(VALUE obj, const struct rb_block *dst, const VALUE *ep)
11500 {
11501 *((const VALUE **)&dst->as.captured.ep) = ep;
11502 rb_obj_written((VALUE)(obj), (VALUE)(((VALUE)RUBY_Qundef)), (VALUE)(VM_ENV_ENVVAL(ep)), "../ruby-2.7.0/vm.c", 318);
11503 }
11504 static void
11505 vm_bind_update_env(VALUE bindval, rb_binding_t *bind, VALUE envval)
11506 {
11507 const rb_env_t *env = (rb_env_t *)envval;
11508 __extension__({
11509 #pragma GCC diagnostic push
11510 ;
11511 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
11512 ; typeof(rb_obj_write((VALUE)(bindval), (VALUE *)(&bind->block.as.captured.code.iseq), (VALUE)(env->iseq), "../ruby-2.7.0/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.0/vm.c", 325));
11513 #pragma GCC diagnostic pop
11514 ; unaligned_member_access_result; });
11515 rb_vm_block_ep_update(bindval, &bind->block, env->ep);
11516 }
11517 static VALUE vm_make_env_object(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
11518 extern VALUE rb_vm_invoke_bmethod(rb_execution_context_t *ec, rb_proc_t *proc, VALUE self,
11519 int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
11520 const rb_callable_method_entry_t *me);
11521 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);
11522 #define RUBY_MJIT_H 1
11523 #define USE_DEBUG_COUNTER 0
11524 #define RUBY_DEBUG_COUNTER_H 1
11525 enum rb_debug_counter_type {
11526 #define RB_DEBUG_COUNTER(name) RB_DEBUG_COUNTER_ ##name,
11527 RB_DEBUG_COUNTER_mc_inline_hit,
11528 RB_DEBUG_COUNTER_mc_inline_miss,
11529 RB_DEBUG_COUNTER_mc_global_hit,
11530 RB_DEBUG_COUNTER_mc_global_miss,
11531 RB_DEBUG_COUNTER_mc_global_state_miss,
11532 RB_DEBUG_COUNTER_mc_class_serial_miss,
11533 RB_DEBUG_COUNTER_mc_cme_complement,
11534 RB_DEBUG_COUNTER_mc_cme_complement_hit,
11535 RB_DEBUG_COUNTER_mc_search_super,
11536 RB_DEBUG_COUNTER_mc_miss_by_nome,
11537 RB_DEBUG_COUNTER_mc_miss_by_distinct,
11538 RB_DEBUG_COUNTER_mc_miss_by_refine,
11539 RB_DEBUG_COUNTER_mc_miss_by_visi,
11540 RB_DEBUG_COUNTER_mc_miss_spurious,
11541 RB_DEBUG_COUNTER_mc_miss_reuse_call,
11542 RB_DEBUG_COUNTER_ccf_general,
11543 RB_DEBUG_COUNTER_ccf_iseq_setup,
11544 RB_DEBUG_COUNTER_ccf_iseq_setup_0start,
11545 RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start,
11546 RB_DEBUG_COUNTER_ccf_iseq_fix,
11547 RB_DEBUG_COUNTER_ccf_iseq_opt,
11548 RB_DEBUG_COUNTER_ccf_iseq_kw1,
11549 RB_DEBUG_COUNTER_ccf_iseq_kw2,
11550 RB_DEBUG_COUNTER_ccf_cfunc,
11551 RB_DEBUG_COUNTER_ccf_ivar,
11552 RB_DEBUG_COUNTER_ccf_attrset,
11553 RB_DEBUG_COUNTER_ccf_method_missing,
11554 RB_DEBUG_COUNTER_ccf_zsuper,
11555 RB_DEBUG_COUNTER_ccf_bmethod,
11556 RB_DEBUG_COUNTER_ccf_opt_send,
11557 RB_DEBUG_COUNTER_ccf_opt_call,
11558 RB_DEBUG_COUNTER_ccf_opt_block_call,
11559 RB_DEBUG_COUNTER_ccf_super_method,
11560 RB_DEBUG_COUNTER_frame_push,
11561 RB_DEBUG_COUNTER_frame_push_method,
11562 RB_DEBUG_COUNTER_frame_push_block,
11563 RB_DEBUG_COUNTER_frame_push_class,
11564 RB_DEBUG_COUNTER_frame_push_top,
11565 RB_DEBUG_COUNTER_frame_push_cfunc,
11566 RB_DEBUG_COUNTER_frame_push_ifunc,
11567 RB_DEBUG_COUNTER_frame_push_eval,
11568 RB_DEBUG_COUNTER_frame_push_rescue,
11569 RB_DEBUG_COUNTER_frame_push_dummy,
11570 RB_DEBUG_COUNTER_frame_R2R,
11571 RB_DEBUG_COUNTER_frame_R2C,
11572 RB_DEBUG_COUNTER_frame_C2C,
11573 RB_DEBUG_COUNTER_frame_C2R,
11574 RB_DEBUG_COUNTER_ivar_get_ic_hit,
11575 RB_DEBUG_COUNTER_ivar_get_ic_miss,
11576 RB_DEBUG_COUNTER_ivar_get_ic_miss_serial,
11577 RB_DEBUG_COUNTER_ivar_get_ic_miss_unset,
11578 RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject,
11579 RB_DEBUG_COUNTER_ivar_set_ic_hit,
11580 RB_DEBUG_COUNTER_ivar_set_ic_miss,
11581 RB_DEBUG_COUNTER_ivar_set_ic_miss_serial,
11582 RB_DEBUG_COUNTER_ivar_set_ic_miss_unset,
11583 RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange,
11584 RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject,
11585 RB_DEBUG_COUNTER_ivar_get_base,
11586 RB_DEBUG_COUNTER_ivar_set_base,
11587 RB_DEBUG_COUNTER_lvar_get,
11588 RB_DEBUG_COUNTER_lvar_get_dynamic,
11589 RB_DEBUG_COUNTER_lvar_set,
11590 RB_DEBUG_COUNTER_lvar_set_dynamic,
11591 RB_DEBUG_COUNTER_lvar_set_slowpath,
11592 RB_DEBUG_COUNTER_gc_count,
11593 RB_DEBUG_COUNTER_gc_minor_newobj,
11594 RB_DEBUG_COUNTER_gc_minor_malloc,
11595 RB_DEBUG_COUNTER_gc_minor_method,
11596 RB_DEBUG_COUNTER_gc_minor_capi,
11597 RB_DEBUG_COUNTER_gc_minor_stress,
11598 RB_DEBUG_COUNTER_gc_major_nofree,
11599 RB_DEBUG_COUNTER_gc_major_oldgen,
11600 RB_DEBUG_COUNTER_gc_major_shady,
11601 RB_DEBUG_COUNTER_gc_major_force,
11602 RB_DEBUG_COUNTER_gc_major_oldmalloc,
11603 RB_DEBUG_COUNTER_gc_isptr_trial,
11604 RB_DEBUG_COUNTER_gc_isptr_range,
11605 RB_DEBUG_COUNTER_gc_isptr_align,
11606 RB_DEBUG_COUNTER_gc_isptr_maybe,
11607 RB_DEBUG_COUNTER_obj_newobj,
11608 RB_DEBUG_COUNTER_obj_newobj_slowpath,
11609 RB_DEBUG_COUNTER_obj_newobj_wb_unprotected,
11610 RB_DEBUG_COUNTER_obj_free,
11611 RB_DEBUG_COUNTER_obj_promote,
11612 RB_DEBUG_COUNTER_obj_wb_unprotect,
11613 RB_DEBUG_COUNTER_obj_obj_embed,
11614 RB_DEBUG_COUNTER_obj_obj_transient,
11615 RB_DEBUG_COUNTER_obj_obj_ptr,
11616 RB_DEBUG_COUNTER_obj_str_ptr,
11617 RB_DEBUG_COUNTER_obj_str_embed,
11618 RB_DEBUG_COUNTER_obj_str_shared,
11619 RB_DEBUG_COUNTER_obj_str_nofree,
11620 RB_DEBUG_COUNTER_obj_str_fstr,
11621 RB_DEBUG_COUNTER_obj_ary_embed,
11622 RB_DEBUG_COUNTER_obj_ary_transient,
11623 RB_DEBUG_COUNTER_obj_ary_ptr,
11624 RB_DEBUG_COUNTER_obj_ary_extracapa,
11625 RB_DEBUG_COUNTER_obj_ary_shared_create,
11626 RB_DEBUG_COUNTER_obj_ary_shared,
11627 RB_DEBUG_COUNTER_obj_ary_shared_root_occupied,
11628 RB_DEBUG_COUNTER_obj_hash_empty,
11629 RB_DEBUG_COUNTER_obj_hash_1,
11630 RB_DEBUG_COUNTER_obj_hash_2,
11631 RB_DEBUG_COUNTER_obj_hash_3,
11632 RB_DEBUG_COUNTER_obj_hash_4,
11633 RB_DEBUG_COUNTER_obj_hash_5_8,
11634 RB_DEBUG_COUNTER_obj_hash_g8,
11635 RB_DEBUG_COUNTER_obj_hash_null,
11636 RB_DEBUG_COUNTER_obj_hash_ar,
11637 RB_DEBUG_COUNTER_obj_hash_st,
11638 RB_DEBUG_COUNTER_obj_hash_transient,
11639 RB_DEBUG_COUNTER_obj_hash_force_convert,
11640 RB_DEBUG_COUNTER_obj_struct_embed,
11641 RB_DEBUG_COUNTER_obj_struct_transient,
11642 RB_DEBUG_COUNTER_obj_struct_ptr,
11643 RB_DEBUG_COUNTER_obj_data_empty,
11644 RB_DEBUG_COUNTER_obj_data_xfree,
11645 RB_DEBUG_COUNTER_obj_data_imm_free,
11646 RB_DEBUG_COUNTER_obj_data_zombie,
11647 RB_DEBUG_COUNTER_obj_match_under4,
11648 RB_DEBUG_COUNTER_obj_match_ge4,
11649 RB_DEBUG_COUNTER_obj_match_ge8,
11650 RB_DEBUG_COUNTER_obj_match_ptr,
11651 RB_DEBUG_COUNTER_obj_iclass_ptr,
11652 RB_DEBUG_COUNTER_obj_class_ptr,
11653 RB_DEBUG_COUNTER_obj_module_ptr,
11654 RB_DEBUG_COUNTER_obj_bignum_ptr,
11655 RB_DEBUG_COUNTER_obj_bignum_embed,
11656 RB_DEBUG_COUNTER_obj_float,
11657 RB_DEBUG_COUNTER_obj_complex,
11658 RB_DEBUG_COUNTER_obj_rational,
11659 RB_DEBUG_COUNTER_obj_regexp_ptr,
11660 RB_DEBUG_COUNTER_obj_file_ptr,
11661 RB_DEBUG_COUNTER_obj_symbol,
11662 RB_DEBUG_COUNTER_obj_imemo_ment,
11663 RB_DEBUG_COUNTER_obj_imemo_iseq,
11664 RB_DEBUG_COUNTER_obj_imemo_env,
11665 RB_DEBUG_COUNTER_obj_imemo_tmpbuf,
11666 RB_DEBUG_COUNTER_obj_imemo_ast,
11667 RB_DEBUG_COUNTER_obj_imemo_cref,
11668 RB_DEBUG_COUNTER_obj_imemo_svar,
11669 RB_DEBUG_COUNTER_obj_imemo_throw_data,
11670 RB_DEBUG_COUNTER_obj_imemo_ifunc,
11671 RB_DEBUG_COUNTER_obj_imemo_memo,
11672 RB_DEBUG_COUNTER_obj_imemo_parser_strterm,
11673 RB_DEBUG_COUNTER_artable_hint_hit,
11674 RB_DEBUG_COUNTER_artable_hint_miss,
11675 RB_DEBUG_COUNTER_artable_hint_notfound,
11676 RB_DEBUG_COUNTER_heap_xmalloc,
11677 RB_DEBUG_COUNTER_heap_xrealloc,
11678 RB_DEBUG_COUNTER_heap_xfree,
11679 RB_DEBUG_COUNTER_theap_alloc,
11680 RB_DEBUG_COUNTER_theap_alloc_fail,
11681 RB_DEBUG_COUNTER_theap_evacuate,
11682 RB_DEBUG_COUNTER_mjit_exec,
11683 RB_DEBUG_COUNTER_mjit_exec_not_added,
11684 RB_DEBUG_COUNTER_mjit_exec_not_added_add_iseq,
11685 RB_DEBUG_COUNTER_mjit_exec_not_ready,
11686 RB_DEBUG_COUNTER_mjit_exec_not_compiled,
11687 RB_DEBUG_COUNTER_mjit_exec_call_func,
11688 RB_DEBUG_COUNTER_mjit_frame_VM2VM,
11689 RB_DEBUG_COUNTER_mjit_frame_VM2JT,
11690 RB_DEBUG_COUNTER_mjit_frame_JT2JT,
11691 RB_DEBUG_COUNTER_mjit_frame_JT2VM,
11692 RB_DEBUG_COUNTER_mjit_cancel,
11693 RB_DEBUG_COUNTER_mjit_cancel_ivar_inline,
11694 RB_DEBUG_COUNTER_mjit_cancel_send_inline,
11695 RB_DEBUG_COUNTER_mjit_cancel_opt_insn,
11696 RB_DEBUG_COUNTER_mjit_cancel_invalidate_all,
11697 RB_DEBUG_COUNTER_mjit_length_unit_queue,
11698 RB_DEBUG_COUNTER_mjit_length_active_units,
11699 RB_DEBUG_COUNTER_mjit_length_compact_units,
11700 RB_DEBUG_COUNTER_mjit_length_stale_units,
11701 RB_DEBUG_COUNTER_mjit_compile_failures,
11702 RB_DEBUG_COUNTER_MAX
11703 #undef RB_DEBUG_COUNTER
11704 };
11705 #define RB_DEBUG_COUNTER_INC(type) ((void)0)
11706 #define RB_DEBUG_COUNTER_INC_UNLESS(type,cond) (cond)
11707 #define RB_DEBUG_COUNTER_INC_IF(type,cond) (cond)
11708 void rb_debug_counter_show_results(const char *msg);
11709
11710 #pragma GCC visibility push(default)
11711
11712 size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr);
11713 void ruby_debug_counter_reset(void);
11714 void ruby_debug_counter_show_at_exit(int enable);
11715
11716 #pragma GCC visibility pop
11717
11718 enum rb_mjit_iseq_func {
11719 NOT_ADDED_JIT_ISEQ_FUNC = 0,
11720 NOT_READY_JIT_ISEQ_FUNC = 1,
11721 NOT_COMPILED_JIT_ISEQ_FUNC = 2,
11722 LAST_JIT_ISEQ_FUNC = 3
11723 };
11724 struct mjit_options {
11725 char on;
11726 char save_temps;
11727 char warnings;
11728 char debug;
11729 char* debug_flags;
11730 unsigned int wait;
11731 unsigned int min_calls;
11732 int verbose;
11733 int max_cache_size;
11734 };
11735 struct rb_mjit_compile_info {
11736 _Bool disable_ivar_cache;
11737 _Bool disable_send_cache;
11738 _Bool disable_inlining;
11739 };
11740 typedef VALUE (*mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *);
11741
11742 #pragma GCC visibility push(default)
11743
11744 extern struct mjit_options mjit_opts;
11745 extern _Bool mjit_call_p;
11746 extern void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq);
11747 extern VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body);
11748 extern struct rb_mjit_compile_info* rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body);
11749 extern void rb_mjit_recompile_iseq(const rb_iseq_t *iseq);
11750
11751 #pragma GCC visibility pop
11752
11753 extern _Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname);
11754 extern void mjit_init(const struct mjit_options *opts);
11755 extern void mjit_gc_start_hook(void);
11756 extern void mjit_gc_exit_hook(void);
11757 extern void mjit_free_iseq(const rb_iseq_t *iseq);
11758 extern void mjit_update_references(const rb_iseq_t *iseq);
11759 extern void mjit_mark(void);
11760 extern struct mjit_cont *mjit_cont_new(rb_execution_context_t *ec);
11761 extern void mjit_cont_free(struct mjit_cont *cont);
11762 extern void mjit_add_class_serial(rb_serial_t class_serial);
11763 extern void mjit_remove_class_serial(rb_serial_t class_serial);
11764 #define JIT_ISEQ_SIZE_THRESHOLD 1000
11765 static inline int
11766 mjit_target_iseq_p(struct rb_iseq_constant_body *body)
11767 {
11768 return (body->type == ISEQ_TYPE_METHOD || body->type == ISEQ_TYPE_BLOCK)
11769 && body->iseq_size < 1000;
11770 }
11771 static inline VALUE
11772 mjit_exec(rb_execution_context_t *ec)
11773 {
11774 const rb_iseq_t *iseq;
11775 struct rb_iseq_constant_body *body;
11776 long unsigned total_calls;
11777 mjit_func_t func;
11778 if (!mjit_call_p)
11779 return ((VALUE)RUBY_Qundef);
11780 ((void)0);
11781 iseq = ec->cfp->iseq;
11782 body = iseq->body;
11783 total_calls = ++body->total_calls;
11784 func = body->jit_func;
11785 if ((__builtin_expect(!!((uintptr_t)func <= (uintptr_t)LAST_JIT_ISEQ_FUNC), 0))) {
11786 ((void)0);
11787 switch ((enum rb_mjit_iseq_func)func) {
11788 case NOT_ADDED_JIT_ISEQ_FUNC:
11789 ((void)0);
11790 if (total_calls == mjit_opts.min_calls && mjit_target_iseq_p(body)) {
11791 ((void)0);
11792 rb_mjit_add_iseq_to_process(iseq);
11793 if ((__builtin_expect(!!(mjit_opts.wait), 0))) {
11794 return rb_mjit_wait_call(ec, body);
11795 }
11796 }
11797 return ((VALUE)RUBY_Qundef);
11798 case NOT_READY_JIT_ISEQ_FUNC:
11799 ((void)0);
11800 return ((VALUE)RUBY_Qundef);
11801 case NOT_COMPILED_JIT_ISEQ_FUNC:
11802 ((void)0);
11803 return ((VALUE)RUBY_Qundef);
11804 default:
11805 break;
11806 }
11807 }
11808 ((void)0);
11809 ((void)0);
11810 return func(ec, ec->cfp);
11811 }
11812 void mjit_child_after_fork(void);
11813 #define RUBY_INSNHELPER_H
11814
11815 #pragma GCC visibility push(default)
11816
11817 extern VALUE ruby_vm_const_missing_count;
11818 extern rb_serial_t ruby_vm_global_method_state;
11819 extern rb_serial_t ruby_vm_global_constant_state;
11820 extern rb_serial_t ruby_vm_class_serial;
11821
11822 #pragma GCC visibility pop
11823
11824 #define COLLECT_USAGE_INSN(insn)
11825 #define COLLECT_USAGE_OPERAND(insn,n,op)
11826 #define COLLECT_USAGE_REGISTER(reg,s)
11827 #define PUSH(x) (SET_SV(x), INC_SP(1))
11828 #define TOPN(n) (*(GET_SP()-(n)-1))
11829 #define POPN(n) (DEC_SP(n))
11830 #define POP() (DEC_SP(1))
11831 #define STACK_ADDR_FROM_TOP(n) (GET_SP()-(n))
11832 #define VM_REG_CFP (reg_cfp)
11833 #define VM_REG_PC (VM_REG_CFP->pc)
11834 #define VM_REG_SP (VM_REG_CFP->sp)
11835 #define VM_REG_EP (VM_REG_CFP->ep)
11836 #define RESTORE_REGS() do { VM_REG_CFP = ec->cfp; } while (0)
11837 #define COLLECT_USAGE_REGISTER_HELPER(a,b,v) (v)
11838 #define GET_PC() (COLLECT_USAGE_REGISTER_HELPER(PC, GET, VM_REG_PC))
11839 #define SET_PC(x) (VM_REG_PC = (COLLECT_USAGE_REGISTER_HELPER(PC, SET, (x))))
11840 #define GET_CURRENT_INSN() (*GET_PC())
11841 #define GET_OPERAND(n) (GET_PC()[(n)])
11842 #define ADD_PC(n) (SET_PC(VM_REG_PC + (n)))
11843 #define JUMP(dst) (SET_PC(VM_REG_PC + (dst)))
11844 #define GET_CFP() (COLLECT_USAGE_REGISTER_HELPER(CFP, GET, VM_REG_CFP))
11845 #define GET_EP() (COLLECT_USAGE_REGISTER_HELPER(EP, GET, VM_REG_EP))
11846 #define SET_EP(x) (VM_REG_EP = (COLLECT_USAGE_REGISTER_HELPER(EP, SET, (x))))
11847 #define GET_LEP() (VM_EP_LEP(GET_EP()))
11848 #define GET_SP() (COLLECT_USAGE_REGISTER_HELPER(SP, GET, VM_REG_SP))
11849 #define SET_SP(x) (VM_REG_SP = (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11850 #define INC_SP(x) (VM_REG_SP += (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11851 #define DEC_SP(x) (VM_REG_SP -= (COLLECT_USAGE_REGISTER_HELPER(SP, SET, (x))))
11852 #define SET_SV(x) (*GET_SP() = (x))
11853 #define GET_ISEQ() (GET_CFP()->iseq)
11854 #define GET_PREV_EP(ep) ((VALUE *)((ep)[VM_ENV_DATA_INDEX_SPECVAL] & ~0x03))
11855 #define GET_SELF() (COLLECT_USAGE_REGISTER_HELPER(SELF, GET, GET_CFP()->self))
11856 static inline void
11857 CC_SET_FASTPATH(CALL_CACHE cc, vm_call_handler func, _Bool enabled)
11858 {
11859 if ((__builtin_expect(!!(enabled), 1))) {
11860 cc->call = func;
11861 }
11862 }
11863 static inline void
11864 CC_SET_ME(CALL_CACHE cc, const rb_callable_method_entry_t *me)
11865 {
11866 cc->me = me;
11867 cc->method_serial = me ? me->def->method_serial : 0;
11868 }
11869 #define GET_BLOCK_HANDLER() (GET_LEP()[VM_ENV_DATA_INDEX_SPECVAL])
11870 #define SETUP_CANARY()
11871 #define CHECK_CANARY()
11872 #define PREV_CLASS_SERIAL() (ruby_vm_class_serial)
11873 #define NEXT_CLASS_SERIAL() (++ruby_vm_class_serial)
11874 #define GET_GLOBAL_METHOD_STATE() (ruby_vm_global_method_state)
11875 #define INC_GLOBAL_METHOD_STATE() (++ruby_vm_global_method_state)
11876 #define GET_GLOBAL_CONSTANT_STATE() (ruby_vm_global_constant_state)
11877 #define INC_GLOBAL_CONSTANT_STATE() (++ruby_vm_global_constant_state)
11878 static inline struct vm_throw_data *
11879 THROW_DATA_NEW(VALUE val, const rb_control_frame_t *cf, int st)
11880 {
11881 struct vm_throw_data *obj = (struct vm_throw_data *)rb_imemo_new(imemo_throw_data, val, (VALUE)cf, 0, 0);
11882 obj->throw_state = st;
11883 return obj;
11884 }
11885 static inline VALUE
11886 THROW_DATA_VAL(const struct vm_throw_data *obj)
11887 {
11888 ((void)0);
11889 return obj->throw_obj;
11890 }
11891 static inline const rb_control_frame_t *
11892 THROW_DATA_CATCH_FRAME(const struct vm_throw_data *obj)
11893 {
11894 ((void)0);
11895 return obj->catch_frame;
11896 }
11897 static inline int
11898 THROW_DATA_STATE(const struct vm_throw_data *obj)
11899 {
11900 ((void)0);
11901 return obj->throw_state;
11902 }
11903 static inline int
11904 THROW_DATA_CONSUMED_P(const struct vm_throw_data *obj)
11905 {
11906 ((void)0);
11907 return obj->flags & ((VALUE)RUBY_FL_USER4);
11908 }
11909 static inline void
11910 THROW_DATA_CATCH_FRAME_SET(struct vm_throw_data *obj, const rb_control_frame_t *cfp)
11911 {
11912 ((void)0);
11913 obj->catch_frame = cfp;
11914 }
11915 static inline void
11916 THROW_DATA_STATE_SET(struct vm_throw_data *obj, int st)
11917 {
11918 ((void)0);
11919 obj->throw_state = st;
11920 }
11921 static inline void
11922 THROW_DATA_CONSUMED_SET(struct vm_throw_data *obj)
11923 {
11924 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(obj)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(obj)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(obj))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)((VALUE)(obj)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(obj)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(obj)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(obj)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO))) &&
11925 THROW_DATA_STATE(obj) == RUBY_TAG_BREAK) {
11926 obj->flags |= ((VALUE)RUBY_FL_USER4);
11927 }
11928 }
11929 #define IS_ARGS_SPLAT(ci) ((ci)->flag & VM_CALL_ARGS_SPLAT)
11930 #define IS_ARGS_KEYWORD(ci) ((ci)->flag & VM_CALL_KWARG)
11931 #define IS_ARGS_KW_SPLAT(ci) ((ci)->flag & VM_CALL_KW_SPLAT)
11932 #define IS_ARGS_KW_OR_KW_SPLAT(ci) ((ci)->flag & (VM_CALL_KWARG | VM_CALL_KW_SPLAT))
11933 static _Bool
11934 vm_call_iseq_optimizable_p(const struct rb_call_info *ci, const struct rb_call_cache *cc)
11935 {
11936 return !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
11937 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED);
11938 }
11939 #define RUBY_VM_EXEC_H
11940 typedef long OFFSET;
11941 typedef unsigned long lindex_t;
11942 typedef VALUE GENTRY;
11943 typedef rb_iseq_t *ISEQ;
11944 #define debugs
11945 #define DEBUG_ENTER_INSN(insn)
11946 #define DEBUG_END_INSN()
11947 #define throwdebug if(0)printf
11948 #define LABEL(x) INSN_LABEL_ ##x
11949 #define ELABEL(x) INSN_ELABEL_ ##x
11950 #define LABEL_PTR(x) RB_GNUC_EXTENSION(&&LABEL(x))
11951 #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));
11952 #define INSN_DISPATCH_SIG(insn)
11953 #define INSN_ENTRY(insn) LABEL(insn): INSN_ENTRY_SIG(insn);
11954 #define TC_DISPATCH(insn) INSN_DISPATCH_SIG(insn); RB_GNUC_EXTENSION_BLOCK(goto *(void const *)GET_CURRENT_INSN()); ;
11955 #define END_INSN(insn) DEBUG_END_INSN(); TC_DISPATCH(insn);
11956 #define INSN_DISPATCH() TC_DISPATCH(__START__) {
11957 #define END_INSNS_DISPATCH() rb_bug("unknown insn: %"PRIdVALUE, GET_CURRENT_INSN()); }
11958 #define NEXT_INSN() TC_DISPATCH(__NEXT_INSN__)
11959 #define START_OF_ORIGINAL_INSN(x) start_of_ ##x:
11960 #define DISPATCH_ORIGINAL_INSN(x) goto start_of_ ##x;
11961 #define VM_SP_CNT(ec,sp) ((sp) - (ec)->vm_stack)
11962 #define THROW_EXCEPTION(exc) do { ec->errinfo = (VALUE)(exc); EC_JUMP_TAG(ec, ec->tag->state); } while (0)
11963 #define SCREG(r) (reg_ ##r)
11964 #define VM_DEBUG_STACKOVERFLOW 0
11965 #define CHECK_VM_STACK_OVERFLOW_FOR_INSN(cfp,margin)
11966 #define INSN_LABEL2(insn,name) INSN_LABEL_ ## insn ## _ ## name
11967 #define INSN_LABEL(x) INSN_LABEL2(NAME_OF_CURRENT_INSN, x)
11968 #define BIN(n) YARVINSN_ ##n
11969 enum ruby_vminsn_type {
11970 YARVINSN_nop,
11971 YARVINSN_getlocal,
11972 YARVINSN_setlocal,
11973 YARVINSN_getblockparam,
11974 YARVINSN_setblockparam,
11975 YARVINSN_getblockparamproxy,
11976 YARVINSN_getspecial,
11977 YARVINSN_setspecial,
11978 YARVINSN_getinstancevariable,
11979 YARVINSN_setinstancevariable,
11980 YARVINSN_getclassvariable,
11981 YARVINSN_setclassvariable,
11982 YARVINSN_getconstant,
11983 YARVINSN_setconstant,
11984 YARVINSN_getglobal,
11985 YARVINSN_setglobal,
11986 YARVINSN_putnil,
11987 YARVINSN_putself,
11988 YARVINSN_putobject,
11989 YARVINSN_putspecialobject,
11990 YARVINSN_putstring,
11991 YARVINSN_concatstrings,
11992 YARVINSN_tostring,
11993 YARVINSN_freezestring,
11994 YARVINSN_toregexp,
11995 YARVINSN_intern,
11996 YARVINSN_newarray,
11997 YARVINSN_newarraykwsplat,
11998 YARVINSN_duparray,
11999 YARVINSN_duphash,
12000 YARVINSN_expandarray,
12001 YARVINSN_concatarray,
12002 YARVINSN_splatarray,
12003 YARVINSN_newhash,
12004 YARVINSN_newrange,
12005 YARVINSN_pop,
12006 YARVINSN_dup,
12007 YARVINSN_dupn,
12008 YARVINSN_swap,
12009 YARVINSN_reverse,
12010 YARVINSN_topn,
12011 YARVINSN_setn,
12012 YARVINSN_adjuststack,
12013 YARVINSN_defined,
12014 YARVINSN_checkmatch,
12015 YARVINSN_checkkeyword,
12016 YARVINSN_checktype,
12017 YARVINSN_defineclass,
12018 YARVINSN_definemethod,
12019 YARVINSN_definesmethod,
12020 YARVINSN_send,
12021 YARVINSN_opt_send_without_block,
12022 YARVINSN_opt_str_freeze,
12023 YARVINSN_opt_nil_p,
12024 YARVINSN_opt_str_uminus,
12025 YARVINSN_opt_newarray_max,
12026 YARVINSN_opt_newarray_min,
12027 YARVINSN_invokesuper,
12028 YARVINSN_invokeblock,
12029 YARVINSN_leave,
12030 YARVINSN_throw,
12031 YARVINSN_jump,
12032 YARVINSN_branchif,
12033 YARVINSN_branchunless,
12034 YARVINSN_branchnil,
12035 YARVINSN_opt_getinlinecache,
12036 YARVINSN_opt_setinlinecache,
12037 YARVINSN_once,
12038 YARVINSN_opt_case_dispatch,
12039 YARVINSN_opt_plus,
12040 YARVINSN_opt_minus,
12041 YARVINSN_opt_mult,
12042 YARVINSN_opt_div,
12043 YARVINSN_opt_mod,
12044 YARVINSN_opt_eq,
12045 YARVINSN_opt_neq,
12046 YARVINSN_opt_lt,
12047 YARVINSN_opt_le,
12048 YARVINSN_opt_gt,
12049 YARVINSN_opt_ge,
12050 YARVINSN_opt_ltlt,
12051 YARVINSN_opt_and,
12052 YARVINSN_opt_or,
12053 YARVINSN_opt_aref,
12054 YARVINSN_opt_aset,
12055 YARVINSN_opt_aset_with,
12056 YARVINSN_opt_aref_with,
12057 YARVINSN_opt_length,
12058 YARVINSN_opt_size,
12059 YARVINSN_opt_empty_p,
12060 YARVINSN_opt_succ,
12061 YARVINSN_opt_not,
12062 YARVINSN_opt_regexpmatch2,
12063 YARVINSN_opt_call_c_function,
12064 YARVINSN_invokebuiltin,
12065 YARVINSN_opt_invokebuiltin_delegate,
12066 YARVINSN_opt_invokebuiltin_delegate_leave,
12067 YARVINSN_getlocal_WC_0,
12068 YARVINSN_getlocal_WC_1,
12069 YARVINSN_setlocal_WC_0,
12070 YARVINSN_setlocal_WC_1,
12071 YARVINSN_putobject_INT2FIX_0_,
12072 YARVINSN_putobject_INT2FIX_1_,
12073 YARVINSN_trace_nop,
12074 YARVINSN_trace_getlocal,
12075 YARVINSN_trace_setlocal,
12076 YARVINSN_trace_getblockparam,
12077 YARVINSN_trace_setblockparam,
12078 YARVINSN_trace_getblockparamproxy,
12079 YARVINSN_trace_getspecial,
12080 YARVINSN_trace_setspecial,
12081 YARVINSN_trace_getinstancevariable,
12082 YARVINSN_trace_setinstancevariable,
12083 YARVINSN_trace_getclassvariable,
12084 YARVINSN_trace_setclassvariable,
12085 YARVINSN_trace_getconstant,
12086 YARVINSN_trace_setconstant,
12087 YARVINSN_trace_getglobal,
12088 YARVINSN_trace_setglobal,
12089 YARVINSN_trace_putnil,
12090 YARVINSN_trace_putself,
12091 YARVINSN_trace_putobject,
12092 YARVINSN_trace_putspecialobject,
12093 YARVINSN_trace_putstring,
12094 YARVINSN_trace_concatstrings,
12095 YARVINSN_trace_tostring,
12096 YARVINSN_trace_freezestring,
12097 YARVINSN_trace_toregexp,
12098 YARVINSN_trace_intern,
12099 YARVINSN_trace_newarray,
12100 YARVINSN_trace_newarraykwsplat,
12101 YARVINSN_trace_duparray,
12102 YARVINSN_trace_duphash,
12103 YARVINSN_trace_expandarray,
12104 YARVINSN_trace_concatarray,
12105 YARVINSN_trace_splatarray,
12106 YARVINSN_trace_newhash,
12107 YARVINSN_trace_newrange,
12108 YARVINSN_trace_pop,
12109 YARVINSN_trace_dup,
12110 YARVINSN_trace_dupn,
12111 YARVINSN_trace_swap,
12112 YARVINSN_trace_reverse,
12113 YARVINSN_trace_topn,
12114 YARVINSN_trace_setn,
12115 YARVINSN_trace_adjuststack,
12116 YARVINSN_trace_defined,
12117 YARVINSN_trace_checkmatch,
12118 YARVINSN_trace_checkkeyword,
12119 YARVINSN_trace_checktype,
12120 YARVINSN_trace_defineclass,
12121 YARVINSN_trace_definemethod,
12122 YARVINSN_trace_definesmethod,
12123 YARVINSN_trace_send,
12124 YARVINSN_trace_opt_send_without_block,
12125 YARVINSN_trace_opt_str_freeze,
12126 YARVINSN_trace_opt_nil_p,
12127 YARVINSN_trace_opt_str_uminus,
12128 YARVINSN_trace_opt_newarray_max,
12129 YARVINSN_trace_opt_newarray_min,
12130 YARVINSN_trace_invokesuper,
12131 YARVINSN_trace_invokeblock,
12132 YARVINSN_trace_leave,
12133 YARVINSN_trace_throw,
12134 YARVINSN_trace_jump,
12135 YARVINSN_trace_branchif,
12136 YARVINSN_trace_branchunless,
12137 YARVINSN_trace_branchnil,
12138 YARVINSN_trace_opt_getinlinecache,
12139 YARVINSN_trace_opt_setinlinecache,
12140 YARVINSN_trace_once,
12141 YARVINSN_trace_opt_case_dispatch,
12142 YARVINSN_trace_opt_plus,
12143 YARVINSN_trace_opt_minus,
12144 YARVINSN_trace_opt_mult,
12145 YARVINSN_trace_opt_div,
12146 YARVINSN_trace_opt_mod,
12147 YARVINSN_trace_opt_eq,
12148 YARVINSN_trace_opt_neq,
12149 YARVINSN_trace_opt_lt,
12150 YARVINSN_trace_opt_le,
12151 YARVINSN_trace_opt_gt,
12152 YARVINSN_trace_opt_ge,
12153 YARVINSN_trace_opt_ltlt,
12154 YARVINSN_trace_opt_and,
12155 YARVINSN_trace_opt_or,
12156 YARVINSN_trace_opt_aref,
12157 YARVINSN_trace_opt_aset,
12158 YARVINSN_trace_opt_aset_with,
12159 YARVINSN_trace_opt_aref_with,
12160 YARVINSN_trace_opt_length,
12161 YARVINSN_trace_opt_size,
12162 YARVINSN_trace_opt_empty_p,
12163 YARVINSN_trace_opt_succ,
12164 YARVINSN_trace_opt_not,
12165 YARVINSN_trace_opt_regexpmatch2,
12166 YARVINSN_trace_opt_call_c_function,
12167 YARVINSN_trace_invokebuiltin,
12168 YARVINSN_trace_opt_invokebuiltin_delegate,
12169 YARVINSN_trace_opt_invokebuiltin_delegate_leave,
12170 YARVINSN_trace_getlocal_WC_0,
12171 YARVINSN_trace_getlocal_WC_1,
12172 YARVINSN_trace_setlocal_WC_0,
12173 YARVINSN_trace_setlocal_WC_1,
12174 YARVINSN_trace_putobject_INT2FIX_0_,
12175 YARVINSN_trace_putobject_INT2FIX_1_,
12176 VM_INSTRUCTION_SIZE
12177 };
12178 #define ASSERT_VM_INSTRUCTION_SIZE(array) STATIC_ASSERT(numberof_ ##array, numberof(array) == VM_INSTRUCTION_SIZE)
12179 #define CONSTANT_H
12180 typedef enum {
12181 CONST_DEPRECATED = 0x100,
12182 CONST_VISIBILITY_MASK = 0xff,
12183 CONST_PUBLIC = 0x00,
12184 CONST_PRIVATE,
12185 CONST_VISIBILITY_MAX
12186 } rb_const_flag_t;
12187 #define RB_CONST_PRIVATE_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PRIVATE)
12188 #define RB_CONST_PUBLIC_P(ce) (((ce)->flag & CONST_VISIBILITY_MASK) == CONST_PUBLIC)
12189 #define RB_CONST_DEPRECATED_P(ce) ((ce)->flag & CONST_DEPRECATED)
12190 typedef struct rb_const_entry_struct {
12191 rb_const_flag_t flag;
12192 int line;
12193 VALUE value;
12194 VALUE file;
12195 } rb_const_entry_t;
12196 VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj);
12197 VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj);
12198 VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj);
12199 void rb_free_const_table(struct rb_id_table *tbl);
12200 VALUE rb_public_const_get_at(VALUE klass, ID id);
12201 VALUE rb_public_const_get_from(VALUE klass, ID id);
12202 int rb_public_const_defined_from(VALUE klass, ID id);
12203 rb_const_entry_t *rb_const_lookup(VALUE klass, ID id);
12204 int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag);
12205 VALUE rb_const_source_location(VALUE, ID);
12206 VALUE rb_const_source_location_at(VALUE, ID);
12207 struct gen_ivtbl {
12208 uint32_t numiv;
12209 VALUE ivptr[];
12210 };
12211 struct st_table *rb_ivar_generic_ivtbl(void);
12212 extern rb_method_definition_t *rb_method_definition_create(rb_method_type_t type, ID mid);
12213 extern void rb_method_definition_set(const rb_method_entry_t *me, rb_method_definition_t *def, void *opts);
12214 extern int rb_method_definition_eq(const rb_method_definition_t *d1, const rb_method_definition_t *d2);
12215 extern VALUE rb_make_no_method_exception(VALUE exc, VALUE format, VALUE obj,
12216 int argc, const VALUE *argv, int priv);
12217 static rb_control_frame_t *vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp);
12218 static VALUE
12219 ruby_vm_special_exception_copy(VALUE exc)
12220 {
12221 VALUE e = rb_obj_alloc(rb_class_real((((struct RBasic*)(exc))->klass)));
12222 rb_obj_copy_ivar(e, exc);
12223 return e;
12224 }
12225 __attribute__ ((__noreturn__)) static void ec_stack_overflow(rb_execution_context_t *ec, int);
12226 static void
12227 ec_stack_overflow(rb_execution_context_t *ec, int setup)
12228 {
12229 VALUE mesg = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_sysstack];
12230 ec->raised_flag = RAISED_STACKOVERFLOW;
12231 if (setup) {
12232 VALUE at = rb_ec_backtrace_object(ec);
12233 mesg = ruby_vm_special_exception_copy(mesg);
12234 rb_ivar_set(mesg, idBt, at);
12235 rb_ivar_set(mesg, idBt_locations, at);
12236 }
12237 ec->errinfo = mesg;
12238 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
12239 }
12240 __attribute__ ((__noreturn__)) static void vm_stackoverflow(void);
12241 static void
12242 vm_stackoverflow(void)
12243 {
12244 ec_stack_overflow(rb_current_execution_context(), 1);
12245 }
12246 __attribute__ ((__noreturn__)) static void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit);
12247 static void
12248 rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
12249 {
12250 if (crit || rb_during_gc()) {
12251 ec->raised_flag = RAISED_STACKOVERFLOW;
12252 ec->errinfo = rb_ec_vm_ptr(ec)->special_exceptions[ruby_error_stackfatal];
12253 rb_ec_tag_jump(ec, RUBY_TAG_RAISE);
12254 }
12255 ec_stack_overflow(ec, 1);
12256 }
12257 #define vm_check_canary(ec,sp)
12258 #define vm_check_frame(a,b,c,d)
12259 static inline rb_control_frame_t *
12260 vm_push_frame(rb_execution_context_t *ec,
12261 const rb_iseq_t *iseq,
12262 VALUE type,
12263 VALUE self,
12264 VALUE specval,
12265 VALUE cref_or_me,
12266 const VALUE *pc,
12267 VALUE *sp,
12268 int local_size,
12269 int stack_max)
12270 {
12271 rb_control_frame_t *const cfp = ((ec->cfp)-1);
12272 ;
12273 ((void)0);
12274 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();
12275 ;
12276 ec->cfp = cfp;
12277 cfp->pc = (VALUE *)pc;
12278 cfp->iseq = (rb_iseq_t *)iseq;
12279 cfp->self = self;
12280 cfp->block_code = ((void *)0);
12281 for (int i=0; i < local_size; i++) {
12282 *sp++ = ((VALUE)RUBY_Qnil);
12283 }
12284 ((void)0);
12285 ((void)0);
12286 ((void)0);
12287 *sp++ = cref_or_me;
12288 *sp++ = specval ;
12289 *sp = type;
12290 cfp->ep = sp;
12291 cfp->__bp__ = cfp->sp = sp + 1;
12292 if (0 == 2) {
12293 rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
12294 }
12295 return cfp;
12296 }
12297 static inline int
12298 vm_pop_frame(rb_execution_context_t *ec, rb_control_frame_t *cfp, const VALUE *ep)
12299 {
12300 VALUE flags = ep[( 0)];
12301 if ((((0) > 0) ? (0) : 0) >= 4) rb_gc_verify_internal_consistency();
12302 if (0 == 2) rb_vmdebug_stack_dump_raw(rb_current_execution_context(), rb_current_execution_context()->cfp);
12303 rb_vm_check_ints(ec);
12304 ec->cfp = ((cfp)+1);
12305 return flags & VM_FRAME_FLAG_FINISH;
12306 }
12307 static void
12308 rb_vm_pop_frame(rb_execution_context_t *ec)
12309 {
12310 vm_pop_frame(ec, ec->cfp, ec->cfp->ep);
12311 }
12312 static inline VALUE
12313 rb_arity_error_new(int argc, int min, int max)
12314 {
12315 VALUE err_mess = 0;
12316 if (min == max) {
12317 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d)", argc, min);
12318 }
12319 else if (max == (-1)) {
12320 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d+)", argc, min);
12321 }
12322 else {
12323 err_mess = rb_sprintf("wrong number of arguments (given %d, expected %d..%d)", argc, min, max);
12324 }
12325 return rb_exc_new_str(rb_eArgError, err_mess);
12326 }
12327 static void
12328 rb_error_arity(int argc, int min, int max)
12329 {
12330 rb_exc_raise(rb_arity_error_new(argc, min, max));
12331 }
12332 __attribute__ ((__noinline__)) static void vm_env_write_slowpath(const VALUE *ep, int index, VALUE v);
12333 static void
12334 vm_env_write_slowpath(const VALUE *ep, int index, VALUE v)
12335 {
12336 rb_gc_writebarrier_remember(VM_ENV_ENVVAL(ep));
12337 VM_FORCE_WRITE(&ep[index], v);
12338 VM_ENV_FLAGS_UNSET(ep, VM_ENV_FLAG_WB_REQUIRED);
12339 ((void)0);
12340 }
12341 static inline void
12342 vm_env_write(const VALUE *ep, int index, VALUE v)
12343 {
12344 VALUE flags = ep[( 0)];
12345 if ((__builtin_expect(!!((flags & VM_ENV_FLAG_WB_REQUIRED) == 0), 1))) {
12346 VM_STACK_ENV_WRITE(ep, index, v);
12347 }
12348 else {
12349 vm_env_write_slowpath(ep, index, v);
12350 }
12351 }
12352 static VALUE
12353 rb_vm_bh_to_procval(const rb_execution_context_t *ec, VALUE block_handler)
12354 {
12355 if (block_handler == 0) {
12356 return ((VALUE)RUBY_Qnil);
12357 }
12358 else {
12359 switch (vm_block_handler_type(block_handler)) {
12360 case block_handler_type_iseq:
12361 case block_handler_type_ifunc:
12362 return rb_vm_make_proc(ec, VM_BH_TO_CAPT_BLOCK(block_handler), rb_cProc);
12363 case block_handler_type_symbol:
12364 return rb_sym_to_proc(VM_BH_TO_SYMBOL(block_handler));
12365 case block_handler_type_proc:
12366 return VM_BH_TO_PROC(block_handler);
12367 default:
12368 __builtin_unreachable();
12369 }
12370 }
12371 }
12372 static inline struct vm_svar *
12373 lep_svar(const rb_execution_context_t *ec, const VALUE *lep)
12374 {
12375 VALUE svar;
12376 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
12377 svar = lep[(-2)];
12378 }
12379 else {
12380 svar = ec->root_svar;
12381 }
12382 ((void)0);
12383 return (struct vm_svar *)svar;
12384 }
12385 static inline void
12386 lep_svar_write(const rb_execution_context_t *ec, const VALUE *lep, const struct vm_svar *svar)
12387 {
12388 ((void)0);
12389 if (lep && (ec == ((void *)0) || ec->root_lep != lep)) {
12390 vm_env_write(lep, (-2), (VALUE)svar);
12391 }
12392 else {
12393 __extension__({
12394 #pragma GCC diagnostic push
12395 ;
12396 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12397 ; typeof(rb_obj_write((VALUE)(rb_ec_thread_ptr(ec)->self), (VALUE *)(&ec->root_svar), (VALUE)(svar), "../ruby-2.7.0/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.0/vm_insnhelper.c", 486));
12398 #pragma GCC diagnostic pop
12399 ; unaligned_member_access_result; });
12400 }
12401 }
12402 static VALUE
12403 lep_svar_get(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key)
12404 {
12405 const struct vm_svar *svar = lep_svar(ec, lep);
12406 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) return ((VALUE)RUBY_Qnil);
12407 switch (key) {
12408 case VM_SVAR_LASTLINE:
12409 return svar->lastline;
12410 case VM_SVAR_BACKREF:
12411 return svar->backref;
12412 default: {
12413 const VALUE ary = svar->others;
12414 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
12415 return ((VALUE)RUBY_Qnil);
12416 }
12417 else {
12418 return rb_ary_entry(ary, key - VM_SVAR_EXTRA_START);
12419 }
12420 }
12421 }
12422 }
12423 static struct vm_svar *
12424 svar_new(VALUE obj)
12425 {
12426 return (struct vm_svar *)rb_imemo_new(imemo_svar, ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), ((VALUE)RUBY_Qnil), obj);
12427 }
12428 static void
12429 lep_svar_set(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, VALUE val)
12430 {
12431 struct vm_svar *svar = lep_svar(ec, lep);
12432 if ((VALUE)svar == ((VALUE)RUBY_Qfalse) || imemo_type((VALUE)svar) != imemo_svar) {
12433 lep_svar_write(ec, lep, svar = svar_new((VALUE)svar));
12434 }
12435 switch (key) {
12436 case VM_SVAR_LASTLINE:
12437 __extension__({
12438 #pragma GCC diagnostic push
12439 ;
12440 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12441 ; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->lastline), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 532)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->lastline), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 532));
12442 #pragma GCC diagnostic pop
12443 ; unaligned_member_access_result; });
12444 return;
12445 case VM_SVAR_BACKREF:
12446 __extension__({
12447 #pragma GCC diagnostic push
12448 ;
12449 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12450 ; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->backref), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 535)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->backref), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 535));
12451 #pragma GCC diagnostic pop
12452 ; unaligned_member_access_result; });
12453 return;
12454 default: {
12455 VALUE ary = svar->others;
12456 if (!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
12457 __extension__({
12458 #pragma GCC diagnostic push
12459 ;
12460 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12461 ; typeof(rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.0/vm_insnhelper.c", 541)) unaligned_member_access_result = (rb_obj_write((VALUE)(svar), (VALUE *)(&svar->others), (VALUE)(ary = rb_ary_new()), "../ruby-2.7.0/vm_insnhelper.c", 541));
12462 #pragma GCC diagnostic pop
12463 ; unaligned_member_access_result; });
12464 }
12465 rb_ary_store(ary, key - VM_SVAR_EXTRA_START, val);
12466 }
12467 }
12468 }
12469 static inline VALUE
12470 vm_getspecial(const rb_execution_context_t *ec, const VALUE *lep, rb_num_t key, rb_num_t type)
12471 {
12472 VALUE val;
12473 if (type == 0) {
12474 val = lep_svar_get(ec, lep, key);
12475 }
12476 else {
12477 VALUE backref = lep_svar_get(ec, lep, VM_SVAR_BACKREF);
12478 if (type & 0x01) {
12479 switch (type >> 1) {
12480 case '&':
12481 val = rb_reg_last_match(backref);
12482 break;
12483 case '`':
12484 val = rb_reg_match_pre(backref);
12485 break;
12486 case '\'':
12487 val = rb_reg_match_post(backref);
12488 break;
12489 case '+':
12490 val = rb_reg_match_last(backref);
12491 break;
12492 default:
12493 rb_bug("unexpected back-ref");
12494 }
12495 }
12496 else {
12497 val = rb_reg_nth_match((int)(type >> 1), backref);
12498 }
12499 }
12500 return val;
12501 }
12502 __attribute__ ((__pure__)) static rb_callable_method_entry_t *check_method_entry(VALUE obj, int can_be_svar);
12503 static rb_callable_method_entry_t *
12504 check_method_entry(VALUE obj, int can_be_svar)
12505 {
12506 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
12507 switch (imemo_type(obj)) {
12508 case imemo_ment:
12509 return (rb_callable_method_entry_t *)obj;
12510 case imemo_cref:
12511 return ((void *)0);
12512 case imemo_svar:
12513 if (can_be_svar) {
12514 return check_method_entry(((struct vm_svar *)obj)->cref_or_me, 0);
12515 }
12516 default:
12517 return ((void *)0);
12518 }
12519 }
12520 static const rb_callable_method_entry_t *
12521 rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
12522 {
12523 const VALUE *ep = cfp->ep;
12524 rb_callable_method_entry_t *me;
12525 while (!VM_ENV_LOCAL_P(ep)) {
12526 if ((me = check_method_entry(ep[(-2)], 0)) != ((void *)0)) return me;
12527 ep = VM_ENV_PREV_EP(ep);
12528 }
12529 return check_method_entry(ep[(-2)], 1);
12530 }
12531 static rb_cref_t *
12532 method_entry_cref(rb_callable_method_entry_t *me)
12533 {
12534 switch (me->def->type) {
12535 case VM_METHOD_TYPE_ISEQ:
12536 return me->def->body.iseq.cref;
12537 default:
12538 return ((void *)0);
12539 }
12540 }
12541 __attribute__ ((__pure__)) static rb_cref_t *check_cref(VALUE, int);
12542 static rb_cref_t *
12543 check_cref(VALUE obj, int can_be_svar)
12544 {
12545 if (obj == ((VALUE)RUBY_Qfalse)) return ((void *)0);
12546 switch (imemo_type(obj)) {
12547 case imemo_ment:
12548 return method_entry_cref((rb_callable_method_entry_t *)obj);
12549 case imemo_cref:
12550 return (rb_cref_t *)obj;
12551 case imemo_svar:
12552 if (can_be_svar) {
12553 return check_cref(((struct vm_svar *)obj)->cref_or_me, 0);
12554 }
12555 default:
12556 return ((void *)0);
12557 }
12558 }
12559 static inline rb_cref_t *
12560 vm_env_cref(const VALUE *ep)
12561 {
12562 rb_cref_t *cref;
12563 while (!VM_ENV_LOCAL_P(ep)) {
12564 if ((cref = check_cref(ep[(-2)], 0)) != ((void *)0)) return cref;
12565 ep = VM_ENV_PREV_EP(ep);
12566 }
12567 return check_cref(ep[(-2)], 1);
12568 }
12569 static int
12570 is_cref(const VALUE v, int can_be_svar)
12571 {
12572 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
12573 switch (imemo_type(v)) {
12574 case imemo_cref:
12575 return 1;
12576 case imemo_svar:
12577 if (can_be_svar) return is_cref(((struct vm_svar *)v)->cref_or_me, 0);
12578 default:
12579 break;
12580 }
12581 }
12582 return 0;
12583 }
12584 static int
12585 vm_env_cref_by_cref(const VALUE *ep)
12586 {
12587 while (!VM_ENV_LOCAL_P(ep)) {
12588 if (is_cref(ep[(-2)], 0)) return 1;
12589 ep = VM_ENV_PREV_EP(ep);
12590 }
12591 return is_cref(ep[(-2)], 1);
12592 }
12593 static rb_cref_t *
12594 cref_replace_with_duplicated_cref_each_frame(const VALUE *vptr, int can_be_svar, VALUE parent)
12595 {
12596 const VALUE v = *vptr;
12597 rb_cref_t *cref, *new_cref;
12598 if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)(v))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? ((v) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? ((v) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? ((v) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? ((v) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)(v)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
12599 switch (imemo_type(v)) {
12600 case imemo_cref:
12601 cref = (rb_cref_t *)v;
12602 new_cref = vm_cref_dup(cref);
12603 if (parent) {
12604 __extension__({
12605 #pragma GCC diagnostic push
12606 ;
12607 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12608 ; typeof(rb_obj_write((VALUE)(parent), (VALUE *)(vptr), (VALUE)(new_cref), "../ruby-2.7.0/vm_insnhelper.c", 716)) unaligned_member_access_result = (rb_obj_write((VALUE)(parent), (VALUE *)(vptr), (VALUE)(new_cref), "../ruby-2.7.0/vm_insnhelper.c", 716));
12609 #pragma GCC diagnostic pop
12610 ; unaligned_member_access_result; });
12611 }
12612 else {
12613 VM_FORCE_WRITE(vptr, (VALUE)new_cref);
12614 }
12615 return (rb_cref_t *)new_cref;
12616 case imemo_svar:
12617 if (can_be_svar) {
12618 return cref_replace_with_duplicated_cref_each_frame((const VALUE *)&((struct vm_svar *)v)->cref_or_me, 0, v);
12619 }
12620 case imemo_ment:
12621 rb_bug("cref_replace_with_duplicated_cref_each_frame: unreachable");
12622 default:
12623 break;
12624 }
12625 }
12626 return 0;
12627 }
12628 static rb_cref_t *
12629 vm_cref_replace_with_duplicated_cref(const VALUE *ep)
12630 {
12631 if (vm_env_cref_by_cref(ep)) {
12632 rb_cref_t *cref;
12633 VALUE envval;
12634 while (!VM_ENV_LOCAL_P(ep)) {
12635 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
12636 if ((cref = cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 0, envval)) != ((void *)0)) {
12637 return cref;
12638 }
12639 ep = VM_ENV_PREV_EP(ep);
12640 }
12641 envval = VM_ENV_ESCAPED_P(ep) ? VM_ENV_ENVVAL(ep) : ((VALUE)RUBY_Qfalse);
12642 return cref_replace_with_duplicated_cref_each_frame(&ep[(-2)], 1, envval);
12643 }
12644 else {
12645 rb_bug("vm_cref_dup: unreachable");
12646 }
12647 }
12648 static rb_cref_t *
12649 vm_get_cref(const VALUE *ep)
12650 {
12651 rb_cref_t *cref = vm_env_cref(ep);
12652 if (cref != ((void *)0)) {
12653 return cref;
12654 }
12655 else {
12656 rb_bug("vm_get_cref: unreachable");
12657 }
12658 }
12659 static rb_cref_t *
12660 vm_ec_cref(const rb_execution_context_t *ec)
12661 {
12662 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
12663 if (cfp == ((void *)0)) {
12664 return ((void *)0);
12665 }
12666 return vm_get_cref(cfp->ep);
12667 }
12668 static const rb_cref_t *
12669 vm_get_const_key_cref(const VALUE *ep)
12670 {
12671 const rb_cref_t *cref = vm_get_cref(ep);
12672 const rb_cref_t *key_cref = cref;
12673 while (cref) {
12674 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) ||
12675 ((!(((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)) {
12676 return key_cref;
12677 }
12678 cref = CREF_NEXT(cref);
12679 }
12680 return ((void *)0);
12681 }
12682 void
12683 rb_vm_rewrite_cref(rb_cref_t *cref, VALUE old_klass, VALUE new_klass, rb_cref_t **new_cref_ptr)
12684 {
12685 rb_cref_t *new_cref;
12686 while (cref) {
12687 if (CREF_CLASS(cref) == old_klass) {
12688 new_cref = vm_cref_new_use_prev(new_klass, METHOD_VISI_UNDEF, 0, cref, 0);
12689 *new_cref_ptr = new_cref;
12690 return;
12691 }
12692 new_cref = vm_cref_new_use_prev(CREF_CLASS(cref), METHOD_VISI_UNDEF, 0, cref, 0);
12693 cref = CREF_NEXT(cref);
12694 *new_cref_ptr = new_cref;
12695 new_cref_ptr = (rb_cref_t **)&new_cref->next;
12696 }
12697 *new_cref_ptr = ((void *)0);
12698 }
12699 static rb_cref_t *
12700 vm_cref_push(const rb_execution_context_t *ec, VALUE klass, const VALUE *ep, int pushed_by_eval)
12701 {
12702 rb_cref_t *prev_cref = ((void *)0);
12703 if (ep) {
12704 prev_cref = vm_env_cref(ep);
12705 }
12706 else {
12707 rb_control_frame_t *cfp = vm_get_ruby_level_caller_cfp(ec, ec->cfp);
12708 if (cfp) {
12709 prev_cref = vm_env_cref(cfp->ep);
12710 }
12711 }
12712 return vm_cref_new(klass, METHOD_VISI_PUBLIC, 0, prev_cref, pushed_by_eval);
12713 }
12714 static inline VALUE
12715 vm_get_cbase(const VALUE *ep)
12716 {
12717 const rb_cref_t *cref = vm_get_cref(ep);
12718 VALUE klass = ((VALUE)RUBY_Qundef);
12719 while (cref) {
12720 if ((klass = CREF_CLASS(cref)) != 0) {
12721 break;
12722 }
12723 cref = CREF_NEXT(cref);
12724 }
12725 return klass;
12726 }
12727 static inline VALUE
12728 vm_get_const_base(const VALUE *ep)
12729 {
12730 const rb_cref_t *cref = vm_get_cref(ep);
12731 VALUE klass = ((VALUE)RUBY_Qundef);
12732 while (cref) {
12733 if (!CREF_PUSHED_BY_EVAL(cref) &&
12734 (klass = CREF_CLASS(cref)) != 0) {
12735 break;
12736 }
12737 cref = CREF_NEXT(cref);
12738 }
12739 return klass;
12740 }
12741 static inline void
12742 vm_check_if_namespace(VALUE klass)
12743 {
12744 if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS))) && !( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
12745 rb_raise(rb_eTypeError, "%+""l""i" "\v"" is not a class/module", klass);
12746 }
12747 }
12748 static inline void
12749 vm_ensure_not_refinement_module(VALUE self)
12750 {
12751 if (( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(self))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((self) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((self) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((self) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((self) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(self)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(self))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) == (RUBY_T_MODULE))) && ((!(((VALUE)(self) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(self) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(self))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((self)))->flags&((RMODULE_IS_REFINEMENT))):0)) {
12752 rb_warn("not defined at the refinement, but at the outer class/module");
12753 }
12754 }
12755 static inline VALUE
12756 vm_get_iclass(rb_control_frame_t *cfp, VALUE klass)
12757 {
12758 return klass;
12759 }
12760 static inline VALUE
12761 vm_get_ev_const(rb_execution_context_t *ec, VALUE orig_klass, ID id, _Bool allow_nil, int is_defined)
12762 {
12763 void rb_const_warn_if_deprecated(const rb_const_entry_t *ce, VALUE klass, ID id);
12764 VALUE val;
12765 if (orig_klass == ((VALUE)RUBY_Qnil) && allow_nil) {
12766 const rb_cref_t *root_cref = vm_get_cref(ec->cfp->ep);
12767 const rb_cref_t *cref;
12768 VALUE klass = ((VALUE)RUBY_Qnil);
12769 while (root_cref && CREF_PUSHED_BY_EVAL(root_cref)) {
12770 root_cref = CREF_NEXT(root_cref);
12771 }
12772 cref = root_cref;
12773 while (cref && CREF_NEXT(cref)) {
12774 if (CREF_PUSHED_BY_EVAL(cref)) {
12775 klass = ((VALUE)RUBY_Qnil);
12776 }
12777 else {
12778 klass = CREF_CLASS(cref);
12779 }
12780 cref = CREF_NEXT(cref);
12781 if (!!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
12782 VALUE av, am = 0;
12783 rb_const_entry_t *ce;
12784 search_continue:
12785 if ((ce = rb_const_lookup(klass, id))) {
12786 rb_const_warn_if_deprecated(ce, klass, id);
12787 val = ce->value;
12788 if (val == ((VALUE)RUBY_Qundef)) {
12789 if (am == klass) break;
12790 am = klass;
12791 if (is_defined) return 1;
12792 if (rb_autoloading_value(klass, id, &av, ((void *)0))) return av;
12793 rb_autoload_load(klass, id);
12794 goto search_continue;
12795 }
12796 else {
12797 if (is_defined) {
12798 return 1;
12799 }
12800 else {
12801 return val;
12802 }
12803 }
12804 }
12805 }
12806 }
12807 if (root_cref && !!((VALUE)(CREF_CLASS(root_cref)) != ((VALUE)RUBY_Qnil))) {
12808 klass = vm_get_iclass(ec->cfp, CREF_CLASS(root_cref));
12809 }
12810 else {
12811 klass = rb_class_of((VALUE)(ec->cfp->self));
12812 }
12813 if (is_defined) {
12814 return rb_const_defined(klass, id);
12815 }
12816 else {
12817 return rb_const_get(klass, id);
12818 }
12819 }
12820 else {
12821 vm_check_if_namespace(orig_klass);
12822 if (is_defined) {
12823 return rb_public_const_defined_from(orig_klass, id);
12824 }
12825 else {
12826 return rb_public_const_get_from(orig_klass, id);
12827 }
12828 }
12829 }
12830 static inline VALUE
12831 vm_get_cvar_base(const rb_cref_t *cref, rb_control_frame_t *cfp)
12832 {
12833 VALUE klass;
12834 if (!cref) {
12835 rb_bug("vm_get_cvar_base: no cref");
12836 }
12837 while (CREF_NEXT(cref) &&
12838 (!((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) ||
12839 CREF_PUSHED_BY_EVAL(cref))) {
12840 cref = CREF_NEXT(cref);
12841 }
12842 if (!CREF_NEXT(cref)) {
12843 rb_warn("class variable access from toplevel");
12844 }
12845 klass = vm_get_iclass(cfp, CREF_CLASS(cref));
12846 if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
12847 rb_raise(rb_eTypeError, "no class variables available");
12848 }
12849 return klass;
12850 }
12851 static VALUE
12852 vm_search_const_defined_class(const VALUE cbase, ID id)
12853 {
12854 if (rb_const_defined_at(cbase, id)) return cbase;
12855 if (cbase == rb_cObject) {
12856 VALUE tmp = RCLASS_SUPER(cbase);
12857 while (tmp) {
12858 if (rb_const_defined_at(tmp, id)) return tmp;
12859 tmp = RCLASS_SUPER(tmp);
12860 }
12861 }
12862 return 0;
12863 }
12864 __attribute__ ((__always_inline__)) static VALUE vm_getivar(VALUE, ID, IVC, struct rb_call_cache *, int);
12865 static inline VALUE
12866 vm_getivar(VALUE obj, ID id, IVC ic, struct rb_call_cache *cc, int is_attr)
12867 {
12868 VALUE val = ((VALUE)RUBY_Qundef);
12869 if ((((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
12870 }
12871 else if ((__builtin_expect(!!(is_attr ? (cc->aux.index > 0) : (ic->ic_serial == (((struct RClass*)(((struct RBasic*)(obj))->klass))->class_serial))), 1))) {
12872 st_index_t index = !is_attr ? ic->index : (cc->aux.index - 1);
12873 ((void)0);
12874 if ((__builtin_expect(!!((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT), 1)) &&
12875 (__builtin_expect(!!(index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv)), 1))) {
12876 val = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr)[index];
12877 }
12878 else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
12879 struct gen_ivtbl *ivtbl;
12880 if ((__builtin_expect(!!(rb_st_lookup(rb_ivar_generic_ivtbl(), (st_data_t)obj, (st_data_t *)&ivtbl)), 1)) &&
12881 (__builtin_expect(!!(index < ivtbl->numiv), 1))) {
12882 val = ivtbl->ivptr[index];
12883 }
12884 }
12885 goto ret;
12886 }
12887 else {
12888 struct st_table *iv_index_tbl;
12889 st_index_t numiv;
12890 VALUE *ivptr;
12891 st_data_t index;
12892 if ((int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_OBJECT) {
12893 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);
12894 numiv = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv);
12895 ivptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
12896 fill:
12897 if (iv_index_tbl) {
12898 if (rb_st_lookup(iv_index_tbl, id, &index)) {
12899 if (!is_attr) {
12900 ic->index = index;
12901 ic->ic_serial = (((struct RClass*)(((struct RBasic*)(obj))->klass))->class_serial);
12902 }
12903 else {
12904 cc->aux.index = (int)index + 1;
12905 }
12906 if (index < numiv) {
12907 val = ivptr[index];
12908 }
12909 }
12910 }
12911 }
12912 else if ((((struct RBasic*)(obj))->flags&(((VALUE)RUBY_FL_EXIVAR)))) {
12913 struct gen_ivtbl *ivtbl;
12914 if ((__builtin_expect(!!(rb_st_lookup(rb_ivar_generic_ivtbl(), (st_data_t)obj, (st_data_t *)&ivtbl)), 1))) {
12915 numiv = ivtbl->numiv;
12916 ivptr = ivtbl->ivptr;
12917 iv_index_tbl = ((((struct RClass*)(rb_obj_class(obj)))->ptr)->iv_index_tbl);
12918 goto fill;
12919 }
12920 }
12921 else {
12922 goto general_path;
12923 }
12924 ret:
12925 if ((__builtin_expect(!!(val != ((VALUE)RUBY_Qundef)), 1))) {
12926 return val;
12927 }
12928 else {
12929 if (!is_attr && !(((VALUE)((*rb_ruby_verbose_ptr())) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
12930 rb_warning("instance variable %""l""i" "\v"" not initialized", rb_id_quote_unprintable(id));
12931 }
12932 return ((VALUE)RUBY_Qnil);
12933 }
12934 }
12935 general_path:
12936 ((void)0);
12937 if (is_attr) {
12938 return rb_attr_get(obj, id);
12939 }
12940 else {
12941 return rb_ivar_get(obj, id);
12942 }
12943 }
12944 static inline VALUE
12945 vm_setivar(VALUE obj, ID id, VALUE val, IVC ic, struct rb_call_cache *cc, int is_attr)
12946 {
12947 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);
12948 if ((__builtin_expect(!!(( ((RUBY_T_OBJECT) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_OBJECT) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_OBJECT) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_OBJECT) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_OBJECT) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_OBJECT) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_OBJECT) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_OBJECT)))), 1))) {
12949 VALUE klass = ((struct RBasic*)(obj))->klass;
12950 st_data_t index;
12951 if ((__builtin_expect(!!((!is_attr && (ic->ic_serial == (((struct RClass*)(klass))->class_serial))) || ( is_attr && (cc->aux.index > 0))), 1))) {
12952 VALUE *ptr = ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ((struct RObject*)(obj))->as.ary : ((struct RObject*)(obj))->as.heap.ivptr);
12953 index = !is_attr ? ic->index : cc->aux.index-1;
12954 if ((index < ((((struct RBasic*)(obj))->flags & ROBJECT_EMBED) ? ROBJECT_EMBED_LEN_MAX : ((struct RObject*)(obj))->as.heap.numiv))) {
12955 __extension__({
12956 #pragma GCC diagnostic push
12957 ;
12958 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
12959 ; typeof(rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 1127)) unaligned_member_access_result = (rb_obj_write((VALUE)(obj), (VALUE *)(&ptr[index]), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 1127));
12960 #pragma GCC diagnostic pop
12961 ; unaligned_member_access_result; });
12962 ((void)0);
12963 return val;
12964 }
12965 }
12966 else {
12967 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);
12968 if (iv_index_tbl && rb_st_lookup(iv_index_tbl, (st_data_t)id, &index)) {
12969 if (!is_attr) {
12970 ic->index = index;
12971 ic->ic_serial = (((struct RClass*)(klass))->class_serial);
12972 }
12973 else if (index >= 0x7fffffff) {
12974 rb_raise(rb_eArgError, "too many instance variables");
12975 }
12976 else {
12977 cc->aux.index = (int)(index + 1);
12978 }
12979 }
12980 }
12981 }
12982 else {
12983 ((void)0);
12984 }
12985 ((void)0);
12986 return rb_ivar_set(obj, id, val);
12987 }
12988 static inline VALUE
12989 vm_getinstancevariable(VALUE obj, ID id, IVC ic)
12990 {
12991 return vm_getivar(obj, id, ic, ((void *)0), 0);
12992 }
12993 static inline void
12994 vm_setinstancevariable(VALUE obj, ID id, VALUE val, IVC ic)
12995 {
12996 vm_setivar(obj, id, val, ic, 0, 0);
12997 }
12998 static VALUE
12999 vm_throw_continue(const rb_execution_context_t *ec, VALUE err)
13000 {
13001 if ((((int)(long)(err))&RUBY_FIXNUM_FLAG)) {
13002 ec->tag->state = ((int)rb_fix2int((VALUE)(err)));
13003 }
13004 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)))) {
13005 ec->tag->state = RUBY_TAG_THROW;
13006 }
13007 else if (( ((RUBY_T_IMEMO) == RUBY_T_FIXNUM) ? (((int)(long)((VALUE)(err)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_IMEMO) == RUBY_T_TRUE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_IMEMO) == RUBY_T_FALSE) ? (((VALUE)(err)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_IMEMO) == RUBY_T_NIL) ? (((VALUE)(err)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_IMEMO) == RUBY_T_UNDEF) ? (((VALUE)(err)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_IMEMO) == RUBY_T_SYMBOL) ? ((((VALUE)((VALUE)(err))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_IMEMO) == RUBY_T_FLOAT) ? ( ((((int)(long)((VALUE)(err)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((VALUE)(err)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((VALUE)(err)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((VALUE)(err)))->flags & RUBY_T_MASK) == (RUBY_T_IMEMO)))) {
13008 ec->tag->state = THROW_DATA_STATE((struct vm_throw_data *)err);
13009 }
13010 else {
13011 ec->tag->state = RUBY_TAG_RAISE;
13012 }
13013 return err;
13014 }
13015 static VALUE
13016 vm_throw_start(const rb_execution_context_t *ec, rb_control_frame_t *const reg_cfp, enum ruby_tag_type state,
13017 const int flag, const VALUE throwobj)
13018 {
13019 const rb_control_frame_t *escape_cfp = ((void *)0);
13020 const rb_control_frame_t * const eocfp = RUBY_VM_END_CONTROL_FRAME(ec);
13021 if (flag != 0) {
13022 }
13023 else if (state == RUBY_TAG_BREAK) {
13024 int is_orphan = 1;
13025 const VALUE *ep = ((((reg_cfp)->ep)));
13026 const rb_iseq_t *base_iseq = ((((reg_cfp)))->iseq);
13027 escape_cfp = reg_cfp;
13028 while (base_iseq->body->type != ISEQ_TYPE_BLOCK) {
13029 if (escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
13030 escape_cfp = ((escape_cfp)+1);
13031 ep = escape_cfp->ep;
13032 base_iseq = escape_cfp->iseq;
13033 }
13034 else {
13035 ep = VM_ENV_PREV_EP(ep);
13036 base_iseq = base_iseq->body->parent_iseq;
13037 escape_cfp = rb_vm_search_cf_from_ep(ec, escape_cfp, ep);
13038 ((void)0);
13039 }
13040 }
13041 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13042 is_orphan = 0;
13043 state = RUBY_TAG_RETURN;
13044 }
13045 else {
13046 ep = VM_ENV_PREV_EP(ep);
13047 while (escape_cfp < eocfp) {
13048 if (escape_cfp->ep == ep) {
13049 const rb_iseq_t *const iseq = escape_cfp->iseq;
13050 const VALUE epc = escape_cfp->pc - iseq->body->iseq_encoded;
13051 const struct iseq_catch_table *const ct = iseq->body->catch_table;
13052 unsigned int i;
13053 if (!ct) break;
13054 for (i=0; i < ct->size; i++) {
13055 const struct iseq_catch_table_entry *const entry =
13056 __extension__({
13057 #pragma GCC diagnostic push
13058 ;
13059 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13060 ; typeof(&(ct)->entries[i]) unaligned_member_access_result = (&(ct)->entries[i]);
13061 #pragma GCC diagnostic pop
13062 ; unaligned_member_access_result; });
13063 if (entry->type == CATCH_TYPE_BREAK &&
13064 entry->iseq == base_iseq &&
13065 entry->start < epc && entry->end >= epc) {
13066 if (entry->cont == epc) {
13067 is_orphan = 0;
13068 }
13069 break;
13070 }
13071 }
13072 break;
13073 }
13074 escape_cfp = ((escape_cfp)+1);
13075 }
13076 }
13077 if (is_orphan) {
13078 rb_vm_localjump_error("break from proc-closure", throwobj, RUBY_TAG_BREAK);
13079 }
13080 }
13081 else if (state == RUBY_TAG_RETRY) {
13082 const VALUE *ep = VM_ENV_PREV_EP(((((reg_cfp)->ep))));
13083 escape_cfp = rb_vm_search_cf_from_ep(ec, reg_cfp, ep);
13084 }
13085 else if (state == RUBY_TAG_RETURN) {
13086 const VALUE *current_ep = ((((reg_cfp)->ep)));
13087 const VALUE *target_lep = VM_EP_LEP(current_ep);
13088 int in_class_frame = 0;
13089 int toplevel = 1;
13090 escape_cfp = reg_cfp;
13091 while (escape_cfp < eocfp) {
13092 const VALUE *lep = VM_CF_LEP(escape_cfp);
13093 if (!target_lep) {
13094 target_lep = lep;
13095 }
13096 if (lep == target_lep &&
13097 VM_FRAME_RUBYFRAME_P(escape_cfp) &&
13098 escape_cfp->iseq->body->type == ISEQ_TYPE_CLASS) {
13099 in_class_frame = 1;
13100 target_lep = 0;
13101 }
13102 if (lep == target_lep) {
13103 if (VM_FRAME_LAMBDA_P(escape_cfp)) {
13104 toplevel = 0;
13105 if (in_class_frame) {
13106 goto valid_return;
13107 }
13108 else {
13109 const VALUE *tep = current_ep;
13110 while (target_lep != tep) {
13111 if (escape_cfp->ep == tep) {
13112 goto valid_return;
13113 }
13114 tep = VM_ENV_PREV_EP(tep);
13115 }
13116 }
13117 }
13118 else if (VM_FRAME_RUBYFRAME_P(escape_cfp)) {
13119 switch (escape_cfp->iseq->body->type) {
13120 case ISEQ_TYPE_TOP:
13121 case ISEQ_TYPE_MAIN:
13122 if (toplevel) {
13123 if (in_class_frame) goto unexpected_return;
13124 goto valid_return;
13125 }
13126 break;
13127 case ISEQ_TYPE_EVAL:
13128 case ISEQ_TYPE_CLASS:
13129 toplevel = 0;
13130 break;
13131 default:
13132 break;
13133 }
13134 }
13135 }
13136 if (escape_cfp->ep == target_lep && escape_cfp->iseq->body->type == ISEQ_TYPE_METHOD) {
13137 goto valid_return;
13138 }
13139 escape_cfp = ((escape_cfp)+1);
13140 }
13141 unexpected_return:;
13142 rb_vm_localjump_error("unexpected return", throwobj, RUBY_TAG_RETURN);
13143 valid_return:;
13144 }
13145 else {
13146 rb_bug("isns(throw): unsupported throw type");
13147 }
13148 ec->tag->state = state;
13149 return (VALUE)THROW_DATA_NEW(throwobj, escape_cfp, state);
13150 }
13151 static VALUE
13152 vm_throw(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
13153 rb_num_t throw_state, VALUE throwobj)
13154 {
13155 const int state = (int)(throw_state & VM_THROW_STATE_MASK);
13156 const int flag = (int)(throw_state & VM_THROW_NO_ESCAPE_FLAG);
13157 if (state != 0) {
13158 return vm_throw_start(ec, reg_cfp, state, flag, throwobj);
13159 }
13160 else {
13161 return vm_throw_continue(ec, throwobj);
13162 }
13163 }
13164 static inline void
13165 vm_expandarray(VALUE *sp, VALUE ary, rb_num_t num, int flag)
13166 {
13167 int is_splat = flag & 0x01;
13168 rb_num_t space_size = num + is_splat;
13169 VALUE *base = sp - 1;
13170 const VALUE *ptr;
13171 rb_num_t len;
13172 const VALUE obj = ary;
13173 if (!( ((RUBY_T_ARRAY) == RUBY_T_FIXNUM) ? (((int)(long)(ary))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ARRAY) == RUBY_T_TRUE) ? ((ary) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ARRAY) == RUBY_T_FALSE) ? ((ary) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ARRAY) == RUBY_T_NIL) ? ((ary) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ARRAY) == RUBY_T_UNDEF) ? ((ary) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ARRAY) == RUBY_T_SYMBOL) ? ((((VALUE)(ary)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ARRAY) == RUBY_T_FLOAT) ? ( ((((int)(long)(ary))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(ary) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(ary) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(ary))->flags & RUBY_T_MASK) == (RUBY_T_ARRAY))) && !((VALUE)(ary = rb_check_array_type(ary)) != ((VALUE)RUBY_Qnil))) {
13174 ary = obj;
13175 ptr = &ary;
13176 len = 1;
13177 }
13178 else {
13179 ptr = rb_array_const_ptr_transient(ary);
13180 len = (rb_num_t)rb_array_len(ary);
13181 }
13182 if (space_size == 0) {
13183 }
13184 else if (flag & 0x02) {
13185 rb_num_t i = 0, j;
13186 if (len < num) {
13187 for (i=0; i<num-len; i++) {
13188 *base++ = ((VALUE)RUBY_Qnil);
13189 }
13190 }
13191 for (j=0; i<num; i++, j++) {
13192 VALUE v = ptr[len - j - 1];
13193 *base++ = v;
13194 }
13195 if (is_splat) {
13196 *base = rb_ary_new_from_values(len - j, ptr);
13197 }
13198 }
13199 else {
13200 rb_num_t i;
13201 VALUE *bptr = &base[space_size - 1];
13202 for (i=0; i<num; i++) {
13203 if (len <= i) {
13204 for (; i<num; i++) {
13205 *bptr-- = ((VALUE)RUBY_Qnil);
13206 }
13207 break;
13208 }
13209 *bptr-- = ptr[i];
13210 }
13211 if (is_splat) {
13212 if (num > len) {
13213 *bptr = rb_ary_new();
13214 }
13215 else {
13216 *bptr = rb_ary_new_from_values(len - num, ptr + num);
13217 }
13218 }
13219 }
13220 (*__extension__ ({ volatile VALUE *rb_gc_guarded_ptr = &(ary); __asm__("" : : "m"(rb_gc_guarded_ptr)); rb_gc_guarded_ptr; }));
13221 }
13222 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);
13223 __attribute__((__artificial__))
13224 static inline vm_call_handler
13225 calccall(const struct rb_call_data *cd, const rb_callable_method_entry_t *me)
13226 {
13227 const struct rb_call_info *ci = &cd->ci;
13228 const struct rb_call_cache *cc = &cd->cc;
13229 if ((__builtin_expect(!!(!me), 0))) {
13230 ((void)0);
13231 return vm_call_general;
13232 }
13233 else if ((__builtin_expect(!!(cc->me != me), 1))) {
13234 ((void)0);
13235 return vm_call_general;
13236 }
13237 else if ((__builtin_expect(!!(cc->method_serial != me->def->method_serial), 0))) {
13238 ((void)0);
13239 return vm_call_general;
13240 }
13241 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) &&
13242 !(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
13243 ((void)0);
13244 return vm_call_general;
13245 }
13246 else {
13247 ((void)0);
13248 (void)(cc->call != vm_call_general);
13249 return cc->call;
13250 }
13251 }
13252 __attribute__ ((__visibility__("default"))) extern void
13253 rb_vm_search_method_slowpath(struct rb_call_data *cd, VALUE klass)
13254 {
13255 const struct rb_call_info *ci = &cd->ci;
13256 struct rb_call_cache *cc = &cd->cc;
13257 const rb_callable_method_entry_t *me =
13258 rb_callable_method_entry(klass, ci->mid);
13259 const vm_call_handler call = calccall(cd, me);
13260 struct rb_call_cache buf = {
13261 (ruby_vm_global_method_state),
13262 { (((struct RClass*)(klass))->class_serial) },
13263 me,
13264 me ? me->def->method_serial : 0,
13265 call,
13266 };
13267 if (call != vm_call_general) {
13268 for (int i = 0; i < ((int)(sizeof(cc->class_serial) / sizeof((cc->class_serial)[0]))) - 1; i++) {
13269 buf.class_serial[i + 1] = cc->class_serial[i];
13270 }
13271 }
13272 ((__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)));
13273 ((void)0);
13274 }
13275 static inline _Bool
13276 vm_cache_check_for_class_serial(struct rb_call_cache *cc, rb_serial_t class_serial)
13277 {
13278 int i;
13279 rb_serial_t j;
13280 for (i = 0; i < ((int)(sizeof(cc->class_serial) / sizeof((cc->class_serial)[0]))); i++) {
13281 j = cc->class_serial[i];
13282 if (! j) {
13283 break;
13284 }
13285 else if (j != class_serial) {
13286 continue;
13287 }
13288 else if (! i) {
13289 return 1;
13290 }
13291 else {
13292 goto hit;
13293 }
13294 }
13295 ((void)0);
13296 return 0;
13297 hit:
13298 for (; i > 0; i--) {
13299 cc->class_serial[i] = cc->class_serial[i - 1];
13300 }
13301 cc->class_serial[0] = j;
13302 ((__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)));
13303 return 1;
13304 }
13305 static void
13306 vm_search_method_fastpath(struct rb_call_data *cd, VALUE klass)
13307 {
13308 struct rb_call_cache *cc = &cd->cc;
13309 if ((__builtin_expect(!!(((ruby_vm_global_method_state) == cc->method_state) && vm_cache_check_for_class_serial(cc, (((struct RClass*)(klass))->class_serial))), 1))) {
13310 ((void)0);
13311 ((void)0);
13312 return;
13313 }
13314 ((void)0);
13315 rb_vm_search_method_slowpath(cd, klass);
13316 }
13317 static void
13318 vm_search_method(struct rb_call_data *cd, VALUE recv)
13319 {
13320 VALUE klass = rb_class_of((VALUE)(recv));
13321 ((void)0);
13322 ((void)0);
13323 vm_search_method_fastpath(cd, klass);
13324 }
13325 static inline int
13326 check_cfunc(const rb_callable_method_entry_t *me, VALUE (*func)())
13327 {
13328 if (me && me->def->type == VM_METHOD_TYPE_CFUNC &&
13329 me->def->body.cfunc.func == func) {
13330 return 1;
13331 }
13332 else {
13333 return 0;
13334 }
13335 }
13336 static inline int
13337 vm_method_cfunc_is(CALL_DATA cd, VALUE recv, VALUE (*func)())
13338 {
13339 vm_search_method(cd, recv);
13340 return check_cfunc(cd->cc.me, func);
13341 }
13342 static VALUE
13343 opt_equal_fallback(VALUE recv, VALUE obj, CALL_DATA cd)
13344 {
13345 if (vm_method_cfunc_is(cd, recv, rb_obj_equal)) {
13346 return recv == obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13347 }
13348 return ((VALUE)RUBY_Qundef);
13349 }
13350 #define BUILTIN_CLASS_P(x,k) (!SPECIAL_CONST_P(x) && RBASIC_CLASS(x) == k)
13351 #define EQ_UNREDEFINED_P(t) BASIC_OP_UNREDEFINED_P(BOP_EQ, t ##_REDEFINED_OP_FLAG)
13352 static inline _Bool
13353 FIXNUM_2_P(VALUE a, VALUE b)
13354 {
13355 long x = a;
13356 long y = b;
13357 long z = x & y & 1;
13358 return z == 1;
13359 }
13360 static inline _Bool
13361 FLONUM_2_P(VALUE a, VALUE b)
13362 {
13363 long x = a;
13364 long y = b;
13365 long z = ((x ^ 2) | (y ^ 2)) & 3;
13366 return !z;
13367 }
13368 static inline int
13369 comparable_by_identity(VALUE recv, VALUE obj)
13370 {
13371 if (FIXNUM_2_P(recv, obj)) {
13372 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 0))) == 0), 1))) != 0) * 2 - 1;
13373 }
13374 if (FLONUM_2_P(recv, obj)) {
13375 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1))) != 0) * 2 - 1;
13376 }
13377 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)))) {
13378 return (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 6))) == 0), 1))) != 0) * 2 - 1;
13379 }
13380 return 0;
13381 }
13382 static
13383 inline
13384 VALUE
13385 opt_eq_func(VALUE recv, VALUE obj, CALL_DATA cd)
13386 {
13387 switch (comparable_by_identity(recv, obj)) {
13388 case 1:
13389 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13390 case -1:
13391 goto fallback;
13392 }
13393 if (0) {
13394 }
13395 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
13396 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
13397 return rb_float_equal(recv, obj);
13398 }
13399 }
13400 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)))) {
13401 if (recv == obj) return ((VALUE)RUBY_Qtrue);
13402 if (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)(obj))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? ((obj) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? ((obj) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? ((obj) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? ((obj) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)(obj)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)(obj))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(obj) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(obj) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(obj))->flags & RUBY_T_MASK) == (RUBY_T_STRING)))) {
13403 return rb_str_eql_internal(recv, obj);
13404 }
13405 }
13406 fallback:
13407 return opt_equal_fallback(recv, obj, cd);
13408 }
13409 static
13410 inline
13411 VALUE
13412 opt_eql_func(VALUE recv, VALUE obj, CALL_DATA cd)
13413 {
13414 switch (comparable_by_identity(recv, obj)) {
13415 case 1:
13416 return (recv == obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13417 case -1:
13418 goto fallback;
13419 }
13420 if (0) {
13421 }
13422 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cFloat)) {
13423 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 1))) == 0), 1)))) {
13424 return rb_float_eql(recv, obj);
13425 }
13426 }
13427 else if ((!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cString)) {
13428 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_EQ)]&((1 << 2))) == 0), 1)))) {
13429 return rb_str_eql(recv, obj);
13430 }
13431 }
13432 fallback:
13433 return opt_equal_fallback(recv, obj, cd);
13434 }
13435 #undef BUILTIN_CLASS_P
13436 #undef EQ_UNREDEFINED_P
13437 VALUE
13438 rb_equal_opt(VALUE obj1, VALUE obj2)
13439 {
13440 struct rb_call_data cd = { .ci = { .mid = idEq, }, };
13441 return opt_eq_func(obj1, obj2, &cd);
13442 }
13443 VALUE
13444 rb_eql_opt(VALUE obj1, VALUE obj2)
13445 {
13446 struct rb_call_data cd = { .ci = { .mid = idEqlP, }, };
13447 return opt_eql_func(obj1, obj2, &cd);
13448 }
13449 extern VALUE rb_vm_call0(rb_execution_context_t *ec, VALUE, ID, int, const VALUE*, const rb_callable_method_entry_t *, int kw_splat);
13450 static VALUE
13451 check_match(rb_execution_context_t *ec, VALUE pattern, VALUE target, enum vm_check_match_type type)
13452 {
13453 switch (type) {
13454 case VM_CHECKMATCH_TYPE_WHEN:
13455 return pattern;
13456 case VM_CHECKMATCH_TYPE_RESCUE:
13457 if (!rb_obj_is_kind_of(pattern, rb_cModule)) {
13458 rb_raise(rb_eTypeError, "class or module required for rescue clause");
13459 }
13460 case VM_CHECKMATCH_TYPE_CASE: {
13461 const rb_callable_method_entry_t *me =
13462 rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(pattern)), idEqq, ((void *)0));
13463 if (me) {
13464 return rb_vm_call0(ec, pattern, idEqq, 1, &target, me, 0);
13465 }
13466 else {
13467 return __extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, pattern, idEqq, 1, &target); });
13468 }
13469 }
13470 default:
13471 rb_bug("check_match: unreachable");
13472 }
13473 }
13474 #define CHECK_CMP_NAN(a,b)
13475 static inline VALUE
13476 double_cmp_lt(double a, double b)
13477 {
13478 ;
13479 return a < b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13480 }
13481 static inline VALUE
13482 double_cmp_le(double a, double b)
13483 {
13484 ;
13485 return a <= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13486 }
13487 static inline VALUE
13488 double_cmp_gt(double a, double b)
13489 {
13490 ;
13491 return a > b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13492 }
13493 static inline VALUE
13494 double_cmp_ge(double a, double b)
13495 {
13496 ;
13497 return a >= b ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
13498 }
13499 static inline VALUE *
13500 vm_base_ptr(const rb_control_frame_t *cfp)
13501 {
13502 return cfp->__bp__;
13503 }
13504 __attribute__ ((__noreturn__)) static void raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc);
13505 __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);
13506 __attribute__ ((__noreturn__)) static void argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys);
13507 VALUE rb_keyword_error_new(const char *error, VALUE keys);
13508 static VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv,
13509 enum method_missing_reason call_status, int kw_splat);
13510 __attribute__ ((__visibility__("default"))) extern
13511 const rb_callable_method_entry_t *rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me);
13512 struct args_info {
13513 VALUE *argv;
13514 int argc;
13515 int rest_index;
13516 int rest_dupped;
13517 const struct rb_call_info_kw_arg *kw_arg;
13518 VALUE *kw_argv;
13519 VALUE rest;
13520 };
13521 enum arg_setup_type {
13522 arg_setup_method,
13523 arg_setup_block
13524 };
13525 static inline void
13526 arg_rest_dup(struct args_info *args)
13527 {
13528 if (!args->rest_dupped) {
13529 args->rest = rb_ary_dup(args->rest);
13530 args->rest_dupped = 1;
13531 }
13532 }
13533 static inline int
13534 args_argc(struct args_info *args)
13535 {
13536 if (args->rest == ((VALUE)RUBY_Qfalse)) {
13537 return args->argc;
13538 }
13539 else {
13540 return args->argc + rb_long2int_inline(rb_array_len(args->rest)) - args->rest_index;
13541 }
13542 }
13543 static inline void
13544 args_extend(struct args_info *args, const int min_argc)
13545 {
13546 int i;
13547 if (args->rest) {
13548 arg_rest_dup(args);
13549 ((void)0);
13550 for (i=args->argc + rb_long2int_inline(rb_array_len(args->rest)); i<min_argc; i++) {
13551 rb_ary_push(args->rest, ((VALUE)RUBY_Qnil));
13552 }
13553 }
13554 else {
13555 for (i=args->argc; i<min_argc; i++) {
13556 args->argv[args->argc++] = ((VALUE)RUBY_Qnil);
13557 }
13558 }
13559 }
13560 static inline void
13561 args_reduce(struct args_info *args, int over_argc)
13562 {
13563 if (args->rest) {
13564 const long len = rb_array_len(args->rest);
13565 if (len > over_argc) {
13566 arg_rest_dup(args);
13567 rb_ary_resize(args->rest, len - over_argc);
13568 return;
13569 }
13570 else {
13571 args->rest = ((VALUE)RUBY_Qfalse);
13572 over_argc -= len;
13573 }
13574 }
13575 ((void)0);
13576 args->argc -= over_argc;
13577 }
13578 static inline int
13579 args_check_block_arg0(struct args_info *args)
13580 {
13581 VALUE ary = ((VALUE)RUBY_Qnil);
13582 if (args->rest && rb_array_len(args->rest) == 1) {
13583 VALUE arg0 = (rb_array_const_ptr_transient(args->rest)[0]);
13584 ary = rb_check_array_type(arg0);
13585 }
13586 else if (args->argc == 1) {
13587 VALUE arg0 = args->argv[0];
13588 ary = rb_check_array_type(arg0);
13589 args->argv[0] = arg0;
13590 }
13591 if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
13592 args->rest = ary;
13593 args->rest_index = 0;
13594 args->argc = 0;
13595 return 1;
13596 }
13597 return 0;
13598 }
13599 static inline void
13600 args_copy(struct args_info *args)
13601 {
13602 if (args->rest != ((VALUE)RUBY_Qfalse)) {
13603 int argc = args->argc;
13604 args->argc = 0;
13605 arg_rest_dup(args);
13606 while (args->rest_index > 0 && argc > 0) {
13607 do { const VALUE _ary = (args->rest); const VALUE _v = (args->argv[--argc]); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
13608 #pragma GCC diagnostic push
13609 ;
13610 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13611 ; typeof(rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[--args->rest_index]), (VALUE)(_v), "../ruby-2.7.0/vm_args.c", 154)) unaligned_member_access_result = (rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[--args->rest_index]), (VALUE)(_v), "../ruby-2.7.0/vm_args.c", 154));
13612 #pragma GCC diagnostic pop
13613 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); } while (0);
13614 }
13615 while (argc > 0) {
13616 rb_ary_unshift(args->rest, args->argv[--argc]);
13617 }
13618 }
13619 else if (args->argc > 0) {
13620 args->rest = rb_ary_new_from_values(args->argc, args->argv);
13621 args->rest_index = 0;
13622 args->rest_dupped = 1;
13623 args->argc = 0;
13624 }
13625 }
13626 static inline const VALUE *
13627 args_rest_argv(struct args_info *args)
13628 {
13629 return rb_array_const_ptr_transient(args->rest) + args->rest_index;
13630 }
13631 static inline VALUE
13632 args_rest_array(struct args_info *args)
13633 {
13634 VALUE ary;
13635 if (args->rest) {
13636 ary = rb_ary_behead(args->rest, args->rest_index);
13637 args->rest_index = 0;
13638 args->rest = 0;
13639 }
13640 else {
13641 ary = rb_ary_new();
13642 }
13643 return ary;
13644 }
13645 #define KW_HASH_HAS_NO_KEYS 0
13646 #define KW_HASH_HAS_SYMBOL_KEY 1
13647 #define KW_HASH_HAS_OTHER_KEY 2
13648 #define KW_HASH_HAS_BOTH_KEYS 3
13649 static int
13650 keyword_hash_symbol_other_iter(st_data_t key, st_data_t val, st_data_t arg)
13651 {
13652 *(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;
13653 if ((*(int*)arg & 3) == 3) {
13654 return ST_STOP;
13655 }
13656 return ST_CONTINUE;
13657 }
13658 static int
13659 keyword_hash_symbol_other(VALUE hash)
13660 {
13661 int symbol_other = 0;
13662 rb_hash_stlike_foreach(hash, keyword_hash_symbol_other_iter, (st_data_t)(&symbol_other));
13663 return symbol_other;
13664 }
13665 static int
13666 keyword_hash_split_iter(st_data_t key, st_data_t val, st_data_t arg)
13667 {
13668 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)))) {
13669 rb_hash_aset((VALUE)arg, (VALUE)key, (VALUE)val);
13670 return ST_DELETE;
13671 }
13672 return ST_CONTINUE;
13673 }
13674 static void
13675 keyword_hash_split(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr)
13676 {
13677 *kw_hash_ptr = rb_hash_new();
13678 rb_hash_stlike_foreach(*rest_hash_ptr, keyword_hash_split_iter, (st_data_t)(*kw_hash_ptr));
13679 }
13680 static int
13681 keyword_hash_p(VALUE *kw_hash_ptr, VALUE *rest_hash_ptr, int check_only_symbol)
13682 {
13683 *rest_hash_ptr = rb_check_hash_type(*kw_hash_ptr);
13684 if (!!((VALUE)(*rest_hash_ptr) != ((VALUE)RUBY_Qnil))) {
13685 if (check_only_symbol) {
13686 switch (keyword_hash_symbol_other(*rest_hash_ptr)) {
13687 case 0:
13688 case 1:
13689 break;
13690 case 2:
13691 *kw_hash_ptr = ((VALUE)RUBY_Qnil);
13692 return 0;
13693 case 3:
13694 *rest_hash_ptr = rb_hash_dup(*rest_hash_ptr);
13695 keyword_hash_split(kw_hash_ptr, rest_hash_ptr);
13696 return 1;
13697 }
13698 }
13699 *kw_hash_ptr = *rest_hash_ptr;
13700 *rest_hash_ptr = ((VALUE)RUBY_Qfalse);
13701 return 1;
13702 }
13703 else {
13704 *kw_hash_ptr = ((VALUE)RUBY_Qnil);
13705 return 0;
13706 }
13707 }
13708 static VALUE
13709 args_pop_keyword_hash(struct args_info *args, VALUE *kw_hash_ptr, int check_only_symbol)
13710 {
13711 VALUE rest_hash;
13712 if (args->rest == ((VALUE)RUBY_Qfalse)) {
13713 from_argv:
13714 ((void)0);
13715 *kw_hash_ptr = args->argv[args->argc-1];
13716 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13717 if (rest_hash) {
13718 args->argv[args->argc-1] = rest_hash;
13719 }
13720 else {
13721 args->argc--;
13722 return 1;
13723 }
13724 }
13725 }
13726 else {
13727 long len = rb_array_len(args->rest);
13728 if (len > 0) {
13729 *kw_hash_ptr = (rb_array_const_ptr_transient(args->rest)[len - 1]);
13730 if (keyword_hash_p(kw_hash_ptr, &rest_hash, check_only_symbol)) {
13731 if (rest_hash) {
13732 do { const VALUE _ary = (args->rest); const VALUE _v = (rest_hash); VALUE *ptr = (VALUE *)rb_array_ptr_use_start(_ary, 1); __extension__({
13733 #pragma GCC diagnostic push
13734 ;
13735 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
13736 ; typeof(rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.0/vm_args.c", 291)) unaligned_member_access_result = (rb_obj_write((VALUE)(_ary), (VALUE *)(&ptr[len - 1]), (VALUE)(_v), "../ruby-2.7.0/vm_args.c", 291));
13737 #pragma GCC diagnostic pop
13738 ; unaligned_member_access_result; }); rb_array_ptr_use_end(_ary, 1); } while (0);
13739 }
13740 else {
13741 arg_rest_dup(args);
13742 rb_ary_pop(args->rest);
13743 return 1;
13744 }
13745 }
13746 }
13747 else {
13748 goto from_argv;
13749 }
13750 }
13751 return 0;
13752 }
13753 static int
13754 args_kw_argv_to_hash(struct args_info *args)
13755 {
13756 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
13757 const VALUE *const passed_keywords = kw_arg->keywords;
13758 const int kw_len = kw_arg->keyword_len;
13759 VALUE h = rb_hash_new_with_size(kw_len);
13760 const int kw_start = args->argc - kw_len;
13761 const VALUE * const kw_argv = args->argv + kw_start;
13762 int i;
13763 args->argc = kw_start + 1;
13764 for (i=0; i<kw_len; i++) {
13765 rb_hash_aset(h, passed_keywords[i], kw_argv[i]);
13766 }
13767 args->argv[args->argc - 1] = h;
13768 return args->argc;
13769 }
13770 static void
13771 args_stored_kw_argv_to_hash(struct args_info *args)
13772 {
13773 int i;
13774 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
13775 const VALUE *const passed_keywords = kw_arg->keywords;
13776 const int passed_keyword_len = kw_arg->keyword_len;
13777 VALUE h = rb_hash_new_with_size(passed_keyword_len);
13778 for (i=0; i<passed_keyword_len; i++) {
13779 rb_hash_aset(h, passed_keywords[i], args->kw_argv[i]);
13780 }
13781 args->kw_argv = ((void *)0);
13782 if (args->rest) {
13783 arg_rest_dup(args);
13784 rb_ary_push(args->rest, h);
13785 }
13786 else {
13787 args->argv[args->argc++] = h;
13788 }
13789 }
13790 static inline void
13791 args_setup_lead_parameters(struct args_info *args, int argc, VALUE *locals)
13792 {
13793 if (args->argc >= argc) {
13794 args->argc -= argc;
13795 args->argv += argc;
13796 }
13797 else {
13798 int i, j;
13799 const VALUE *argv = args_rest_argv(args);
13800 for (i=args->argc, j=0; i<argc; i++, j++) {
13801 locals[i] = argv[j];
13802 }
13803 args->rest_index += argc - args->argc;
13804 args->argc = 0;
13805 }
13806 }
13807 static inline void
13808 args_setup_post_parameters(struct args_info *args, int argc, VALUE *locals)
13809 {
13810 long len;
13811 len = rb_array_len(args->rest);
13812 ((__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)));
13813 rb_ary_resize(args->rest, len - argc);
13814 }
13815 static inline int
13816 args_setup_opt_parameters(struct args_info *args, int opt_max, VALUE *locals)
13817 {
13818 int i;
13819 if (args->argc >= opt_max) {
13820 args->argc -= opt_max;
13821 args->argv += opt_max;
13822 i = opt_max;
13823 }
13824 else {
13825 int j;
13826 i = args->argc;
13827 args->argc = 0;
13828 if (args->rest) {
13829 int len = rb_long2int_inline(rb_array_len(args->rest));
13830 const VALUE *argv = rb_array_const_ptr_transient(args->rest);
13831 for (; i<opt_max && args->rest_index < len; i++, args->rest_index++) {
13832 locals[i] = argv[args->rest_index];
13833 }
13834 }
13835 for (j=i; j<opt_max; j++) {
13836 locals[j] = ((VALUE)RUBY_Qnil);
13837 }
13838 }
13839 return i;
13840 }
13841 static inline void
13842 args_setup_rest_parameter(struct args_info *args, VALUE *locals)
13843 {
13844 *locals = args_rest_array(args);
13845 }
13846 static VALUE
13847 make_unknown_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
13848 {
13849 int i;
13850 VALUE obj = rb_ary_tmp_new(1);
13851 for (i=0; i<passed_keyword_len; i++) {
13852 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
13853 rb_ary_push(obj, passed_keywords[i]);
13854 }
13855 }
13856 return obj;
13857 }
13858 static VALUE
13859 make_rest_kw_hash(const VALUE *passed_keywords, int passed_keyword_len, const VALUE *kw_argv)
13860 {
13861 int i;
13862 VALUE obj = rb_hash_new_with_size(passed_keyword_len);
13863 for (i=0; i<passed_keyword_len; i++) {
13864 if (kw_argv[i] != ((VALUE)RUBY_Qundef)) {
13865 rb_hash_aset(obj, passed_keywords[i], kw_argv[i]);
13866 }
13867 }
13868 return obj;
13869 }
13870 static inline int
13871 args_setup_kw_parameters_lookup(const ID key, VALUE *ptr, const VALUE *const passed_keywords, VALUE *passed_values, const int passed_keyword_len)
13872 {
13873 int i;
13874 const VALUE keyname = (rb_id2sym(key));
13875 for (i=0; i<passed_keyword_len; i++) {
13876 if (keyname == passed_keywords[i]) {
13877 *ptr = passed_values[i];
13878 passed_values[i] = ((VALUE)RUBY_Qundef);
13879 return 1;
13880 }
13881 }
13882 return 0;
13883 }
13884 #define KW_SPECIFIED_BITS_MAX (32-1)
13885 static void
13886 args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
13887 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
13888 VALUE *const locals)
13889 {
13890 const ID *acceptable_keywords = iseq->body->param.keyword->table;
13891 const int req_key_num = iseq->body->param.keyword->required_num;
13892 const int key_num = iseq->body->param.keyword->num;
13893 const VALUE * const default_values = iseq->body->param.keyword->default_values;
13894 VALUE missing = 0;
13895 int i, di, found = 0;
13896 int unspecified_bits = 0;
13897 VALUE unspecified_bits_value = ((VALUE)RUBY_Qnil);
13898 for (i=0; i<req_key_num; i++) {
13899 ID key = acceptable_keywords[i];
13900 if (args_setup_kw_parameters_lookup(key, &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
13901 found++;
13902 }
13903 else {
13904 if (!missing) missing = rb_ary_tmp_new(1);
13905 rb_ary_push(missing, (rb_id2sym(key)));
13906 }
13907 }
13908 if (missing) argument_kw_error(ec, iseq, "missing", missing);
13909 for (di=0; i<key_num; i++, di++) {
13910 if (args_setup_kw_parameters_lookup(acceptable_keywords[i], &locals[i], passed_keywords, passed_values, passed_keyword_len)) {
13911 found++;
13912 }
13913 else {
13914 if (default_values[di] == ((VALUE)RUBY_Qundef)) {
13915 locals[i] = ((VALUE)RUBY_Qnil);
13916 if ((__builtin_expect(!!(i < (32-1)), 1))) {
13917 unspecified_bits |= 0x01 << di;
13918 }
13919 else {
13920 if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
13921 int j;
13922 unspecified_bits_value = rb_hash_new();
13923 for (j=0; j<(32-1); j++) {
13924 if (unspecified_bits & (0x01 << j)) {
13925 rb_hash_aset(unspecified_bits_value, (((VALUE)(j))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
13926 }
13927 }
13928 }
13929 rb_hash_aset(unspecified_bits_value, (((VALUE)(di))<<1 | RUBY_FIXNUM_FLAG), ((VALUE)RUBY_Qtrue));
13930 }
13931 }
13932 else {
13933 locals[i] = default_values[di];
13934 }
13935 }
13936 }
13937 if (iseq->body->param.flags.has_kwrest) {
13938 const int rest_hash_index = key_num + 1;
13939 locals[rest_hash_index] = make_rest_kw_hash(passed_keywords, passed_keyword_len, passed_values);
13940 }
13941 else {
13942 if (found != passed_keyword_len) {
13943 VALUE keys = make_unknown_kw_hash(passed_keywords, passed_keyword_len, passed_values);
13944 argument_kw_error(ec, iseq, "unknown", keys);
13945 }
13946 }
13947 if (!((VALUE)(unspecified_bits_value) != ((VALUE)RUBY_Qnil))) {
13948 unspecified_bits_value = (((VALUE)(unspecified_bits))<<1 | RUBY_FIXNUM_FLAG);
13949 }
13950 locals[key_num] = unspecified_bits_value;
13951 }
13952 static inline void
13953 args_setup_kw_rest_parameter(VALUE keyword_hash, VALUE *locals)
13954 {
13955 locals[0] = !((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil)) ? rb_hash_new() : rb_hash_dup(keyword_hash);
13956 }
13957 static inline void
13958 args_setup_block_parameter(const rb_execution_context_t *ec, struct rb_calling_info *calling, VALUE *locals)
13959 {
13960 VALUE block_handler = calling->block_handler;
13961 *locals = rb_vm_bh_to_procval(ec, block_handler);
13962 }
13963 struct fill_values_arg {
13964 VALUE *keys;
13965 VALUE *vals;
13966 int argc;
13967 };
13968 static int
13969 fill_keys_values(st_data_t key, st_data_t val, st_data_t ptr)
13970 {
13971 struct fill_values_arg *arg = (struct fill_values_arg *)ptr;
13972 int i = arg->argc++;
13973 arg->keys[i] = (VALUE)key;
13974 arg->vals[i] = (VALUE)val;
13975 return ST_CONTINUE;
13976 }
13977 static inline int
13978 ignore_keyword_hash_p(VALUE keyword_hash, const rb_iseq_t * const iseq)
13979 {
13980 if (!(iseq->body->param.flags.has_kw) &&
13981 !(iseq->body->param.flags.has_kwrest)) {
13982 keyword_hash = rb_check_hash_type(keyword_hash);
13983 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)) {
13984 return 1;
13985 }
13986 }
13987 return 0;
13988 }
13989 VALUE rb_iseq_location(const rb_iseq_t *iseq);
13990 static st_table *caller_to_callees = 0;
13991 static VALUE
13992 rb_warn_check(const rb_execution_context_t * const ec, const rb_iseq_t *const iseq)
13993 {
13994 if (!rb_warning_category_enabled_p(RB_WARN_CATEGORY_DEPRECATED)) return 1;
13995 if (!iseq) return 0;
13996 const st_data_t callee = (st_data_t)(iseq->body->iseq_unique_id * 2);
13997 const rb_control_frame_t * const cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
13998 if (!cfp) return 0;
13999 const st_data_t caller = (st_data_t)cfp->pc;
14000 if (!caller_to_callees) {
14001 caller_to_callees = rb_st_init_numtable();
14002 }
14003 st_data_t val;
14004 if (rb_st_lookup(caller_to_callees, caller, &val)) {
14005 st_table *callees;
14006 if (val & 1) {
14007 val &= ~(st_data_t)1;
14008 if (val == callee) return 1;
14009 callees = rb_st_init_numtable();
14010 rb_st_insert(callees, val, 1);
14011 }
14012 else {
14013 callees = (st_table *) val;
14014 if (rb_st_lookup((callees),(callee),(st_data_t *)0)) return 1;
14015 }
14016 rb_st_insert(callees, callee, 1);
14017 rb_st_insert(caller_to_callees, caller, (st_data_t) callees);
14018 }
14019 else {
14020 rb_st_insert(caller_to_callees, caller, callee | 1);
14021 }
14022 return 0;
14023 }
14024 static inline void
14025 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)
14026 {
14027 if (rb_warn_check(ec, iseq)) return;
14028 VALUE name, loc;
14029 if (calling->recv == ((VALUE)RUBY_Qundef)) {
14030 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
14031 return;
14032 }
14033 name = rb_id2str(ci->mid);
14034 loc = rb_iseq_location(iseq);
14035 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14036 rb_warn("Passing the keyword argument for `%""l""i" "\v""' as the last hash parameter is deprecated",
14037 name);
14038 }
14039 else {
14040 rb_warn("Passing the keyword argument as the last hash parameter is deprecated");
14041 if (name) {
14042 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14043 "The called method `%""l""i" "\v""' is defined here", name);
14044 }
14045 else {
14046 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14047 "The called method is defined here");
14048 }
14049 }
14050 }
14051 static inline void
14052 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)
14053 {
14054 if (rb_warn_check(ec, iseq)) return;
14055 VALUE name, loc;
14056 name = rb_id2str(ci->mid);
14057 loc = rb_iseq_location(iseq);
14058 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14059 rb_warn("Splitting the last argument for `%""l""i" "\v""' into positional and keyword parameters is deprecated",
14060 name);
14061 }
14062 else {
14063 rb_warn("Splitting the last argument into positional and keyword parameters is deprecated");
14064 if (calling->recv != ((VALUE)RUBY_Qundef)) {
14065 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14066 "The called method `%""l""i" "\v""' is defined here", name);
14067 }
14068 else {
14069 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14070 "The called method is defined here");
14071 }
14072 }
14073 }
14074 static inline void
14075 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)
14076 {
14077 if (rb_warn_check(ec, iseq)) return;
14078 VALUE name, loc;
14079 name = rb_id2str(ci->mid);
14080 loc = rb_iseq_location(iseq);
14081 if (!((VALUE)(loc) != ((VALUE)RUBY_Qnil))) {
14082 rb_warn("Using the last argument for `%""l""i" "\v""' as keyword parameters is deprecated; maybe ** should be added to the call",
14083 name);
14084 }
14085 else {
14086 rb_warn("Using the last argument as keyword parameters is deprecated; maybe ** should be added to the call");
14087 if (calling->recv != ((VALUE)RUBY_Qundef)) {
14088 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14089 "The called method `%""l""i" "\v""' is defined here", name);
14090 }
14091 else {
14092 rb_compile_warn((!(((struct RBasic*)((rb_array_const_ptr_transient(loc)[0])))->flags & RSTRING_NOEMBED) ? ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.ary : ((struct RString*)((rb_array_const_ptr_transient(loc)[0])))->as.heap.ptr), ((int)rb_fix2int((VALUE)((rb_array_const_ptr_transient(loc)[1])))),
14093 "The called method is defined here");
14094 }
14095 }
14096 }
14097 static int
14098 setup_parameters_complex(rb_execution_context_t * const ec, const rb_iseq_t * const iseq,
14099 struct rb_calling_info *const calling,
14100 const struct rb_call_info *ci,
14101 VALUE * const locals, const enum arg_setup_type arg_setup_type)
14102 {
14103 const int min_argc = iseq->body->param.lead_num + iseq->body->param.post_num;
14104 const int max_argc = (iseq->body->param.flags.has_rest == 0) ? min_argc + iseq->body->param.opt_num : (-1);
14105 int opt_pc = 0;
14106 int given_argc;
14107 int kw_splat = 0;
14108 unsigned int kw_flag = ci->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit));
14109 struct args_info args_body, *args;
14110 VALUE keyword_hash = ((VALUE)RUBY_Qnil);
14111 VALUE * const orig_sp = ec->cfp->sp;
14112 unsigned int i;
14113 int remove_empty_keyword_hash = 1;
14114 VALUE flag_keyword_hash = 0;
14115 ;
14116 for (i=calling->argc; i<iseq->body->param.size; i++) {
14117 locals[i] = ((VALUE)RUBY_Qnil);
14118 }
14119 ec->cfp->sp = &locals[i];
14120 args = &args_body;
14121 given_argc = args->argc = calling->argc;
14122 args->argv = locals;
14123 args->rest_dupped = 0;
14124 if (kw_flag & (0x01 << VM_CALL_KWARG_bit)) {
14125 args->kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
14126 if (iseq->body->param.flags.has_kw) {
14127 int kw_len = args->kw_arg->keyword_len;
14128 args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len)), _Alignof(VALUE) * 8);
14129 args->argc -= kw_len;
14130 given_argc -= kw_len;
14131 ((__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)));
14132 }
14133 else {
14134 args->kw_argv = ((void *)0);
14135 given_argc = args_kw_argv_to_hash(args);
14136 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
14137 }
14138 }
14139 else {
14140 args->kw_arg = ((void *)0);
14141 args->kw_argv = ((void *)0);
14142 }
14143 if (kw_flag && iseq->body->param.flags.ruby2_keywords) {
14144 remove_empty_keyword_hash = 0;
14145 }
14146 if (ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) {
14147 VALUE rest_last = 0;
14148 int len;
14149 args->rest = locals[--args->argc];
14150 args->rest_index = 0;
14151 len = rb_long2int_inline(rb_array_len(args->rest));
14152 given_argc += len - 1;
14153 rest_last = (rb_array_const_ptr_transient(args->rest)[len - 1]);
14154 if (!kw_flag && len > 0) {
14155 if (( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(rest_last))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((rest_last) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((rest_last) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((rest_last) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((rest_last) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(rest_last)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(rest_last))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(rest_last) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(rest_last) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(rest_last))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
14156 (((struct RHash *)rest_last)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
14157 rest_last = rb_hash_dup(rest_last);
14158 kw_flag |= (0x01 << VM_CALL_KW_SPLAT_bit);
14159 if (iseq->body->param.flags.ruby2_keywords) {
14160 remove_empty_keyword_hash = 0;
14161 }
14162 }
14163 else {
14164 rest_last = 0;
14165 }
14166 }
14167 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14168 if (len > 0 && ignore_keyword_hash_p(rest_last, iseq)) {
14169 if (given_argc != min_argc) {
14170 if (remove_empty_keyword_hash) {
14171 arg_rest_dup(args);
14172 rb_ary_pop(args->rest);
14173 given_argc--;
14174 kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
14175 }
14176 else {
14177 flag_keyword_hash = rest_last;
14178 }
14179 }
14180 else {
14181 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14182 }
14183 }
14184 else if (!remove_empty_keyword_hash && rest_last) {
14185 flag_keyword_hash = rest_last;
14186 }
14187 }
14188 }
14189 else {
14190 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14191 VALUE last_arg = args->argv[args->argc-1];
14192 if (ignore_keyword_hash_p(last_arg, iseq)) {
14193 if (given_argc != min_argc) {
14194 if (remove_empty_keyword_hash) {
14195 args->argc--;
14196 given_argc--;
14197 kw_flag &= ~(0x01 << VM_CALL_KW_SPLAT_bit);
14198 }
14199 else {
14200 flag_keyword_hash = last_arg;
14201 }
14202 }
14203 else {
14204 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14205 }
14206 }
14207 else if (!remove_empty_keyword_hash) {
14208 flag_keyword_hash = args->argv[args->argc-1];
14209 }
14210 }
14211 args->rest = ((VALUE)RUBY_Qfalse);
14212 }
14213 if (flag_keyword_hash && ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)(flag_keyword_hash))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? ((flag_keyword_hash) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)(flag_keyword_hash)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)(flag_keyword_hash))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(flag_keyword_hash) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(flag_keyword_hash) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(flag_keyword_hash))->flags & RUBY_T_MASK) == (RUBY_T_HASH)))) {
14214 ((struct RHash *)flag_keyword_hash)->basic.flags |= RHASH_PASS_AS_KEYWORDS;
14215 }
14216 if (kw_flag && iseq->body->param.flags.accepts_no_kwarg) {
14217 rb_raise(rb_eArgError, "no keywords accepted");
14218 }
14219 switch (arg_setup_type) {
14220 case arg_setup_method:
14221 break;
14222 case arg_setup_block:
14223 if (given_argc == 1 &&
14224 (min_argc > 0 || iseq->body->param.opt_num > 1 ||
14225 iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest) &&
14226 !iseq->body->param.flags.ambiguous_param0 &&
14227 args_check_block_arg0(args)) {
14228 given_argc = rb_long2int_inline(rb_array_len(args->rest));
14229 }
14230 break;
14231 }
14232 if (given_argc < min_argc) {
14233 if (given_argc == min_argc - 1 && args->kw_argv) {
14234 args_stored_kw_argv_to_hash(args);
14235 given_argc = args_argc(args);
14236 }
14237 else {
14238 if (arg_setup_type == arg_setup_block) {
14239 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();
14240 given_argc = min_argc;
14241 args_extend(args, min_argc);
14242 }
14243 else {
14244 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
14245 }
14246 }
14247 }
14248 if (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) {
14249 kw_splat = !iseq->body->param.flags.has_rest;
14250 }
14251 if ((iseq->body->param.flags.has_kw || iseq->body->param.flags.has_kwrest ||
14252 (kw_splat && given_argc > max_argc)) &&
14253 args->kw_argv == ((void *)0)) {
14254 if (given_argc > min_argc) {
14255 if (kw_flag) {
14256 int check_only_symbol = (kw_flag & (0x01 << VM_CALL_KW_SPLAT_bit)) &&
14257 iseq->body->param.flags.has_kw &&
14258 !iseq->body->param.flags.has_kwrest;
14259 if (args_pop_keyword_hash(args, &keyword_hash, check_only_symbol)) {
14260 given_argc--;
14261 }
14262 else if (check_only_symbol) {
14263 if (keyword_hash != ((VALUE)RUBY_Qnil)) {
14264 rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
14265 }
14266 else {
14267 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14268 }
14269 }
14270 }
14271 else if (args_pop_keyword_hash(args, &keyword_hash, 1)) {
14272 rb_warn_last_hash_to_keyword(ec, calling, ci, iseq);
14273 given_argc--;
14274 }
14275 else if (keyword_hash != ((VALUE)RUBY_Qnil)) {
14276 rb_warn_split_last_hash_to_keyword(ec, calling, ci, iseq);
14277 }
14278 }
14279 else if (given_argc == min_argc && kw_flag) {
14280 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
14281 }
14282 }
14283 if (given_argc > max_argc && max_argc != (-1)) {
14284 if (arg_setup_type == arg_setup_block) {
14285 args_reduce(args, given_argc - max_argc);
14286 given_argc = max_argc;
14287 }
14288 else {
14289 argument_arity_error(ec, iseq, given_argc, min_argc, max_argc);
14290 }
14291 }
14292 if (iseq->body->param.flags.has_lead) {
14293 args_setup_lead_parameters(args, iseq->body->param.lead_num, locals + 0);
14294 }
14295 if (iseq->body->param.flags.has_rest || iseq->body->param.flags.has_post){
14296 args_copy(args);
14297 }
14298 if (iseq->body->param.flags.has_post) {
14299 args_setup_post_parameters(args, iseq->body->param.post_num, locals + iseq->body->param.post_start);
14300 }
14301 if (iseq->body->param.flags.has_opt) {
14302 int opt = args_setup_opt_parameters(args, iseq->body->param.opt_num, locals + iseq->body->param.lead_num);
14303 opt_pc = (int)iseq->body->param.opt_table[opt];
14304 }
14305 if (iseq->body->param.flags.has_rest) {
14306 args_setup_rest_parameter(args, locals + iseq->body->param.rest_start);
14307 }
14308 if (iseq->body->param.flags.has_kw) {
14309 VALUE * const klocals = locals + iseq->body->param.keyword->bits_start - iseq->body->param.keyword->num;
14310 if (args->kw_argv != ((void *)0)) {
14311 const struct rb_call_info_kw_arg *kw_arg = args->kw_arg;
14312 args_setup_kw_parameters(ec, iseq, args->kw_argv, kw_arg->keyword_len, kw_arg->keywords, klocals);
14313 }
14314 else if (!!((VALUE)(keyword_hash) != ((VALUE)RUBY_Qnil))) {
14315 int kw_len = rb_long2int_inline(((!(((struct RBasic*)((keyword_hash)))->flags&(RHASH_ST_TABLE_FLAG))) ? ((unsigned int)((((struct RBasic*)(keyword_hash))->flags & (VALUE)RHASH_AR_TABLE_SIZE_MASK) >> RHASH_AR_TABLE_SIZE_SHIFT)) : ((((struct RHash*)(keyword_hash))->as.st)->num_entries)));
14316 struct fill_values_arg arg;
14317 arg.keys = args->kw_argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(kw_len * 2)), _Alignof(VALUE) * 8);
14318 arg.vals = arg.keys + kw_len;
14319 arg.argc = 0;
14320 rb_hash_foreach(keyword_hash, fill_keys_values, (VALUE)&arg);
14321 ((void)0);
14322 args_setup_kw_parameters(ec, iseq, arg.vals, kw_len, arg.keys, klocals);
14323 }
14324 else {
14325 ((void)0);
14326 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
14327 }
14328 }
14329 else if (iseq->body->param.flags.has_kwrest) {
14330 args_setup_kw_rest_parameter(keyword_hash, locals + iseq->body->param.keyword->rest_start);
14331 }
14332 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) {
14333 argument_kw_error(ec, iseq, "unknown", rb_hash_keys(keyword_hash));
14334 }
14335 if (iseq->body->param.flags.has_block) {
14336 if (iseq->body->local_iseq == iseq) {
14337 }
14338 else {
14339 args_setup_block_parameter(ec, calling, locals + iseq->body->param.block_start);
14340 }
14341 }
14342 ec->cfp->sp = orig_sp;
14343 return opt_pc;
14344 }
14345 void rb_backtrace_use_iseq_first_lineno_for_last_location(VALUE self);
14346 static void
14347 raise_argument_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const VALUE exc)
14348 {
14349 VALUE at;
14350 if (iseq) {
14351 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_DUMMY | VM_ENV_FLAG_LOCAL, ((VALUE)RUBY_Qnil) ,
14352 0 , ((VALUE)RUBY_Qfalse) ,
14353 iseq->body->iseq_encoded,
14354 ec->cfp->sp, 0, 0 );
14355 at = rb_ec_backtrace_object(ec);
14356 rb_backtrace_use_iseq_first_lineno_for_last_location(at);
14357 rb_vm_pop_frame(ec);
14358 }
14359 else {
14360 at = rb_ec_backtrace_object(ec);
14361 }
14362 rb_ivar_set(exc, idBt_locations, at);
14363 rb_exc_set_backtrace(exc, at);
14364 rb_exc_raise(exc);
14365 }
14366 static void
14367 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)
14368 {
14369 VALUE exc = rb_arity_error_new(miss_argc, min_argc, max_argc);
14370 if (iseq->body->param.flags.has_kw) {
14371 const struct rb_iseq_param_keyword *const kw = iseq->body->param.keyword;
14372 const ID *keywords = kw->table;
14373 int req_key_num = kw->required_num;
14374 if (req_key_num > 0) {
14375 static const char required[] = "; required keywords";
14376 VALUE mesg = rb_attr_get(exc, idMesg);
14377 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);
14378 rb_str_cat(mesg, required, sizeof(required) - 1 - (req_key_num == 1));
14379 __extension__ ({ (__builtin_constant_p(":")) ? rb_str_cat((mesg), (":"), (long)strlen(":")) : rb_str_cat_cstr((mesg), (":")); });
14380 do {
14381 __extension__ ({ (__builtin_constant_p(" ")) ? rb_str_cat((mesg), (" "), (long)strlen(" ")) : rb_str_cat_cstr((mesg), (" ")); });
14382 rb_str_append(mesg, rb_id2str(*keywords++));
14383 __extension__ ({ (__builtin_constant_p(",")) ? rb_str_cat((mesg), (","), (long)strlen(",")) : rb_str_cat_cstr((mesg), (",")); });
14384 } while (--req_key_num);
14385 (!(((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] = ')';
14386 }
14387 }
14388 raise_argument_error(ec, iseq, exc);
14389 }
14390 static void
14391 argument_kw_error(rb_execution_context_t *ec, const rb_iseq_t *iseq, const char *error, const VALUE keys)
14392 {
14393 raise_argument_error(ec, iseq, rb_keyword_error_new(error, keys));
14394 }
14395 static inline void
14396 vm_caller_setup_arg_splat(rb_control_frame_t *cfp, struct rb_calling_info *calling)
14397 {
14398 int argc = calling->argc;
14399 VALUE *argv = cfp->sp - argc;
14400 VALUE ary = argv[argc-1];
14401 ;
14402 cfp->sp--;
14403 if (!!((VALUE)(ary) != ((VALUE)RUBY_Qnil))) {
14404 const VALUE *ptr = rb_array_const_ptr_transient(ary);
14405 long len = rb_array_len(ary), i;
14406 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();
14407 for (i = 0; i < len; i++) {
14408 *cfp->sp++ = ptr[i];
14409 }
14410 calling->argc += i - 1;
14411 }
14412 }
14413 static inline void
14414 vm_caller_setup_arg_kw(rb_control_frame_t *cfp, struct rb_calling_info *calling, const struct rb_call_info *ci)
14415 {
14416 struct rb_call_info_with_kwarg *ci_kw = (struct rb_call_info_with_kwarg *)ci;
14417 const VALUE *const passed_keywords = ci_kw->kw_arg->keywords;
14418 const int kw_len = ci_kw->kw_arg->keyword_len;
14419 const VALUE h = rb_hash_new_with_size(kw_len);
14420 VALUE *sp = cfp->sp;
14421 int i;
14422 for (i=0; i<kw_len; i++) {
14423 rb_hash_aset(h, passed_keywords[i], (sp - kw_len)[i]);
14424 }
14425 (sp-kw_len)[0] = h;
14426 cfp->sp -= kw_len - 1;
14427 calling->argc -= kw_len - 1;
14428 calling->kw_splat = 1;
14429 }
14430 static VALUE
14431 vm_to_proc(VALUE proc)
14432 {
14433 if ((__builtin_expect(!!(!rb_obj_is_proc(proc)), 0))) {
14434 VALUE b;
14435 const rb_callable_method_entry_t *me =
14436 rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(proc)), idTo_proc, ((void *)0));
14437 if (me) {
14438 b = rb_vm_call0(rb_current_execution_context(), proc, idTo_proc, 0, ((void *)0), me, 0);
14439 }
14440 else {
14441 b = rb_check_convert_type_with_id(proc, RUBY_T_DATA, "Proc", idTo_proc);
14442 }
14443 if (!((VALUE)(b) != ((VALUE)RUBY_Qnil)) || !rb_obj_is_proc(b)) {
14444 rb_raise(rb_eTypeError,
14445 "wrong argument type %s (expected Proc)",
14446 rb_obj_classname(proc));
14447 }
14448 return b;
14449 }
14450 else {
14451 return proc;
14452 }
14453 }
14454 static VALUE
14455 refine_sym_proc_call(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
14456 {
14457 VALUE obj;
14458 ID mid;
14459 const rb_callable_method_entry_t *me;
14460 rb_execution_context_t *ec;
14461 const VALUE symbol = (rb_array_const_ptr_transient(callback_arg)[0]);
14462 const VALUE refinements = (rb_array_const_ptr_transient(callback_arg)[1]);
14463 int kw_splat = 3;
14464 VALUE v;
14465 VALUE ret;
14466 VALUE klass;
14467 if (argc-- < 1) {
14468 rb_raise(rb_eArgError, "no receiver given");
14469 }
14470 obj = *argv++;
14471 mid = (rb_sym2id(symbol));
14472 for (klass = rb_class_of((VALUE)(obj)); klass; klass = RCLASS_SUPER(klass)) {
14473 me = rb_callable_method_entry(klass, mid);
14474 if (me) {
14475 me = rb_resolve_refined_method_callable(refinements, me);
14476 if (me) break;
14477 }
14478 }
14479 ec = rb_current_execution_context();
14480 if (!!((VALUE)(blockarg) != ((VALUE)RUBY_Qnil))) {
14481 vm_passed_block_handler_set(ec, blockarg);
14482 }
14483 v = rb_adjust_argv_kw_splat(&argc, &argv, &kw_splat);
14484 if (!me) {
14485 ret = method_missing(obj, mid, argc, argv, MISSING_NOENTRY, kw_splat);
14486 }
14487 else {
14488 ret = rb_vm_call0(ec, obj, mid, argc, argv, me, kw_splat);
14489 }
14490 rb_free_tmp_buffer(&v);
14491 return ret;
14492 }
14493 static VALUE
14494 vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
14495 const struct rb_call_info *ci, const rb_iseq_t *blockiseq, const int is_super)
14496 {
14497 if (ci->flag & (0x01 << VM_CALL_ARGS_BLOCKARG_bit)) {
14498 VALUE block_code = *(--reg_cfp->sp);
14499 if (!((VALUE)(block_code) != ((VALUE)RUBY_Qnil))) {
14500 return 0;
14501 }
14502 else if (block_code == rb_block_param_proxy) {
14503 ((void)0);
14504 VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp);
14505 reg_cfp->block_code = (const void *) handler;
14506 return handler;
14507 }
14508 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); })) {
14509 const rb_cref_t *cref = vm_env_cref(reg_cfp->ep);
14510 if (cref && !!((VALUE)(cref->refinements) != ((VALUE)RUBY_Qnil))) {
14511 VALUE ref = cref->refinements;
14512 VALUE func = rb_hash_lookup(ref, block_code);
14513 if (!((VALUE)(func) != ((VALUE)RUBY_Qnil))) {
14514 VALUE callback_arg = rb_ary_tmp_new(2);
14515 rb_ary_push(callback_arg, block_code);
14516 rb_ary_push(callback_arg, ref);
14517 (void)(((struct RBasic*)(callback_arg))->flags |= RUBY_FL_FREEZE);
14518 func = rb_func_proc_new(refine_sym_proc_call, callback_arg);
14519 rb_hash_aset(ref, block_code, func);
14520 }
14521 block_code = func;
14522 }
14523 return block_code;
14524 }
14525 else {
14526 return vm_to_proc(block_code);
14527 }
14528 }
14529 else if (blockiseq != ((void *)0)) {
14530 struct rb_captured_block *captured = VM_CFP_TO_CAPTURED_BLOCK(reg_cfp);
14531 captured->code.iseq = blockiseq;
14532 return VM_BH_FROM_ISEQ_BLOCK(captured);
14533 }
14534 else {
14535 if (is_super) {
14536 return ((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]);
14537 }
14538 else {
14539 return 0;
14540 }
14541 }
14542 }
14543 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);
14544 __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);
14545 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);
14546 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);
14547 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);
14548 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);
14549 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);
14550 static vm_call_handler vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size);
14551 static VALUE
14552 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)
14553 {
14554 ((void)0);
14555 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, 0);
14556 }
14557 static VALUE
14558 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)
14559 {
14560 ((void)0);
14561 struct rb_call_cache *cc = &cd->cc;
14562 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14563 int param = iseq->body->param.size;
14564 int local = iseq->body->local_table_size;
14565 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14566 }
14567 static _Bool
14568 rb_simple_iseq_p(const rb_iseq_t *iseq)
14569 {
14570 return iseq->body->param.flags.has_opt == 0 &&
14571 iseq->body->param.flags.has_rest == 0 &&
14572 iseq->body->param.flags.has_post == 0 &&
14573 iseq->body->param.flags.has_kw == 0 &&
14574 iseq->body->param.flags.has_kwrest == 0 &&
14575 iseq->body->param.flags.accepts_no_kwarg == 0 &&
14576 iseq->body->param.flags.has_block == 0;
14577 }
14578 static _Bool
14579 rb_iseq_only_optparam_p(const rb_iseq_t *iseq)
14580 {
14581 return iseq->body->param.flags.has_opt == 1 &&
14582 iseq->body->param.flags.has_rest == 0 &&
14583 iseq->body->param.flags.has_post == 0 &&
14584 iseq->body->param.flags.has_kw == 0 &&
14585 iseq->body->param.flags.has_kwrest == 0 &&
14586 iseq->body->param.flags.accepts_no_kwarg == 0 &&
14587 iseq->body->param.flags.has_block == 0;
14588 }
14589 static _Bool
14590 rb_iseq_only_kwparam_p(const rb_iseq_t *iseq)
14591 {
14592 return iseq->body->param.flags.has_opt == 0 &&
14593 iseq->body->param.flags.has_rest == 0 &&
14594 iseq->body->param.flags.has_post == 0 &&
14595 iseq->body->param.flags.has_kw == 1 &&
14596 iseq->body->param.flags.has_kwrest == 0 &&
14597 iseq->body->param.flags.has_block == 0;
14598 }
14599 static inline void
14600 CALLER_SETUP_ARG(struct rb_control_frame_struct *restrict cfp,
14601 struct rb_calling_info *restrict calling,
14602 const struct rb_call_info *restrict ci)
14603 {
14604 if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))), 0))) {
14605 VALUE final_hash;
14606 vm_caller_setup_arg_splat(cfp, calling);
14607 if (!((ci)->flag & ((0x01 << VM_CALL_KWARG_bit) | (0x01 << VM_CALL_KW_SPLAT_bit))) &&
14608 calling->argc > 0 &&
14609 ( ((RUBY_T_HASH) == RUBY_T_FIXNUM) ? (((int)(long)((final_hash = *(cfp->sp - 1))))&RUBY_FIXNUM_FLAG) : ((RUBY_T_HASH) == RUBY_T_TRUE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_HASH) == RUBY_T_FALSE) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_HASH) == RUBY_T_NIL) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_HASH) == RUBY_T_UNDEF) ? (((final_hash = *(cfp->sp - 1))) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_HASH) == RUBY_T_SYMBOL) ? ((((VALUE)((final_hash = *(cfp->sp - 1)))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_HASH) == RUBY_T_FLOAT) ? ( ((((int)(long)((final_hash = *(cfp->sp - 1))))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((final_hash = *(cfp->sp - 1))) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((final_hash = *(cfp->sp - 1))) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((final_hash = *(cfp->sp - 1))))->flags & RUBY_T_MASK) == (RUBY_T_HASH))) &&
14610 (((struct RHash *)final_hash)->basic.flags & RHASH_PASS_AS_KEYWORDS)) {
14611 *(cfp->sp - 1) = rb_hash_dup(final_hash);
14612 calling->kw_splat = 1;
14613 }
14614 }
14615 if ((__builtin_expect(!!(((ci)->flag & (0x01 << VM_CALL_KWARG_bit))), 0))) {
14616 vm_caller_setup_arg_kw(cfp, calling, ci);
14617 }
14618 }
14619 static inline void
14620 CALLER_REMOVE_EMPTY_KW_SPLAT(struct rb_control_frame_struct *restrict cfp,
14621 struct rb_calling_info *restrict calling,
14622 const struct rb_call_info *restrict ci)
14623 {
14624 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
14625 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)) {
14626 cfp->sp--;
14627 calling->argc--;
14628 calling->kw_splat = 0;
14629 }
14630 }
14631 }
14632 #define USE_OPT_HIST 0
14633 static VALUE
14634 vm_call_iseq_setup_normal_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14635 struct rb_calling_info *calling,
14636 struct rb_call_data *cd)
14637 {
14638 const struct rb_call_cache *cc = &cd->cc;
14639 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14640 const int lead_num = iseq->body->param.lead_num;
14641 const int opt = calling->argc - lead_num;
14642 const int opt_num = iseq->body->param.opt_num;
14643 const int opt_pc = (int)iseq->body->param.opt_table[opt];
14644 const int param = iseq->body->param.size;
14645 const int local = iseq->body->local_table_size;
14646 const int delta = opt_num - opt;
14647 ((void)0);
14648 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param - delta, local);
14649 }
14650 static VALUE
14651 vm_call_iseq_setup_tailcall_opt_start(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14652 struct rb_calling_info *calling,
14653 struct rb_call_data *cd)
14654 {
14655 const struct rb_call_cache *cc = &cd->cc;
14656 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14657 const int lead_num = iseq->body->param.lead_num;
14658 const int opt = calling->argc - lead_num;
14659 const int opt_pc = (int)iseq->body->param.opt_table[opt];
14660 ((void)0);
14661 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
14662 }
14663 static void
14664 args_setup_kw_parameters(rb_execution_context_t *const ec, const rb_iseq_t *const iseq,
14665 VALUE *const passed_values, const int passed_keyword_len, const VALUE *const passed_keywords,
14666 VALUE *const locals);
14667 static VALUE
14668 vm_call_iseq_setup_kwparm_kwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14669 struct rb_calling_info *calling,
14670 struct rb_call_data *cd)
14671 {
14672 const struct rb_kwarg_call_data *kcd = (void *)cd;
14673 const struct rb_call_info_with_kwarg *ci_kw = &kcd->ci_kw;
14674 const struct rb_call_cache *cc = &kcd->cc;
14675 ((void)0);
14676 ((void)0);
14677 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14678 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14679 const struct rb_call_info_kw_arg *kw_arg = ci_kw->kw_arg;
14680 const int ci_kw_len = kw_arg->keyword_len;
14681 const VALUE * const ci_keywords = kw_arg->keywords;
14682 VALUE *argv = cfp->sp - calling->argc;
14683 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
14684 const int lead_num = iseq->body->param.lead_num;
14685 VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
14686 ((__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)));
14687 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14688 int param = iseq->body->param.size;
14689 int local = iseq->body->local_table_size;
14690 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14691 }
14692 static VALUE
14693 vm_call_iseq_setup_kwparm_nokwarg(rb_execution_context_t *ec, rb_control_frame_t *cfp,
14694 struct rb_calling_info *calling,
14695 struct rb_call_data *cd)
14696 {
14697 const struct rb_call_info *__attribute__ ((__unused__)) ci = &cd->ci;
14698 const struct rb_call_cache *cc = &cd->cc;
14699 ((void)0);
14700 ((void)0);
14701 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14702 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14703 VALUE * const argv = cfp->sp - calling->argc;
14704 VALUE * const klocals = argv + kw_param->bits_start - kw_param->num;
14705 int i;
14706 for (i=0; i<kw_param->num; i++) {
14707 klocals[i] = kw_param->default_values[i];
14708 }
14709 klocals[i] = (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
14710 int param = iseq->body->param.size;
14711 int local = iseq->body->local_table_size;
14712 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, 0, param, local);
14713 }
14714 static inline int
14715 vm_callee_setup_arg(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd,
14716 const rb_iseq_t *iseq, VALUE *argv, int param_size, int local_size)
14717 {
14718 const struct rb_call_info *ci = &cd->ci;
14719 struct rb_call_cache *cc = &cd->cc;
14720 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_KW_SPLAT_bit))), 1))) {
14721 if ((__builtin_expect(!!(rb_simple_iseq_p(iseq)), 1))) {
14722 rb_control_frame_t *cfp = ec->cfp;
14723 CALLER_SETUP_ARG(cfp, calling, ci);
14724 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
14725 if (calling->argc != iseq->body->param.lead_num) {
14726 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
14727 }
14728 CC_SET_FASTPATH(cc, vm_call_iseq_setup_func(ci, param_size, local_size), vm_call_iseq_optimizable_p(&cd->ci, &cd->cc));
14729 return 0;
14730 }
14731 else if (rb_iseq_only_optparam_p(iseq)) {
14732 rb_control_frame_t *cfp = ec->cfp;
14733 CALLER_SETUP_ARG(cfp, calling, ci);
14734 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
14735 const int lead_num = iseq->body->param.lead_num;
14736 const int opt_num = iseq->body->param.opt_num;
14737 const int argc = calling->argc;
14738 const int opt = argc - lead_num;
14739 if (opt < 0 || opt > opt_num) {
14740 argument_arity_error(ec, iseq, argc, lead_num, lead_num + opt_num);
14741 }
14742 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
14743 CC_SET_FASTPATH(cc, vm_call_iseq_setup_normal_opt_start,
14744 !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
14745 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14746 }
14747 else {
14748 CC_SET_FASTPATH(cc, vm_call_iseq_setup_tailcall_opt_start,
14749 !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) && !((ci)->flag & (0x01 << VM_CALL_KWARG_bit)) &&
14750 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14751 }
14752 ((void)0);
14753 for (int i=argc; i<lead_num + opt_num; i++) {
14754 argv[i] = ((VALUE)RUBY_Qnil);
14755 }
14756 return (int)iseq->body->param.opt_table[opt];
14757 }
14758 else if (rb_iseq_only_kwparam_p(iseq) && !((ci)->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit))) {
14759 const int lead_num = iseq->body->param.lead_num;
14760 const int argc = calling->argc;
14761 const struct rb_iseq_param_keyword *kw_param = iseq->body->param.keyword;
14762 if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
14763 const struct rb_call_info_kw_arg *kw_arg = ((struct rb_call_info_with_kwarg *)ci)->kw_arg;
14764 if (argc - kw_arg->keyword_len == lead_num) {
14765 const int ci_kw_len = kw_arg->keyword_len;
14766 const VALUE * const ci_keywords = kw_arg->keywords;
14767 VALUE * const ci_kws = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(ci_kw_len)), _Alignof(VALUE) * 8);
14768 ((__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)));
14769 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
14770 args_setup_kw_parameters(ec, iseq, ci_kws, ci_kw_len, ci_keywords, klocals);
14771 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_kwarg,
14772 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14773 return 0;
14774 }
14775 }
14776 else if (argc == lead_num) {
14777 VALUE *const klocals = argv + kw_param->bits_start - kw_param->num;
14778 args_setup_kw_parameters(ec, iseq, ((void *)0), 0, ((void *)0), klocals);
14779 if (klocals[kw_param->num] == (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG)) {
14780 CC_SET_FASTPATH(cc, vm_call_iseq_setup_kwparm_nokwarg,
14781 !((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0)) == METHOD_VISI_PROTECTED));
14782 }
14783 return 0;
14784 }
14785 }
14786 }
14787 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_method);
14788 }
14789 static VALUE
14790 vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
14791 {
14792 ((void)0);
14793 const struct rb_call_cache *cc = &cd->cc;
14794 const rb_iseq_t *iseq = def_iseq_ptr(cc->me->def);
14795 const int param_size = iseq->body->param.size;
14796 const int local_size = iseq->body->local_table_size;
14797 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);
14798 return vm_call_iseq_setup_2(ec, cfp, calling, cd, opt_pc, param_size, local_size);
14799 }
14800 static inline VALUE
14801 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,
14802 int opt_pc, int param_size, int local_size)
14803 {
14804 const struct rb_call_info *ci = &cd->ci;
14805 const struct rb_call_cache *cc = &cd->cc;
14806 if ((__builtin_expect(!!(!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit))), 1))) {
14807 return vm_call_iseq_setup_normal(ec, cfp, calling, cc->me, opt_pc, param_size, local_size);
14808 }
14809 else {
14810 return vm_call_iseq_setup_tailcall(ec, cfp, calling, cd, opt_pc);
14811 }
14812 }
14813 static inline VALUE
14814 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,
14815 int opt_pc, int param_size, int local_size)
14816 {
14817 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
14818 VALUE *argv = cfp->sp - calling->argc;
14819 VALUE *sp = argv + param_size;
14820 cfp->sp = argv - 1 ;
14821 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL, calling->recv,
14822 calling->block_handler, (VALUE)me,
14823 iseq->body->iseq_encoded + opt_pc, sp,
14824 local_size - param_size,
14825 iseq->body->stack_max);
14826 return ((VALUE)RUBY_Qundef);
14827 }
14828 static inline VALUE
14829 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,
14830 int opt_pc)
14831 {
14832 const struct rb_call_cache *cc = &cd->cc;
14833 unsigned int i;
14834 VALUE *argv = cfp->sp - calling->argc;
14835 const rb_callable_method_entry_t *me = cc->me;
14836 const rb_iseq_t *iseq = def_iseq_ptr(me->def);
14837 VALUE *src_argv = argv;
14838 VALUE *sp_orig, *sp;
14839 VALUE finish_flag = VM_FRAME_FINISHED_P(cfp) ? VM_FRAME_FLAG_FINISH : 0;
14840 if (VM_BH_FROM_CFP_P(calling->block_handler, cfp)) {
14841 struct rb_captured_block *dst_captured = VM_CFP_TO_CAPTURED_BLOCK(((cfp)+1));
14842 const struct rb_captured_block *src_captured = VM_BH_TO_CAPT_BLOCK(calling->block_handler);
14843 dst_captured->code.val = src_captured->code.val;
14844 if (VM_BH_ISEQ_BLOCK_P(calling->block_handler)) {
14845 calling->block_handler = VM_BH_FROM_ISEQ_BLOCK(dst_captured);
14846 }
14847 else {
14848 calling->block_handler = VM_BH_FROM_IFUNC_BLOCK(dst_captured);
14849 }
14850 }
14851 vm_pop_frame(ec, cfp, cfp->ep);
14852 cfp = ec->cfp;
14853 sp_orig = sp = cfp->sp;
14854 sp[0] = calling->recv;
14855 sp++;
14856 for (i=0; i < iseq->body->param.size; i++) {
14857 *sp++ = src_argv[i];
14858 }
14859 vm_push_frame(ec, iseq, VM_FRAME_MAGIC_METHOD | VM_ENV_FLAG_LOCAL | finish_flag,
14860 calling->recv, calling->block_handler, (VALUE)me,
14861 iseq->body->iseq_encoded + opt_pc, sp,
14862 iseq->body->local_table_size - iseq->body->param.size,
14863 iseq->body->stack_max);
14864 cfp->sp = sp_orig;
14865 return ((VALUE)RUBY_Qundef);
14866 }
14867 static VALUE
14868 call_cfunc_m2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14869 {
14870 return (*func)(recv, rb_ary_new_from_values(argc, argv));
14871 }
14872 static VALUE
14873 call_cfunc_m1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14874 {
14875 return (*func)(argc, argv, recv);
14876 }
14877 static VALUE
14878 call_cfunc_0(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14879 {
14880 VALUE(*f)(VALUE) = (VALUE(*)(VALUE))func;
14881 return (*f)(recv);
14882 }
14883 static VALUE
14884 call_cfunc_1(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14885 {
14886 VALUE(*f)(VALUE, VALUE) = (VALUE(*)(VALUE, VALUE))func;
14887 return (*f)(recv, argv[0]);
14888 }
14889 static VALUE
14890 call_cfunc_2(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14891 {
14892 VALUE(*f)(VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE))func;
14893 return (*f)(recv, argv[0], argv[1]);
14894 }
14895 static VALUE
14896 call_cfunc_3(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14897 {
14898 VALUE(*f)(VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE))func;
14899 return (*f)(recv, argv[0], argv[1], argv[2]);
14900 }
14901 static VALUE
14902 call_cfunc_4(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14903 {
14904 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE))func;
14905 return (*f)(recv, argv[0], argv[1], argv[2], argv[3]);
14906 }
14907 static VALUE
14908 call_cfunc_5(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14909 {
14910 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14911 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4]);
14912 }
14913 static VALUE
14914 call_cfunc_6(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14915 {
14916 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14917 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
14918 }
14919 static VALUE
14920 call_cfunc_7(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14921 {
14922 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14923 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
14924 }
14925 static VALUE
14926 call_cfunc_8(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14927 {
14928 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14929 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
14930 }
14931 static VALUE
14932 call_cfunc_9(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14933 {
14934 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14935 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8]);
14936 }
14937 static VALUE
14938 call_cfunc_10(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14939 {
14940 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14941 return (*f)(recv, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7], argv[8], argv[9]);
14942 }
14943 static VALUE
14944 call_cfunc_11(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14945 {
14946 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14947 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]);
14948 }
14949 static VALUE
14950 call_cfunc_12(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14951 {
14952 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14953 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]);
14954 }
14955 static VALUE
14956 call_cfunc_13(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14957 {
14958 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14959 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]);
14960 }
14961 static VALUE
14962 call_cfunc_14(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14963 {
14964 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14965 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]);
14966 }
14967 static VALUE
14968 call_cfunc_15(VALUE recv, int argc, const VALUE *argv, VALUE (*func)())
14969 {
14970 VALUE(*f)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE) = (VALUE(*)(VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE, VALUE))func;
14971 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]);
14972 }
14973 static inline int
14974 vm_cfp_consistent_p(rb_execution_context_t *ec, const rb_control_frame_t *reg_cfp)
14975 {
14976 const int ov_flags = RAISED_STACKOVERFLOW;
14977 if ((__builtin_expect(!!(reg_cfp == ec->cfp + 1), 1))) return 1;
14978 if ((((ec)->raised_flag & (ov_flags)) != 0)) {
14979 ((ec)->raised_flag &= ~(ov_flags));
14980 return 1;
14981 }
14982 return 0;
14983 }
14984 #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)))
14985 static inline
14986 const rb_method_cfunc_t *
14987 vm_method_cfunc_entry(const rb_callable_method_entry_t *me)
14988 {
14989 return __extension__({
14990 #pragma GCC diagnostic push
14991 ;
14992 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
14993 ; typeof(&(me->def)->body.cfunc) unaligned_member_access_result = (&(me->def)->body.cfunc);
14994 #pragma GCC diagnostic pop
14995 ; unaligned_member_access_result; });
14996 }
14997 static VALUE
14998 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)
14999 {
15000 const struct rb_call_info *ci = &cd->ci;
15001 const struct rb_call_cache *cc = &cd->cc;
15002 VALUE val;
15003 const rb_callable_method_entry_t *me = cc->me;
15004 const rb_method_cfunc_t *cfunc = vm_method_cfunc_entry(me);
15005 int len = cfunc->argc;
15006 VALUE recv = calling->recv;
15007 VALUE block_handler = calling->block_handler;
15008 VALUE frame_type = VM_FRAME_MAGIC_CFUNC | VM_FRAME_FLAG_CFRAME | VM_ENV_FLAG_LOCAL;
15009 int argc = calling->argc;
15010 int orig_argc = argc;
15011 if ((__builtin_expect(!!(calling->kw_splat), 0))) {
15012 frame_type |= VM_FRAME_FLAG_CFRAME_KW;
15013 }
15014 else if ((__builtin_expect(!!(empty_kw_splat), 0))) {
15015 frame_type |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
15016 }
15017 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);
15018 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);
15019 vm_push_frame(ec, ((void *)0), frame_type, recv,
15020 block_handler, (VALUE)me,
15021 0, ec->cfp->sp, 0, 0);
15022 if (len >= 0) rb_check_arity(argc, len, len);
15023 reg_cfp->sp -= orig_argc + 1;
15024 val = (*cfunc->invoker)(recv, argc, reg_cfp->sp + 1, cfunc->func);
15025 ((__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)));
15026 rb_vm_pop_frame(ec);
15027 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);
15028 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);
15029 return val;
15030 }
15031 static VALUE
15032 vm_call_cfunc(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15033 {
15034 const struct rb_call_info *ci = &cd->ci;
15035 int empty_kw_splat;
15036 ((void)0);
15037 CALLER_SETUP_ARG(reg_cfp, calling, ci);
15038 empty_kw_splat = calling->kw_splat;
15039 CALLER_REMOVE_EMPTY_KW_SPLAT(reg_cfp, calling, ci);
15040 if (empty_kw_splat && calling->kw_splat) {
15041 empty_kw_splat = 0;
15042 }
15043 return vm_call_cfunc_with_frame(ec, reg_cfp, calling, cd, empty_kw_splat);
15044 }
15045 static VALUE
15046 vm_call_ivar(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15047 {
15048 struct rb_call_cache *cc = &cd->cc;
15049 ((void)0);
15050 cfp->sp -= 1;
15051 return vm_getivar(calling->recv, cc->me->def->body.attr.id, ((void *)0), cc, 1);
15052 }
15053 static VALUE
15054 vm_call_attrset(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15055 {
15056 struct rb_call_cache *cc = &cd->cc;
15057 ((void)0);
15058 VALUE val = *(cfp->sp - 1);
15059 cfp->sp -= 2;
15060 return vm_setivar(calling->recv, cc->me->def->body.attr.id, val, ((void *)0), cc, 1);
15061 }
15062 static inline VALUE
15063 vm_call_bmethod_body(rb_execution_context_t *ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv)
15064 {
15065 rb_proc_t *proc;
15066 VALUE val;
15067 const struct rb_call_cache *cc = &cd->cc;
15068 (((proc)) = (rb_proc_t*)(((struct RData*)(((cc->me->def->body.bmethod.proc))))->data));
15069 val = rb_vm_invoke_bmethod(ec, proc, calling->recv, calling->argc, argv, calling->kw_splat, calling->block_handler, cc->me);
15070 return val;
15071 }
15072 static VALUE
15073 vm_call_bmethod(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15074 {
15075 ((void)0);
15076 VALUE *argv;
15077 int argc;
15078 const struct rb_call_info *ci = &cd->ci;
15079 CALLER_SETUP_ARG(cfp, calling, ci);
15080 argc = calling->argc;
15081 argv = (VALUE*)__builtin_alloca_with_align((sizeof(VALUE)*(argc)), _Alignof(VALUE) * 8);
15082 ((__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)));
15083 cfp->sp += - argc - 1;
15084 return vm_call_bmethod_body(ec, calling, cd, argv);
15085 }
15086 static enum method_missing_reason
15087 ci_missing_reason(const struct rb_call_info *ci)
15088 {
15089 enum method_missing_reason stat = MISSING_NOENTRY;
15090 if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
15091 if (ci->flag & (0x01 << VM_CALL_FCALL_bit)) stat |= MISSING_FCALL;
15092 if (ci->flag & (0x01 << VM_CALL_SUPER_bit)) stat |= MISSING_SUPER;
15093 return stat;
15094 }
15095 static VALUE
15096 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)
15097 {
15098 ((void)0);
15099 int i;
15100 VALUE sym;
15101 const struct rb_call_info *orig_ci = &orig_cd->ci;
15102 const struct rb_call_cache *orig_cc = &orig_cd->cc;
15103 struct rb_call_info *ci;
15104 struct rb_call_cache *cc;
15105 struct rb_kwarg_call_data cd;
15106 CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
15107 i = calling->argc - 1;
15108 if (calling->argc == 0) {
15109 rb_raise(rb_eArgError, "no method name given");
15110 }
15111 if (orig_ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
15112 const struct rb_kwarg_call_data *orig_kcd = (void *)orig_cd;
15113 cd = *orig_kcd;
15114 }
15115 else {
15116 cd.ci_kw.ci = *orig_ci;
15117 cd.cc = *orig_cc;
15118 }
15119 ci = &cd.ci_kw.ci;
15120 cc = &cd.cc;
15121 sym = (*(((((reg_cfp)->sp)))-(i)-1));
15122 if (!(ci->mid = rb_check_id(&sym))) {
15123 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); })) {
15124 VALUE exc =
15125 rb_make_no_method_exception(rb_eNoMethodError, 0, calling->recv,
15126 rb_long2int_inline(calling->argc), &(*(((((reg_cfp)->sp)))-(i)-1)),
15127 ci->flag & ((0x01 << VM_CALL_FCALL_bit)|(0x01 << VM_CALL_VCALL_bit)));
15128 rb_exc_raise(exc);
15129 }
15130 (*(((((reg_cfp)->sp)))-(i)-1)) = rb_str_intern(sym);
15131 ci->mid = idMethodMissing;
15132 ec->method_missing_reason = cc->aux.method_missing_reason = ci_missing_reason(ci);
15133 }
15134 else {
15135 if (i > 0) {
15136 ((__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)));
15137 }
15138 calling->argc -= 1;
15139 (((reg_cfp)->sp) -= (((1))));
15140 }
15141 CC_SET_ME(cc, rb_callable_method_entry_with_refinements(rb_class_of((VALUE)(calling->recv)), ci->mid, ((void *)0)));
15142 ci->flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
15143 return vm_call_method(ec, reg_cfp, calling, (CALL_DATA)&cd);
15144 }
15145 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);
15146 __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);
15147 static VALUE
15148 vm_invoke_block_opt_call(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15149 struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
15150 {
15151 int argc = calling->argc;
15152 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)));
15153 (((reg_cfp)->sp) -= (((1))));
15154 return vm_invoke_block(ec, reg_cfp, calling, ci, block_handler);
15155 }
15156 static VALUE
15157 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)
15158 {
15159 ((void)0);
15160 const struct rb_call_info *ci = &cd->ci;
15161 VALUE procval = calling->recv;
15162 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, VM_BH_FROM_PROC(procval));
15163 }
15164 static VALUE
15165 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)
15166 {
15167 ((void)0);
15168 VALUE block_handler = VM_ENV_BLOCK_HANDLER(VM_CF_LEP(reg_cfp));
15169 const struct rb_call_info *ci = &cd->ci;
15170 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_CALL)]&((1 << 12))) == 0), 1)))) {
15171 return vm_invoke_block_opt_call(ec, reg_cfp, calling, ci, block_handler);
15172 }
15173 else {
15174 calling->recv = rb_vm_bh_to_procval(ec, block_handler);
15175 vm_search_method(cd, calling->recv);
15176 return vm_call_general(ec, reg_cfp, calling, cd);
15177 }
15178 }
15179 static VALUE
15180 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)
15181 {
15182 ((void)0);
15183 const struct rb_call_info *orig_ci = &orig_cd->ci;
15184 const struct rb_call_cache *orig_cc = &orig_cd->cc;
15185 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
15186 struct rb_call_data cd = *orig_cd;
15187 unsigned int argc;
15188 CALLER_SETUP_ARG(reg_cfp, calling, orig_ci);
15189 argc = calling->argc+1;
15190 cd.ci.flag = (0x01 << VM_CALL_FCALL_bit) | (0x01 << VM_CALL_OPT_SEND_bit) | (calling->kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0);
15191 cd.ci.mid = idMethodMissing;
15192 cd.ci.orig_argc = argc;
15193 cd.cc.me =
15194 rb_callable_method_entry_without_refinements(rb_class_of((VALUE)(calling->recv)),
15195 idMethodMissing, ((void *)0));
15196 calling->argc = argc;
15197 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();
15198 ;
15199 if (argc > 1) {
15200 ((__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)));
15201 }
15202 argv[0] = (rb_id2sym(orig_ci->mid));
15203 (((reg_cfp)->sp) += (((1))));
15204 ec->method_missing_reason = orig_cc->aux.method_missing_reason;
15205 return vm_call_method(ec, reg_cfp, calling, &cd);
15206 }
15207 static const rb_callable_method_entry_t *refined_method_callable_without_refinement(const rb_callable_method_entry_t *me);
15208 static VALUE
15209 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)
15210 {
15211 ((void)0);
15212 const struct rb_call_info *ci = &cd->ci;
15213 struct rb_call_cache *cc = &cd->cc;
15214 klass = RCLASS_SUPER(klass);
15215 CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, ci->mid) : ((void *)0));
15216 if (!cc->me) {
15217 return vm_call_method_nome(ec, cfp, calling, cd);
15218 }
15219 if (cc->me->def->type == VM_METHOD_TYPE_REFINED &&
15220 cc->me->def->body.refined.orig_me) {
15221 CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
15222 }
15223 return vm_call_method_each_type(ec, cfp, calling, cd);
15224 }
15225 static inline VALUE
15226 find_refinement(VALUE refinements, VALUE klass)
15227 {
15228 if (!((VALUE)(refinements) != ((VALUE)RUBY_Qnil))) {
15229 return ((VALUE)RUBY_Qnil);
15230 }
15231 return rb_hash_lookup(refinements, klass);
15232 }
15233 __attribute__ ((__pure__)) static rb_control_frame_t * current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp);
15234 static rb_control_frame_t *
15235 current_method_entry(const rb_execution_context_t *ec, rb_control_frame_t *cfp)
15236 {
15237 rb_control_frame_t *top_cfp = cfp;
15238 if (cfp->iseq && cfp->iseq->body->type == ISEQ_TYPE_BLOCK) {
15239 const rb_iseq_t *local_iseq = cfp->iseq->body->local_iseq;
15240 do {
15241 cfp = ((cfp)+1);
15242 if (RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
15243 return top_cfp;
15244 }
15245 } while (cfp->iseq != local_iseq);
15246 }
15247 return cfp;
15248 }
15249 static VALUE
15250 find_defined_class_by_owner(VALUE current_class, VALUE target_owner)
15251 {
15252 VALUE klass = current_class;
15253 if (( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) && ((!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) != RUBY_T_NODE)?(((struct RBasic*)((klass)))->flags&((((VALUE)RUBY_FL_USER5)))):0)) klass = (((struct RBasic*)(klass))->klass);
15254 while (!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
15255 VALUE owner = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ? (((struct RBasic*)(klass))->klass) : klass;
15256 if (owner == target_owner) {
15257 return klass;
15258 }
15259 klass = RCLASS_SUPER(klass);
15260 }
15261 return current_class;
15262 }
15263 static const rb_callable_method_entry_t *
15264 aliased_callable_method_entry(const rb_callable_method_entry_t *me)
15265 {
15266 const rb_method_entry_t *orig_me = me->def->body.alias.original_me;
15267 const rb_callable_method_entry_t *cme;
15268 if (orig_me->defined_class == 0) {
15269 VALUE defined_class = find_defined_class_by_owner(me->defined_class, orig_me->owner);
15270 ((void)0);
15271 cme = rb_method_entry_complement_defined_class(orig_me, me->called_id, defined_class);
15272 if (me->def->alias_count + me->def->complemented_count == 0) {
15273 __extension__({
15274 #pragma GCC diagnostic push
15275 ;
15276 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
15277 ; typeof(rb_obj_write((VALUE)(me), (VALUE *)(&me->def->body.alias.original_me), (VALUE)(cme), "../ruby-2.7.0/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.0/vm_insnhelper.c", 2828));
15278 #pragma GCC diagnostic pop
15279 ; unaligned_member_access_result; });
15280 }
15281 else {
15282 rb_method_definition_t *def =
15283 rb_method_definition_create(VM_METHOD_TYPE_ALIAS, me->def->original_id);
15284 rb_method_definition_set((rb_method_entry_t *)me, def, (void *)cme);
15285 }
15286 }
15287 else {
15288 cme = (const rb_callable_method_entry_t *)orig_me;
15289 }
15290 ((void)0);
15291 return cme;
15292 }
15293 static const rb_callable_method_entry_t *
15294 refined_method_callable_without_refinement(const rb_callable_method_entry_t *me)
15295 {
15296 const rb_method_entry_t *orig_me = me->def->body.refined.orig_me;
15297 const rb_callable_method_entry_t *cme;
15298 if (orig_me->defined_class == 0) {
15299 cme = ((void *)0);
15300 rb_notimplement();
15301 }
15302 else {
15303 cme = (const rb_callable_method_entry_t *)orig_me;
15304 }
15305 ((void)0);
15306 if ((!(cme) || !(cme)->def || (cme)->def->type == VM_METHOD_TYPE_UNDEF)) {
15307 cme = ((void *)0);
15308 }
15309 return cme;
15310 }
15311 static int
15312 search_refined_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, ID mid, struct rb_call_cache *cc)
15313 {
15314 const rb_cref_t *cref = vm_get_cref(cfp->ep);
15315 for (; cref; cref = CREF_NEXT(cref)) {
15316 const VALUE refinement = find_refinement(CREF_REFINEMENTS(cref), cc->me->owner);
15317 if (!((VALUE)(refinement) != ((VALUE)RUBY_Qnil))) continue;
15318 const rb_callable_method_entry_t *const ref_me =
15319 rb_callable_method_entry(refinement, mid);
15320 if (ref_me) {
15321 if (cc->call == vm_call_super_method) {
15322 const rb_control_frame_t *top_cfp = current_method_entry(ec, cfp);
15323 const rb_callable_method_entry_t *top_me = rb_vm_frame_method_entry(top_cfp);
15324 if (top_me && rb_method_definition_eq(ref_me->def, top_me->def)) {
15325 continue;
15326 }
15327 }
15328 if (cc->me->def->type != VM_METHOD_TYPE_REFINED ||
15329 cc->me->def != ref_me->def) {
15330 CC_SET_ME(cc, ref_me);
15331 }
15332 if (ref_me->def->type != VM_METHOD_TYPE_REFINED) {
15333 return 1;
15334 }
15335 }
15336 else {
15337 CC_SET_ME(cc, ((void *)0));
15338 return 0;
15339 }
15340 }
15341 if (cc->me->def->body.refined.orig_me) {
15342 CC_SET_ME(cc, refined_method_callable_without_refinement(cc->me));
15343 }
15344 else {
15345 VALUE klass = RCLASS_SUPER(cc->me->defined_class);
15346 CC_SET_ME(cc, klass ? rb_callable_method_entry(klass, mid) : ((void *)0));
15347 }
15348 return 1;
15349 }
15350 static VALUE
15351 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)
15352 {
15353 const struct rb_call_info *ci = &cd->ci;
15354 struct rb_call_cache *cc = &cd->cc;
15355 switch (cc->me->def->type) {
15356 case VM_METHOD_TYPE_ISEQ:
15357 CC_SET_FASTPATH(cc, vm_call_iseq_setup, 1);
15358 return vm_call_iseq_setup(ec, cfp, calling, cd);
15359 case VM_METHOD_TYPE_NOTIMPLEMENTED:
15360 case VM_METHOD_TYPE_CFUNC:
15361 CC_SET_FASTPATH(cc, vm_call_cfunc, 1);
15362 return vm_call_cfunc(ec, cfp, calling, cd);
15363 case VM_METHOD_TYPE_ATTRSET:
15364 CALLER_SETUP_ARG(cfp, calling, ci);
15365 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)) {
15366 rb_warn_keyword_to_last_hash(ec, calling, ci, ((void *)0));
15367 }
15368 else {
15369 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15370 }
15371 rb_check_arity(calling->argc, 1, 1);
15372 cc->aux.index = 0;
15373 CC_SET_FASTPATH(cc, vm_call_attrset, !((ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)) || (ci->flag & (0x01 << VM_CALL_KWARG_bit))));
15374 return vm_call_attrset(ec, cfp, calling, cd);
15375 case VM_METHOD_TYPE_IVAR:
15376 CALLER_SETUP_ARG(cfp, calling, ci);
15377 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15378 rb_check_arity(calling->argc, 0, 0);
15379 cc->aux.index = 0;
15380 CC_SET_FASTPATH(cc, vm_call_ivar, !(ci->flag & (0x01 << VM_CALL_ARGS_SPLAT_bit)));
15381 return vm_call_ivar(ec, cfp, calling, cd);
15382 case VM_METHOD_TYPE_MISSING:
15383 cc->aux.method_missing_reason = 0;
15384 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15385 return vm_call_method_missing(ec, cfp, calling, cd);
15386 case VM_METHOD_TYPE_BMETHOD:
15387 CC_SET_FASTPATH(cc, vm_call_bmethod, 1);
15388 return vm_call_bmethod(ec, cfp, calling, cd);
15389 case VM_METHOD_TYPE_ALIAS:
15390 CC_SET_ME(cc, aliased_callable_method_entry(cc->me));
15391 ((void)0);
15392 return vm_call_method_each_type(ec, cfp, calling, cd);
15393 case VM_METHOD_TYPE_OPTIMIZED:
15394 switch (cc->me->def->body.optimize_type) {
15395 case OPTIMIZED_METHOD_TYPE_SEND:
15396 CC_SET_FASTPATH(cc, vm_call_opt_send, 1);
15397 return vm_call_opt_send(ec, cfp, calling, cd);
15398 case OPTIMIZED_METHOD_TYPE_CALL:
15399 CC_SET_FASTPATH(cc, vm_call_opt_call, 1);
15400 return vm_call_opt_call(ec, cfp, calling, cd);
15401 case OPTIMIZED_METHOD_TYPE_BLOCK_CALL:
15402 CC_SET_FASTPATH(cc, vm_call_opt_block_call, 1);
15403 return vm_call_opt_block_call(ec, cfp, calling, cd);
15404 default:
15405 rb_bug("vm_call_method: unsupported optimized method type (%d)",
15406 cc->me->def->body.optimize_type);
15407 }
15408 case VM_METHOD_TYPE_UNDEF:
15409 break;
15410 case VM_METHOD_TYPE_ZSUPER:
15411 return vm_call_zsuper(ec, cfp, calling, cd, ((((struct RClass*)(cc->me->defined_class))->ptr)->origin_));
15412 case VM_METHOD_TYPE_REFINED:
15413 if (search_refined_method(ec, cfp, ci->mid, cc))
15414 return vm_call_method(ec, cfp, calling, cd);
15415 else
15416 return vm_call_method_nome(ec, cfp, calling, cd);
15417 }
15418 rb_bug("vm_call_method: unsupported method type (%d)", cc->me->def->type);
15419 }
15420 __attribute__ ((__noreturn__)) static void vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj, int call_status);
15421 static VALUE
15422 vm_call_method_nome(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15423 {
15424 const struct rb_call_info *ci = &cd->ci;
15425 struct rb_call_cache *cc = &cd->cc;
15426 const int stat = ci_missing_reason(ci);
15427 if (ci->mid == idMethodMissing) {
15428 rb_control_frame_t *reg_cfp = cfp;
15429 VALUE *argv = (((((reg_cfp)->sp)))-(calling->argc));
15430 vm_raise_method_missing(ec, calling->argc, argv, calling->recv, stat);
15431 }
15432 else {
15433 cc->aux.method_missing_reason = stat;
15434 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15435 return vm_call_method_missing(ec, cfp, calling, cd);
15436 }
15437 }
15438 static inline VALUE
15439 vm_call_method(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15440 {
15441 const struct rb_call_info *ci = &cd->ci;
15442 struct rb_call_cache *cc = &cd->cc;
15443 ((void)0);
15444 if (cc->me != ((void *)0)) {
15445 switch ((rb_method_visibility_t)(((cc->me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
15446 case METHOD_VISI_PUBLIC:
15447 return vm_call_method_each_type(ec, cfp, calling, cd);
15448 case METHOD_VISI_PRIVATE:
15449 if (!(ci->flag & (0x01 << VM_CALL_FCALL_bit))) {
15450 enum method_missing_reason stat = MISSING_PRIVATE;
15451 if (ci->flag & (0x01 << VM_CALL_VCALL_bit)) stat |= MISSING_VCALL;
15452 cc->aux.method_missing_reason = stat;
15453 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15454 return vm_call_method_missing(ec, cfp, calling, cd);
15455 }
15456 return vm_call_method_each_type(ec, cfp, calling, cd);
15457 case METHOD_VISI_PROTECTED:
15458 if (!(ci->flag & (0x01 << VM_CALL_OPT_SEND_bit))) {
15459 if (!rb_obj_is_kind_of(cfp->self, cc->me->defined_class)) {
15460 cc->aux.method_missing_reason = MISSING_PROTECTED;
15461 return vm_call_method_missing(ec, cfp, calling, cd);
15462 }
15463 else {
15464 ((void)0);
15465 if (ci->flag & (0x01 << VM_CALL_KWARG_bit)) {
15466 struct rb_kwarg_call_data *kcd = (void *)cd;
15467 struct rb_kwarg_call_data cd_entry = *kcd;
15468 return vm_call_method_each_type(ec, cfp, calling, (void *)&cd_entry);
15469 }
15470 else {
15471 struct rb_call_data cd_entry = *cd;
15472 return vm_call_method_each_type(ec, cfp, calling, &cd_entry);
15473 }
15474 }
15475 }
15476 return vm_call_method_each_type(ec, cfp, calling, cd);
15477 default:
15478 rb_bug("unreachable");
15479 }
15480 }
15481 else {
15482 return vm_call_method_nome(ec, cfp, calling, cd);
15483 }
15484 }
15485 static VALUE
15486 vm_call_general(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, struct rb_calling_info *calling, struct rb_call_data *cd)
15487 {
15488 ((void)0);
15489 return vm_call_method(ec, reg_cfp, calling, cd);
15490 }
15491 static VALUE
15492 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)
15493 {
15494 ((void)0);
15495 const struct rb_call_cache *cc = &cd->cc;
15496 if (cc->call != vm_call_super_method) rb_bug("bug");
15497 return vm_call_method(ec, reg_cfp, calling, cd);
15498 }
15499 static inline VALUE
15500 vm_search_normal_superclass(VALUE klass)
15501 {
15502 if ((int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_ICLASS &&
15503 ((!(((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)) {
15504 klass = ((struct RBasic*)(klass))->klass;
15505 }
15506 klass = ((((struct RClass*)(klass))->ptr)->origin_);
15507 return RCLASS_SUPER(klass);
15508 }
15509 __attribute__ ((__noreturn__)) static void vm_super_outside(void);
15510 static void
15511 vm_super_outside(void)
15512 {
15513 rb_raise(rb_eNoMethodError, "super called outside of method");
15514 }
15515 static void
15516 vm_search_super_method(const rb_control_frame_t *reg_cfp, struct rb_call_data *cd, VALUE recv)
15517 {
15518 VALUE current_defined_class, klass;
15519 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(reg_cfp);
15520 struct rb_call_info *ci = &cd->ci;
15521 struct rb_call_cache *cc = &cd->cc;
15522 if (!me) {
15523 vm_super_outside();
15524 }
15525 current_defined_class = me->defined_class;
15526 if (!!((VALUE)(((((struct RClass*)(current_defined_class))->ptr)->refined_class)) != ((VALUE)RUBY_Qnil))) {
15527 current_defined_class = ((((struct RClass*)(current_defined_class))->ptr)->refined_class);
15528 }
15529 if ((int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) != RUBY_T_MODULE &&
15530 !((!(((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) &&
15531 !rb_obj_is_kind_of(recv, current_defined_class)) {
15532 VALUE m = ( ((RUBY_T_ICLASS) == RUBY_T_FIXNUM) ? (((int)(long)(current_defined_class))&RUBY_FIXNUM_FLAG) : ((RUBY_T_ICLASS) == RUBY_T_TRUE) ? ((current_defined_class) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_ICLASS) == RUBY_T_FALSE) ? ((current_defined_class) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_ICLASS) == RUBY_T_NIL) ? ((current_defined_class) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_ICLASS) == RUBY_T_UNDEF) ? ((current_defined_class) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_ICLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(current_defined_class)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_ICLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(current_defined_class))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(current_defined_class) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(current_defined_class) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(current_defined_class))->flags & RUBY_T_MASK) == (RUBY_T_ICLASS))) ?
15533 ((((struct RClass*)(current_defined_class))->ptr)->includer) : current_defined_class;
15534 if (m) {
15535 rb_raise(rb_eTypeError,
15536 "self has wrong type to call super in this context: "
15537 "%""l""i" "\v"" (expected %""l""i" "\v"")",
15538 rb_obj_class(recv), m);
15539 }
15540 }
15541 if (me->def->type == VM_METHOD_TYPE_BMETHOD && (ci->flag & (0x01 << VM_CALL_ZSUPER_bit))) {
15542 rb_raise(rb_eRuntimeError,
15543 "implicit argument passing of super from method defined"
15544 " by define_method() is not supported."
15545 " Specify all arguments explicitly.");
15546 }
15547 ci->mid = me->def->original_id;
15548 klass = vm_search_normal_superclass(me->defined_class);
15549 if (!klass) {
15550 cc->aux.method_missing_reason = MISSING_SUPER;
15551 CC_SET_FASTPATH(cc, vm_call_method_missing, 1);
15552 }
15553 else {
15554 CC_SET_ME(cc, rb_callable_method_entry(klass, ci->mid));
15555 CC_SET_FASTPATH(cc, vm_call_super_method, 1);
15556 }
15557 }
15558 static inline int
15559 block_proc_is_lambda(const VALUE procval)
15560 {
15561 rb_proc_t *proc;
15562 if (procval) {
15563 (((proc)) = (rb_proc_t*)(((struct RData*)(((procval))))->data));
15564 return proc->is_lambda;
15565 }
15566 else {
15567 return 0;
15568 }
15569 }
15570 static VALUE
15571 vm_yield_with_cfunc(rb_execution_context_t *ec,
15572 const struct rb_captured_block *captured,
15573 VALUE self, int argc, const VALUE *argv, int kw_splat, VALUE block_handler,
15574 const rb_callable_method_entry_t *me)
15575 {
15576 int is_lambda = 0;
15577 VALUE val, arg, blockarg;
15578 int frame_flag;
15579 const struct vm_ifunc *ifunc = captured->code.ifunc;
15580 if (is_lambda) {
15581 arg = rb_ary_new_from_values(argc, argv);
15582 }
15583 else if (argc == 0) {
15584 arg = ((VALUE)RUBY_Qnil);
15585 }
15586 else {
15587 arg = argv[0];
15588 }
15589 blockarg = rb_vm_bh_to_procval(ec, block_handler);
15590 frame_flag = VM_FRAME_MAGIC_IFUNC | VM_FRAME_FLAG_CFRAME | (me ? VM_FRAME_FLAG_BMETHOD : 0);
15591 switch (kw_splat) {
15592 case 1:
15593 frame_flag |= VM_FRAME_FLAG_CFRAME_KW;
15594 break;
15595 case 2:
15596 frame_flag |= VM_FRAME_FLAG_CFRAME_EMPTY_KW;
15597 break;
15598 }
15599 vm_push_frame(ec, (const rb_iseq_t *)captured->code.ifunc,
15600 frame_flag,
15601 self,
15602 ((VALUE)((captured->ep)) | (0x01)),
15603 (VALUE)me,
15604 0, ec->cfp->sp, 0, 0);
15605 val = (*ifunc->func)(arg, (VALUE)ifunc->data, argc, argv, blockarg);
15606 rb_vm_pop_frame(ec);
15607 return val;
15608 }
15609 static VALUE
15610 vm_yield_with_symbol(rb_execution_context_t *ec, VALUE symbol, int argc, const VALUE *argv, int kw_splat, VALUE block_handler)
15611 {
15612 return rb_sym_proc_call((rb_sym2id(symbol)), argc, argv, kw_splat, rb_vm_bh_to_procval(ec, block_handler));
15613 }
15614 static inline int
15615 vm_callee_setup_block_arg_arg0_splat(rb_control_frame_t *cfp, const rb_iseq_t *iseq, VALUE *argv, VALUE ary)
15616 {
15617 int i;
15618 long len = rb_array_len(ary);
15619 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();
15620 for (i=0; i<len && i<iseq->body->param.lead_num; i++) {
15621 argv[i] = (rb_array_const_ptr_transient(ary)[i]);
15622 }
15623 return i;
15624 }
15625 static inline VALUE
15626 vm_callee_setup_block_arg_arg0_check(VALUE *argv)
15627 {
15628 VALUE ary, arg0 = argv[0];
15629 ary = rb_check_array_type(arg0);
15630 ((void)0);
15631 return ary;
15632 }
15633 static int
15634 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)
15635 {
15636 if (rb_simple_iseq_p(iseq)) {
15637 rb_control_frame_t *cfp = ec->cfp;
15638 VALUE arg0;
15639 CALLER_SETUP_ARG(cfp, calling, ci);
15640 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)) {
15641 rb_warn_keyword_to_last_hash(ec, calling, ci, iseq);
15642 }
15643 else {
15644 CALLER_REMOVE_EMPTY_KW_SPLAT(cfp, calling, ci);
15645 }
15646 if (arg_setup_type == arg_setup_block &&
15647 calling->argc == 1 &&
15648 iseq->body->param.flags.has_lead &&
15649 !iseq->body->param.flags.ambiguous_param0 &&
15650 !!((VALUE)(arg0 = vm_callee_setup_block_arg_arg0_check(argv)) != ((VALUE)RUBY_Qnil))) {
15651 calling->argc = vm_callee_setup_block_arg_arg0_splat(cfp, iseq, argv, arg0);
15652 }
15653 if (calling->argc != iseq->body->param.lead_num) {
15654 if (arg_setup_type == arg_setup_block) {
15655 if (calling->argc < iseq->body->param.lead_num) {
15656 int i;
15657 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();
15658 for (i=calling->argc; i<iseq->body->param.lead_num; i++) argv[i] = ((VALUE)RUBY_Qnil);
15659 calling->argc = iseq->body->param.lead_num;
15660 }
15661 else if (calling->argc > iseq->body->param.lead_num) {
15662 calling->argc = iseq->body->param.lead_num;
15663 }
15664 }
15665 else {
15666 argument_arity_error(ec, iseq, calling->argc, iseq->body->param.lead_num, iseq->body->param.lead_num);
15667 }
15668 }
15669 return 0;
15670 }
15671 else {
15672 return setup_parameters_complex(ec, iseq, calling, ci, argv, arg_setup_type);
15673 }
15674 }
15675 static int
15676 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)
15677 {
15678 struct rb_calling_info calling_entry, *calling;
15679 struct rb_call_info ci_entry, *ci;
15680 calling = &calling_entry;
15681 calling->argc = argc;
15682 calling->block_handler = block_handler;
15683 calling->kw_splat = kw_splat;
15684 calling->recv = ((VALUE)RUBY_Qundef);
15685 ci_entry.flag = kw_splat ? (0x01 << VM_CALL_KW_SPLAT_bit) : 0;
15686 ci = &ci_entry;
15687 return vm_callee_setup_block_arg(ec, calling, ci, iseq, argv, arg_setup_type);
15688 }
15689 static VALUE
15690 vm_invoke_iseq_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15691 struct rb_calling_info *calling, const struct rb_call_info *ci,
15692 int is_lambda, const struct rb_captured_block *captured)
15693 {
15694 const rb_iseq_t *iseq = rb_iseq_check(captured->code.iseq);
15695 const int arg_size = iseq->body->param.size;
15696 VALUE * const rsp = ((((reg_cfp)->sp))) - calling->argc;
15697 int opt_pc = vm_callee_setup_block_arg(ec, calling, ci, iseq, rsp, is_lambda ? arg_setup_method : arg_setup_block);
15698 (((reg_cfp)->sp) = (((rsp))));
15699 vm_push_frame(ec, iseq,
15700 VM_FRAME_MAGIC_BLOCK | (is_lambda ? VM_FRAME_FLAG_LAMBDA : 0),
15701 captured->self,
15702 ((VALUE)((captured->ep)) | (0x01)), 0,
15703 iseq->body->iseq_encoded + opt_pc,
15704 rsp + arg_size,
15705 iseq->body->local_table_size - arg_size, iseq->body->stack_max);
15706 return ((VALUE)RUBY_Qundef);
15707 }
15708 static VALUE
15709 vm_invoke_symbol_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15710 struct rb_calling_info *calling, const struct rb_call_info *ci,
15711 VALUE symbol)
15712 {
15713 VALUE val;
15714 int argc;
15715 CALLER_SETUP_ARG(ec->cfp, calling, ci);
15716 argc = calling->argc;
15717 val = vm_yield_with_symbol(ec, symbol, argc, (((((reg_cfp)->sp)))-(argc)), calling->kw_splat, calling->block_handler);
15718 ((((reg_cfp)->sp) -= (((argc)))));
15719 return val;
15720 }
15721 static VALUE
15722 vm_invoke_ifunc_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15723 struct rb_calling_info *calling, const struct rb_call_info *ci,
15724 const struct rb_captured_block *captured)
15725 {
15726 VALUE val;
15727 int argc;
15728 int kw_splat = calling->kw_splat;
15729 CALLER_SETUP_ARG(ec->cfp, calling, ci);
15730 CALLER_REMOVE_EMPTY_KW_SPLAT(ec->cfp, calling, ci);
15731 if (kw_splat && !calling->kw_splat) {
15732 kw_splat = 2;
15733 }
15734 else {
15735 kw_splat = calling->kw_splat;
15736 }
15737 argc = calling->argc;
15738 val = vm_yield_with_cfunc(ec, captured, captured->self, argc, (((((reg_cfp)->sp)))-(argc)), kw_splat, calling->block_handler, ((void *)0));
15739 ((((reg_cfp)->sp) -= (((argc)))));
15740 return val;
15741 }
15742 static VALUE
15743 vm_proc_to_block_handler(VALUE procval)
15744 {
15745 const struct rb_block *block = vm_proc_block(procval);
15746 switch (vm_block_type(block)) {
15747 case block_type_iseq:
15748 return VM_BH_FROM_ISEQ_BLOCK(&block->as.captured);
15749 case block_type_ifunc:
15750 return VM_BH_FROM_IFUNC_BLOCK(&block->as.captured);
15751 case block_type_symbol:
15752 return VM_BH_FROM_SYMBOL(block->as.symbol);
15753 case block_type_proc:
15754 return VM_BH_FROM_PROC(block->as.proc);
15755 }
15756 __builtin_unreachable();
15757 return ((VALUE)RUBY_Qundef);
15758 }
15759 static inline VALUE
15760 vm_invoke_block(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp,
15761 struct rb_calling_info *calling, const struct rb_call_info *ci, VALUE block_handler)
15762 {
15763 int is_lambda = 0;
15764 again:
15765 switch (vm_block_handler_type(block_handler)) {
15766 case block_handler_type_iseq:
15767 {
15768 const struct rb_captured_block *captured = VM_BH_TO_ISEQ_BLOCK(block_handler);
15769 return vm_invoke_iseq_block(ec, reg_cfp, calling, ci, is_lambda, captured);
15770 }
15771 case block_handler_type_ifunc:
15772 {
15773 const struct rb_captured_block *captured = VM_BH_TO_IFUNC_BLOCK(block_handler);
15774 return vm_invoke_ifunc_block(ec, reg_cfp, calling, ci, captured);
15775 }
15776 case block_handler_type_proc:
15777 is_lambda = block_proc_is_lambda(VM_BH_TO_PROC(block_handler));
15778 block_handler = vm_proc_to_block_handler(VM_BH_TO_PROC(block_handler));
15779 goto again;
15780 case block_handler_type_symbol:
15781 return vm_invoke_symbol_block(ec, reg_cfp, calling, ci, VM_BH_TO_SYMBOL(block_handler));
15782 }
15783 __builtin_unreachable();
15784 return ((VALUE)RUBY_Qnil);
15785 }
15786 static VALUE
15787 vm_make_proc_with_iseq(const rb_iseq_t *blockiseq)
15788 {
15789 const rb_execution_context_t *ec = rb_current_execution_context();
15790 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
15791 struct rb_captured_block *captured;
15792 if (cfp == 0) {
15793 rb_bug("vm_make_proc_with_iseq: unreachable");
15794 }
15795 captured = VM_CFP_TO_CAPTURED_BLOCK(cfp);
15796 captured->code.iseq = blockiseq;
15797 return rb_vm_make_proc(ec, captured, rb_cProc);
15798 }
15799 static VALUE
15800 vm_once_exec(VALUE iseq)
15801 {
15802 VALUE proc = vm_make_proc_with_iseq((rb_iseq_t *)iseq);
15803 return rb_proc_call_with_block(proc, 0, 0, ((VALUE)RUBY_Qnil));
15804 }
15805 static VALUE
15806 vm_once_clear(VALUE data)
15807 {
15808 union iseq_inline_storage_entry *is = (union iseq_inline_storage_entry *)data;
15809 is->once.running_thread = ((void *)0);
15810 return ((VALUE)RUBY_Qnil);
15811 }
15812 rb_control_frame_t *
15813 __attribute__ ((__fastcall__)) rb_vm_opt_struct_aref(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
15814 {
15815 (*(((((reg_cfp)->sp)))-(0)-1)) = rb_struct_aref((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)));
15816 return reg_cfp;
15817 }
15818 rb_control_frame_t *
15819 __attribute__ ((__fastcall__)) rb_vm_opt_struct_aset(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp)
15820 {
15821 rb_struct_aset((((((reg_cfp)))->self)), (*(((((reg_cfp)->sp)))-(0)-1)), (*(((((reg_cfp)->sp)))-(1)-1)));
15822 return reg_cfp;
15823 }
15824 static enum defined_type
15825 check_respond_to_missing(VALUE obj, VALUE v)
15826 {
15827 VALUE args[2];
15828 VALUE r;
15829 args[0] = obj; args[1] = ((VALUE)RUBY_Qfalse);
15830 r = rb_check_funcall(v, idRespond_to_missing, 2, args);
15831 if (r != ((VALUE)RUBY_Qundef) && !(((VALUE)(r) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
15832 return DEFINED_METHOD;
15833 }
15834 else {
15835 return DEFINED_NOT_DEFINED;
15836 }
15837 }
15838 static VALUE
15839 vm_defined(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, rb_num_t op_type, VALUE obj, VALUE needstr, VALUE v)
15840 {
15841 VALUE klass;
15842 enum defined_type expr_type = DEFINED_NOT_DEFINED;
15843 enum defined_type type = (enum defined_type)op_type;
15844 switch (type) {
15845 case DEFINED_IVAR:
15846 if (rb_ivar_defined((((((reg_cfp)))->self)), (rb_sym2id(obj)))) {
15847 expr_type = DEFINED_IVAR;
15848 }
15849 break;
15850 case DEFINED_IVAR2:
15851 klass = vm_get_cbase(((((reg_cfp)->ep))));
15852 break;
15853 case DEFINED_GVAR:
15854 if (rb_gvar_defined(rb_global_entry((rb_sym2id(obj))))) {
15855 expr_type = DEFINED_GVAR;
15856 }
15857 break;
15858 case DEFINED_CVAR: {
15859 const rb_cref_t *cref = vm_get_cref(((((reg_cfp)->ep))));
15860 klass = vm_get_cvar_base(cref, (((reg_cfp))));
15861 if (rb_cvar_defined(klass, (rb_sym2id(obj)))) {
15862 expr_type = DEFINED_CVAR;
15863 }
15864 break;
15865 }
15866 case DEFINED_CONST:
15867 case DEFINED_CONST_FROM: {
15868 _Bool allow_nil = type == DEFINED_CONST;
15869 klass = v;
15870 if (vm_get_ev_const(ec, klass, (rb_sym2id(obj)), allow_nil, 1)) {
15871 expr_type = DEFINED_CONST;
15872 }
15873 break;
15874 }
15875 case DEFINED_FUNC:
15876 klass = rb_class_of((VALUE)(v));
15877 if (rb_method_boundp(klass, (rb_sym2id(obj)), 0)) {
15878 expr_type = DEFINED_METHOD;
15879 }
15880 else {
15881 expr_type = check_respond_to_missing(obj, v);
15882 }
15883 break;
15884 case DEFINED_METHOD:{
15885 VALUE klass = rb_class_of((VALUE)(v));
15886 const rb_method_entry_t *me = rb_method_entry(klass, (rb_sym2id(obj)));
15887 if (me) {
15888 switch ((rb_method_visibility_t)(((me)->flags & (((VALUE)RUBY_FL_USER4) | ((VALUE)RUBY_FL_USER5))) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+0))) {
15889 case METHOD_VISI_PRIVATE:
15890 break;
15891 case METHOD_VISI_PROTECTED:
15892 if (!rb_obj_is_kind_of((((((reg_cfp)))->self)), rb_class_real(klass))) {
15893 break;
15894 }
15895 case METHOD_VISI_PUBLIC:
15896 expr_type = DEFINED_METHOD;
15897 break;
15898 default:
15899 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)));
15900 }
15901 }
15902 else {
15903 expr_type = check_respond_to_missing(obj, v);
15904 }
15905 break;
15906 }
15907 case DEFINED_YIELD:
15908 if (((VM_EP_LEP(((((reg_cfp)->ep)))))[(-1)]) != 0) {
15909 expr_type = DEFINED_YIELD;
15910 }
15911 break;
15912 case DEFINED_ZSUPER:
15913 {
15914 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry((((reg_cfp))));
15915 if (me) {
15916 VALUE klass = vm_search_normal_superclass(me->defined_class);
15917 ID id = me->def->original_id;
15918 if (rb_method_boundp(klass, id, 0)) {
15919 expr_type = DEFINED_ZSUPER;
15920 }
15921 }
15922 }
15923 break;
15924 case DEFINED_REF:{
15925 if (vm_getspecial(ec, (VM_EP_LEP(((((reg_cfp)->ep))))), ((VALUE)RUBY_Qfalse), ((int)rb_fix2int((VALUE)(obj)))) != ((VALUE)RUBY_Qnil)) {
15926 expr_type = DEFINED_GVAR;
15927 }
15928 break;
15929 }
15930 default:
15931 rb_bug("unimplemented defined? type (VM)");
15932 break;
15933 }
15934 if (expr_type != 0) {
15935 if (needstr != ((VALUE)RUBY_Qfalse)) {
15936 return rb_iseq_defined_string(expr_type);
15937 }
15938 else {
15939 return ((VALUE)RUBY_Qtrue);
15940 }
15941 }
15942 else {
15943 return ((VALUE)RUBY_Qnil);
15944 }
15945 }
15946 static const VALUE *
15947 vm_get_ep(const VALUE *const reg_ep, rb_num_t lv)
15948 {
15949 rb_num_t i;
15950 const VALUE *ep = reg_ep;
15951 for (i = 0; i < lv; i++) {
15952 ep = ((VALUE *)((ep)[(-1)] & ~0x03));
15953 }
15954 return ep;
15955 }
15956 static VALUE
15957 vm_get_special_object(const VALUE *const reg_ep,
15958 enum vm_special_object_type type)
15959 {
15960 switch (type) {
15961 case VM_SPECIAL_OBJECT_VMCORE:
15962 return rb_mRubyVMFrozenCore;
15963 case VM_SPECIAL_OBJECT_CBASE:
15964 return vm_get_cbase(reg_ep);
15965 case VM_SPECIAL_OBJECT_CONST_BASE:
15966 return vm_get_const_base(reg_ep);
15967 default:
15968 rb_bug("putspecialobject insn: unknown value_type %d", type);
15969 }
15970 }
15971 static void
15972 vm_freezestring(VALUE str, VALUE debug)
15973 {
15974 if (!!((VALUE)(debug) != ((VALUE)RUBY_Qnil))) {
15975 rb_ivar_set(str, id_debug_created_info, debug);
15976 }
15977 rb_str_freeze(str);
15978 }
15979 static VALUE
15980 vm_concat_array(VALUE ary1, VALUE ary2st)
15981 {
15982 const VALUE ary2 = ary2st;
15983 VALUE tmp1 = rb_check_to_array(ary1);
15984 VALUE tmp2 = rb_check_to_array(ary2);
15985 if (!((VALUE)(tmp1) != ((VALUE)RUBY_Qnil))) {
15986 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); });
15987 }
15988 if (!((VALUE)(tmp2) != ((VALUE)RUBY_Qnil))) {
15989 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); });
15990 }
15991 if (tmp1 == ary1) {
15992 tmp1 = rb_ary_dup(ary1);
15993 }
15994 return rb_ary_concat(tmp1, tmp2);
15995 }
15996 static VALUE
15997 vm_splat_array(VALUE flag, VALUE ary)
15998 {
15999 VALUE tmp = rb_check_to_array(ary);
16000 if (!((VALUE)(tmp) != ((VALUE)RUBY_Qnil))) {
16001 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); });
16002 }
16003 else if (!(((VALUE)(flag) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
16004 return rb_ary_dup(tmp);
16005 }
16006 else {
16007 return tmp;
16008 }
16009 }
16010 static VALUE
16011 vm_check_match(rb_execution_context_t *ec, VALUE target, VALUE pattern, rb_num_t flag)
16012 {
16013 enum vm_check_match_type type = ((int)flag) & 0x03;
16014 if (flag & 0x04) {
16015 long i;
16016 const long n = rb_array_len(pattern);
16017 for (i = 0; i < n; i++) {
16018 VALUE v = (rb_array_const_ptr_transient(pattern)[i]);
16019 VALUE c = check_match(ec, v, target, type);
16020 if (!(((VALUE)(c) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) {
16021 return c;
16022 }
16023 }
16024 return ((VALUE)RUBY_Qfalse);
16025 }
16026 else {
16027 return check_match(ec, pattern, target, type);
16028 }
16029 }
16030 static VALUE
16031 vm_check_keyword(lindex_t bits, lindex_t idx, const VALUE *ep)
16032 {
16033 const VALUE kw_bits = *(ep - bits);
16034 if ((((int)(long)(kw_bits))&RUBY_FIXNUM_FLAG)) {
16035 unsigned int b = (unsigned int)((unsigned long)((long)(((long)(kw_bits))>>(int)(1))));
16036 if ((idx < (32-1)) && (b & (0x01 << idx)))
16037 return ((VALUE)RUBY_Qfalse);
16038 }
16039 else {
16040 ((void)0);
16041 if (rb_hash_has_key(kw_bits, (((VALUE)(idx))<<1 | RUBY_FIXNUM_FLAG))) return ((VALUE)RUBY_Qfalse);
16042 }
16043 return ((VALUE)RUBY_Qtrue);
16044 }
16045 static void
16046 vm_dtrace(rb_event_flag_t flag, rb_execution_context_t *ec)
16047 {
16048 if (0 ||
16049 0 ||
16050 0 ||
16051 0) {
16052 switch (flag) {
16053 case 0x0008:
16054 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);
16055 return;
16056 case 0x0020:
16057 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);
16058 return;
16059 case 0x0010:
16060 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);
16061 return;
16062 case 0x0040:
16063 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);
16064 return;
16065 }
16066 }
16067 }
16068 static VALUE
16069 vm_const_get_under(ID id, rb_num_t flags, VALUE cbase)
16070 {
16071 VALUE ns;
16072 if ((ns = vm_search_const_defined_class(cbase, id)) == 0) {
16073 return ns;
16074 }
16075 else if (((flags) & 0x08)) {
16076 return rb_public_const_get_at(ns, id);
16077 }
16078 else {
16079 return rb_const_get_at(ns, id);
16080 }
16081 }
16082 static VALUE
16083 vm_check_if_class(ID id, rb_num_t flags, VALUE super, VALUE klass)
16084 {
16085 if (!( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(klass))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((klass) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((klass) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((klass) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((klass) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(klass)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(klass))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(klass) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(klass) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(klass))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
16086 return 0;
16087 }
16088 else if (((flags) & 0x10)) {
16089 VALUE tmp = rb_class_real(RCLASS_SUPER(klass));
16090 if (tmp != super) {
16091 rb_raise(rb_eTypeError,
16092 "superclass mismatch for class %""l""i" "\v""",
16093 rb_id2str(id));
16094 }
16095 else {
16096 return klass;
16097 }
16098 }
16099 else {
16100 return klass;
16101 }
16102 }
16103 static VALUE
16104 vm_check_if_module(ID id, VALUE mod)
16105 {
16106 if (!( ((RUBY_T_MODULE) == RUBY_T_FIXNUM) ? (((int)(long)(mod))&RUBY_FIXNUM_FLAG) : ((RUBY_T_MODULE) == RUBY_T_TRUE) ? ((mod) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_MODULE) == RUBY_T_FALSE) ? ((mod) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_MODULE) == RUBY_T_NIL) ? ((mod) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_MODULE) == RUBY_T_UNDEF) ? ((mod) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_MODULE) == RUBY_T_SYMBOL) ? ((((VALUE)(mod)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_MODULE) == RUBY_T_FLOAT) ? ( ((((int)(long)(mod))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(mod) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(mod) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(mod))->flags & RUBY_T_MASK) == (RUBY_T_MODULE)))) {
16107 return 0;
16108 }
16109 else {
16110 return mod;
16111 }
16112 }
16113 static VALUE
16114 declare_under(ID id, VALUE cbase, VALUE c)
16115 {
16116 rb_set_class_path_string(c, cbase, rb_id2str(id));
16117 rb_const_set(cbase, id, c);
16118 return c;
16119 }
16120 static VALUE
16121 vm_declare_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
16122 {
16123 VALUE s = ((flags) & 0x10) ? super : rb_cObject;
16124 VALUE c = declare_under(id, cbase, rb_define_class_id(id, s));
16125 rb_class_inherited(s, c);
16126 return c;
16127 }
16128 static VALUE
16129 vm_declare_module(ID id, VALUE cbase)
16130 {
16131 return declare_under(id, cbase, rb_define_module_id(id));
16132 }
16133 __attribute__ ((__noreturn__)) static void unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old);
16134 static void
16135 unmatched_redefinition(const char *type, VALUE cbase, ID id, VALUE old)
16136 {
16137 VALUE name = rb_id2str(id);
16138 VALUE message = rb_sprintf("%""l""i" "\v"" is not a %s",
16139 name, type);
16140 VALUE location = rb_const_source_location_at(cbase, id);
16141 if (!!((VALUE)(location) != ((VALUE)RUBY_Qnil))) {
16142 rb_str_catf(message, "\n%""l""i" "\v"":%""l""i" "\v"":"
16143 " previous definition of %""l""i" "\v"" was here",
16144 rb_ary_entry(location, 0), rb_ary_entry(location, 1), name);
16145 }
16146 rb_exc_raise(rb_exc_new_str(rb_eTypeError, message));
16147 }
16148 static VALUE
16149 vm_define_class(ID id, rb_num_t flags, VALUE cbase, VALUE super)
16150 {
16151 VALUE klass;
16152 if (((flags) & 0x10) && !( ((RUBY_T_CLASS) == RUBY_T_FIXNUM) ? (((int)(long)(super))&RUBY_FIXNUM_FLAG) : ((RUBY_T_CLASS) == RUBY_T_TRUE) ? ((super) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_CLASS) == RUBY_T_FALSE) ? ((super) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_CLASS) == RUBY_T_NIL) ? ((super) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_CLASS) == RUBY_T_UNDEF) ? ((super) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_CLASS) == RUBY_T_SYMBOL) ? ((((VALUE)(super)&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_CLASS) == RUBY_T_FLOAT) ? ( ((((int)(long)(super))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)(super) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(super) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(super))->flags & RUBY_T_MASK) == (RUBY_T_CLASS)))) {
16153 rb_raise(rb_eTypeError,
16154 "superclass must be a Class (%""l""i" "\v"" given)",
16155 rb_obj_class(super));
16156 }
16157 vm_check_if_namespace(cbase);
16158 rb_autoload_load(cbase, id);
16159 if ((klass = vm_const_get_under(id, flags, cbase)) != 0) {
16160 if (!vm_check_if_class(id, flags, super, klass))
16161 unmatched_redefinition("class", cbase, id, klass);
16162 return klass;
16163 }
16164 else {
16165 return vm_declare_class(id, flags, cbase, super);
16166 }
16167 }
16168 static VALUE
16169 vm_define_module(ID id, rb_num_t flags, VALUE cbase)
16170 {
16171 VALUE mod;
16172 vm_check_if_namespace(cbase);
16173 if ((mod = vm_const_get_under(id, flags, cbase)) != 0) {
16174 if (!vm_check_if_module(id, mod))
16175 unmatched_redefinition("module", cbase, id, mod);
16176 return mod;
16177 }
16178 else {
16179 return vm_declare_module(id, cbase);
16180 }
16181 }
16182 static VALUE
16183 vm_find_or_create_class_by_id(ID id,
16184 rb_num_t flags,
16185 VALUE cbase,
16186 VALUE super)
16187 {
16188 rb_vm_defineclass_type_t type = ((rb_vm_defineclass_type_t)(flags) & VM_DEFINECLASS_TYPE_MASK);
16189 switch (type) {
16190 case VM_DEFINECLASS_TYPE_CLASS:
16191 return vm_define_class(id, flags, cbase, super);
16192 case VM_DEFINECLASS_TYPE_SINGLETON_CLASS:
16193 return rb_singleton_class(cbase);
16194 case VM_DEFINECLASS_TYPE_MODULE:
16195 return vm_define_module(id, flags, cbase);
16196 default:
16197 rb_bug("unknown defineclass type: %d", (int)type);
16198 }
16199 }
16200 static rb_method_visibility_t
16201 vm_scope_visibility_get(const rb_execution_context_t *ec)
16202 {
16203 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
16204 if (!vm_env_cref_by_cref(cfp->ep)) {
16205 return METHOD_VISI_PUBLIC;
16206 }
16207 else {
16208 return CREF_SCOPE_VISI(vm_ec_cref(ec))->method_visi;
16209 }
16210 }
16211 static int
16212 vm_scope_module_func_check(const rb_execution_context_t *ec)
16213 {
16214 const rb_control_frame_t *cfp = rb_vm_get_ruby_level_next_cfp(ec, ec->cfp);
16215 if (!vm_env_cref_by_cref(cfp->ep)) {
16216 return 0;
16217 }
16218 else {
16219 return CREF_SCOPE_VISI(vm_ec_cref(ec))->module_func;
16220 }
16221 }
16222 static void
16223 vm_define_method(const rb_execution_context_t *ec, VALUE obj, ID id, VALUE iseqval, int is_singleton)
16224 {
16225 VALUE klass;
16226 rb_method_visibility_t visi;
16227 rb_cref_t *cref = vm_ec_cref(ec);
16228 if (!is_singleton) {
16229 klass = CREF_CLASS(cref);
16230 visi = vm_scope_visibility_get(ec);
16231 }
16232 else {
16233 klass = rb_singleton_class(obj);
16234 visi = METHOD_VISI_PUBLIC;
16235 }
16236 if (!((VALUE)(klass) != ((VALUE)RUBY_Qnil))) {
16237 rb_raise(rb_eTypeError, "no class/module to add method");
16238 }
16239 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, visi);
16240 if (!is_singleton && vm_scope_module_func_check(ec)) {
16241 klass = rb_singleton_class(klass);
16242 rb_add_method_iseq(klass, id, (const rb_iseq_t *)iseqval, cref, METHOD_VISI_PUBLIC);
16243 }
16244 }
16245 static void
16246 vm_search_method_wrap(
16247 const struct rb_control_frame_struct *reg_cfp,
16248 struct rb_call_data *cd,
16249 VALUE recv)
16250 {
16251 vm_search_method(cd, recv);
16252 }
16253 static void
16254 vm_search_invokeblock(
16255 const struct rb_control_frame_struct *reg_cfp,
16256 struct rb_call_data *cd,
16257 VALUE recv)
16258 {
16259 }
16260 static VALUE
16261 vm_invokeblock_i(
16262 struct rb_execution_context_struct *ec,
16263 struct rb_control_frame_struct *reg_cfp,
16264 struct rb_calling_info *calling,
16265 struct rb_call_data *cd)
16266 {
16267 const struct rb_call_info *ci = &cd->ci;
16268 VALUE block_handler = VM_CF_BLOCK_HANDLER((((reg_cfp))));
16269 if (block_handler == 0) {
16270 rb_vm_localjump_error("no block given (yield)", ((VALUE)RUBY_Qnil), 0);
16271 }
16272 else {
16273 return vm_invoke_block(ec, (((reg_cfp))), calling, ci, block_handler);
16274 }
16275 }
16276 static VALUE
16277 vm_sendish(
16278 struct rb_execution_context_struct *ec,
16279 struct rb_control_frame_struct *reg_cfp,
16280 struct rb_call_data *cd,
16281 VALUE block_handler,
16282 void (*method_explorer)(
16283 const struct rb_control_frame_struct *reg_cfp,
16284 struct rb_call_data *cd,
16285 VALUE recv))
16286 {
16287 CALL_INFO ci = &cd->ci;
16288 CALL_CACHE cc = &cd->cc;
16289 VALUE val;
16290 int argc = ci->orig_argc;
16291 VALUE recv = (*(((((reg_cfp)->sp)))-(argc)-1));
16292 struct rb_calling_info calling;
16293 calling.block_handler = block_handler;
16294 calling.kw_splat = ((ci)->flag & (0x01 << VM_CALL_KW_SPLAT_bit)) > 0;
16295 calling.recv = recv;
16296 calling.argc = argc;
16297 method_explorer((((reg_cfp))), cd, recv);
16298 val = cc->call(ec, (((reg_cfp))), &calling, cd);
16299 if (val != ((VALUE)RUBY_Qundef)) {
16300 return val;
16301 }
16302 else {
16303 do { (reg_cfp) = ec->cfp; } while (0);
16304 }
16305 if (((((reg_cfp)))->iseq)->body->catch_except_p) {
16306 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
16307 return rb_vm_exec(ec, 1);
16308 }
16309 else if ((val = mjit_exec(ec)) == ((VALUE)RUBY_Qundef)) {
16310 VM_ENV_FLAGS_SET(((((reg_cfp)->ep))), VM_FRAME_FLAG_FINISH);
16311 return rb_vm_exec(ec, 0);
16312 }
16313 else {
16314 return val;
16315 }
16316 }
16317 static VALUE
16318 vm_opt_str_freeze(VALUE str, int bop, ID id)
16319 {
16320 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16321 return str;
16322 }
16323 else {
16324 return ((VALUE)RUBY_Qundef);
16325 }
16326 }
16327 #define id_cmp idCmp
16328 static VALUE
16329 vm_opt_newarray_max(rb_num_t num, const VALUE *ptr)
16330 {
16331 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MAX)]&((1 << 3))) == 0), 1)))) {
16332 if (num == 0) {
16333 return ((VALUE)RUBY_Qnil);
16334 }
16335 else {
16336 struct cmp_opt_data cmp_opt = { 0, 0 };
16337 VALUE result = *ptr;
16338 rb_snum_t i = num - 1;
16339 while (i-- > 0) {
16340 const VALUE v = *++ptr;
16341 if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((v)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((result)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( ((((int)(long)(result))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) > 0) {
16342 result = v;
16343 }
16344 }
16345 return result;
16346 }
16347 }
16348 else {
16349 VALUE ary = rb_ary_new_from_values(num, ptr);
16350 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)); }); });
16351 }
16352 }
16353 static VALUE
16354 vm_opt_newarray_min(rb_num_t num, const VALUE *ptr)
16355 {
16356 if (((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MIN)]&((1 << 3))) == 0), 1)))) {
16357 if (num == 0) {
16358 return ((VALUE)RUBY_Qnil);
16359 }
16360 else {
16361 struct cmp_opt_data cmp_opt = { 0, 0 };
16362 VALUE result = *ptr;
16363 rb_snum_t i = num - 1;
16364 while (i-- > 0) {
16365 const VALUE v = *++ptr;
16366 if ((((((int)(long)(v))&RUBY_FIXNUM_FLAG) && (((int)(long)(result))&RUBY_FIXNUM_FLAG) && (((cmp_opt).opt_inited & (1U << cmp_opt_Fixnum)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Fixnum)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Fixnum)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cInteger == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cInteger, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Fixnum))))) ? (((long)v > (long)result) ? 1 : ((long)v < (long)result) ? -1 : 0) : ((( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((v)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((v)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((v)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((v)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((v)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((v))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((v)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((v)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((v)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((v)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(v)) == rb_cString) && (( ((RUBY_T_STRING) == RUBY_T_FIXNUM) ? (((int)(long)((result)))&RUBY_FIXNUM_FLAG) : ((RUBY_T_STRING) == RUBY_T_TRUE) ? (((result)) == ((VALUE)RUBY_Qtrue)) : ((RUBY_T_STRING) == RUBY_T_FALSE) ? (((result)) == ((VALUE)RUBY_Qfalse)) : ((RUBY_T_STRING) == RUBY_T_NIL) ? (((result)) == ((VALUE)RUBY_Qnil)) : ((RUBY_T_STRING) == RUBY_T_UNDEF) ? (((result)) == ((VALUE)RUBY_Qundef)) : ((RUBY_T_STRING) == RUBY_T_SYMBOL) ? ((((VALUE)((result))&~((~(VALUE)0)<<RUBY_SPECIAL_SHIFT)) == RUBY_SYMBOL_FLAG)||(!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_SYMBOL))) : ((RUBY_T_STRING) == RUBY_T_FLOAT) ? ( ((((int)(long)((result)))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) : (!(((VALUE)((result)) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)((result)) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)((result)))->flags & RUBY_T_MASK) == (RUBY_T_STRING))) && rb_class_of((VALUE)(result)) == rb_cString) && (((cmp_opt).opt_inited & (1U << cmp_opt_String)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_String)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_String)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cString == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cString, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_String))))) ? rb_str_cmp(v, result) : (( ((((int)(long)(v))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(v) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(v) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(v))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && ( ((((int)(long)(result))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(result) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(result) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(result))->flags & RUBY_T_MASK) == RUBY_T_FLOAT)) && (((cmp_opt).opt_inited & (1U << cmp_opt_Float)) ? ((cmp_opt).opt_methods & (1U << cmp_opt_Float)) : (((cmp_opt).opt_inited |= (1U << cmp_opt_Float)), __extension__({ static struct rb_call_data rb_mbdp; (rb_cFloat == ((VALUE)RUBY_Qfalse)) ? 1 : rb_method_basic_definition_p_with_cc(&rb_mbdp, rb_cFloat, idCmp); }) && ((cmp_opt).opt_methods |= (1U << cmp_opt_Float))))) ? rb_float_cmp(v, result) : rb_cmpint(__extension__({ static struct rb_call_data rb_funcallv_data; rb_funcallv_with_cc(&rb_funcallv_data, v, idCmp, 1, &result); }), v, result)) < 0) {
16367 result = v;
16368 }
16369 }
16370 return result;
16371 }
16372 }
16373 else {
16374 VALUE ary = rb_ary_new_from_values(num, ptr);
16375 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)); }); });
16376 }
16377 }
16378 #undef id_cmp
16379 static int
16380 vm_ic_hit_p(IC ic, const VALUE *reg_ep)
16381 {
16382 if (ic->ic_serial == (ruby_vm_global_constant_state)) {
16383 return (ic->ic_cref == ((void *)0) ||
16384 ic->ic_cref == vm_get_cref(reg_ep));
16385 }
16386 return 0;
16387 }
16388 static void
16389 vm_ic_update(IC ic, VALUE val, const VALUE *reg_ep)
16390 {
16391 ((void)0);
16392 ic->value = val;
16393 ic->ic_serial = (ruby_vm_global_constant_state) - ruby_vm_const_missing_count;
16394 ic->ic_cref = vm_get_const_key_cref(reg_ep);
16395 ruby_vm_const_missing_count = 0;
16396 }
16397 static VALUE
16398 vm_once_dispatch(rb_execution_context_t *ec, ISEQ iseq, ISE is)
16399 {
16400 rb_thread_t *th = rb_ec_thread_ptr(ec);
16401 rb_thread_t *const RUNNING_THREAD_ONCE_DONE = (rb_thread_t *)(0x1);
16402 again:
16403 if (is->once.running_thread == RUNNING_THREAD_ONCE_DONE) {
16404 return is->once.value;
16405 }
16406 else if (is->once.running_thread == ((void *)0)) {
16407 VALUE val;
16408 is->once.running_thread = th;
16409 val = rb_ensure(vm_once_exec, (VALUE)iseq, vm_once_clear, (VALUE)is);
16410 __extension__({
16411 #pragma GCC diagnostic push
16412 ;
16413 #pragma GCC diagnostic ignored "-Waddress-of-packed-member"
16414 ; typeof(rb_obj_write((VALUE)(ec->cfp->iseq), (VALUE *)(&is->once.value), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 4160)) unaligned_member_access_result = (rb_obj_write((VALUE)(ec->cfp->iseq), (VALUE *)(&is->once.value), (VALUE)(val), "../ruby-2.7.0/vm_insnhelper.c", 4160));
16415 #pragma GCC diagnostic pop
16416 ; unaligned_member_access_result; });
16417 is->once.running_thread = RUNNING_THREAD_ONCE_DONE;
16418 return val;
16419 }
16420 else if (is->once.running_thread == th) {
16421 return vm_once_exec((VALUE)iseq);
16422 }
16423 else {
16424 rb_vm_check_ints(ec);
16425 rb_thread_schedule();
16426 goto again;
16427 }
16428 }
16429 static OFFSET
16430 vm_case_dispatch(CDHASH hash, OFFSET else_offset, VALUE key)
16431 {
16432 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); })) {
16433 case -1:
16434 case RUBY_T_FLOAT:
16435 case RUBY_T_SYMBOL:
16436 case RUBY_T_BIGNUM:
16437 case RUBY_T_STRING:
16438 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)))) {
16439 st_data_t val;
16440 if (( ((((int)(long)(key))&RUBY_FLONUM_MASK) == RUBY_FLONUM_FLAG) || (!(((VALUE)(key) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(key) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (int)(((struct RBasic*)(key))->flags & RUBY_T_MASK) == RUBY_T_FLOAT))) {
16441 double kval = rb_float_value_inline(key);
16442 if (!(__builtin_isinf_sign (kval)) && modf(kval, &kval) == 0.0) {
16443 key = (((kval) < (0x7fffffffffffffffL>>1)+1) && ((kval) >= (((long)(-0x7fffffffffffffffL -1L))>>(int)(1)))) ? (((VALUE)((long)kval))<<1 | RUBY_FIXNUM_FLAG) : rb_dbl2big(kval);
16444 }
16445 }
16446 if (rb_hash_stlike_lookup(hash, key, &val)) {
16447 return ((long)(((long)((VALUE)val))>>(int)(1)));
16448 }
16449 else {
16450 return else_offset;
16451 }
16452 }
16453 }
16454 return 0;
16455 }
16456 __attribute__ ((__noreturn__)) static void vm_stack_consistency_error(const rb_execution_context_t *ec, const rb_control_frame_t *, const VALUE *);
16457 static void
16458 vm_stack_consistency_error(const rb_execution_context_t *ec,
16459 const rb_control_frame_t *cfp,
16460 const VALUE *bp)
16461 {
16462 const ptrdiff_t nsp = ((cfp->sp) - (ec)->vm_stack);
16463 const ptrdiff_t nbp = ((bp) - (ec)->vm_stack);
16464 static const char stack_consistency_error[] =
16465 "Stack consistency error (sp: %""t""d"", bp: %""t""d"")";
16466 rb_bug(stack_consistency_error, nsp, nbp);
16467 }
16468 static VALUE
16469 vm_opt_plus(VALUE recv, VALUE obj)
16470 {
16471 if (FIXNUM_2_P(recv, obj) &&
16472 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 0))) == 0), 1)))) {
16473 return rb_fix_plus_fix(recv, obj);
16474 }
16475 else if (FLONUM_2_P(recv, obj) &&
16476 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
16477 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
16478 }
16479 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))) {
16480 return ((VALUE)RUBY_Qundef);
16481 }
16482 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16483 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16484 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 1))) == 0), 1)))) {
16485 return rb_float_new_inline(rb_float_value_inline(recv) + rb_float_value_inline(obj));
16486 }
16487 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16488 (((struct RBasic*)(obj))->klass) == rb_cString &&
16489 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 2))) == 0), 1)))) {
16490 return rb_str_opt_plus(recv, obj);
16491 }
16492 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16493 (((struct RBasic*)(obj))->klass) == rb_cArray &&
16494 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_PLUS)]&((1 << 3))) == 0), 1)))) {
16495 return rb_ary_plus(recv, obj);
16496 }
16497 else {
16498 return ((VALUE)RUBY_Qundef);
16499 }
16500 }
16501 static VALUE
16502 vm_opt_minus(VALUE recv, VALUE obj)
16503 {
16504 if (FIXNUM_2_P(recv, obj) &&
16505 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 0))) == 0), 1)))) {
16506 return rb_fix_minus_fix(recv, obj);
16507 }
16508 else if (FLONUM_2_P(recv, obj) &&
16509 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
16510 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
16511 }
16512 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))) {
16513 return ((VALUE)RUBY_Qundef);
16514 }
16515 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16516 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16517 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MINUS)]&((1 << 1))) == 0), 1)))) {
16518 return rb_float_new_inline(rb_float_value_inline(recv) - rb_float_value_inline(obj));
16519 }
16520 else {
16521 return ((VALUE)RUBY_Qundef);
16522 }
16523 }
16524 static VALUE
16525 vm_opt_mult(VALUE recv, VALUE obj)
16526 {
16527 if (FIXNUM_2_P(recv, obj) &&
16528 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 0))) == 0), 1)))) {
16529 return rb_fix_mul_fix(recv, obj);
16530 }
16531 else if (FLONUM_2_P(recv, obj) &&
16532 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
16533 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
16534 }
16535 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))) {
16536 return ((VALUE)RUBY_Qundef);
16537 }
16538 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16539 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16540 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MULT)]&((1 << 1))) == 0), 1)))) {
16541 return rb_float_new_inline(rb_float_value_inline(recv) * rb_float_value_inline(obj));
16542 }
16543 else {
16544 return ((VALUE)RUBY_Qundef);
16545 }
16546 }
16547 static VALUE
16548 vm_opt_div(VALUE recv, VALUE obj)
16549 {
16550 if (FIXNUM_2_P(recv, obj) &&
16551 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 0))) == 0), 1)))) {
16552 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_div_fix(recv, obj);
16553 }
16554 else if (FLONUM_2_P(recv, obj) &&
16555 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
16556 return rb_flo_div_flo(recv, obj);
16557 }
16558 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))) {
16559 return ((VALUE)RUBY_Qundef);
16560 }
16561 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16562 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16563 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_DIV)]&((1 << 1))) == 0), 1)))) {
16564 return rb_flo_div_flo(recv, obj);
16565 }
16566 else {
16567 return ((VALUE)RUBY_Qundef);
16568 }
16569 }
16570 static VALUE
16571 vm_opt_mod(VALUE recv, VALUE obj)
16572 {
16573 if (FIXNUM_2_P(recv, obj) &&
16574 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 0))) == 0), 1)))) {
16575 return (((long)(((long)(obj))>>(int)(1))) == 0) ? ((VALUE)RUBY_Qundef) : rb_fix_mod_fix(recv, obj);
16576 }
16577 else if (FLONUM_2_P(recv, obj) &&
16578 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
16579 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
16580 }
16581 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))) {
16582 return ((VALUE)RUBY_Qundef);
16583 }
16584 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16585 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16586 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MOD)]&((1 << 1))) == 0), 1)))) {
16587 return rb_float_new_inline(ruby_float_mod(rb_float_value_inline(recv), rb_float_value_inline(obj)));
16588 }
16589 else {
16590 return ((VALUE)RUBY_Qundef);
16591 }
16592 }
16593 static VALUE
16594 vm_opt_neq(CALL_DATA cd, CALL_DATA cd_eq, VALUE recv, VALUE obj)
16595 {
16596 if (vm_method_cfunc_is(cd, recv, rb_obj_not_equal)) {
16597 VALUE val = opt_eq_func(recv, obj, cd_eq);
16598 if (val != ((VALUE)RUBY_Qundef)) {
16599 return !(((VALUE)(val) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
16600 }
16601 }
16602 return ((VALUE)RUBY_Qundef);
16603 }
16604 static VALUE
16605 vm_opt_lt(VALUE recv, VALUE obj)
16606 {
16607 if (FIXNUM_2_P(recv, obj) &&
16608 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 0))) == 0), 1)))) {
16609 return (long)recv < (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16610 }
16611 else if (FLONUM_2_P(recv, obj) &&
16612 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
16613 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16614 }
16615 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))) {
16616 return ((VALUE)RUBY_Qundef);
16617 }
16618 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16619 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16620 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LT)]&((1 << 1))) == 0), 1)))) {
16621 ;
16622 return rb_float_value_inline(recv) < rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16623 }
16624 else {
16625 return ((VALUE)RUBY_Qundef);
16626 }
16627 }
16628 static VALUE
16629 vm_opt_le(VALUE recv, VALUE obj)
16630 {
16631 if (FIXNUM_2_P(recv, obj) &&
16632 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 0))) == 0), 1)))) {
16633 return (long)recv <= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16634 }
16635 else if (FLONUM_2_P(recv, obj) &&
16636 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
16637 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16638 }
16639 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))) {
16640 return ((VALUE)RUBY_Qundef);
16641 }
16642 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16643 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16644 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LE)]&((1 << 1))) == 0), 1)))) {
16645 ;
16646 return rb_float_value_inline(recv) <= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16647 }
16648 else {
16649 return ((VALUE)RUBY_Qundef);
16650 }
16651 }
16652 static VALUE
16653 vm_opt_gt(VALUE recv, VALUE obj)
16654 {
16655 if (FIXNUM_2_P(recv, obj) &&
16656 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 0))) == 0), 1)))) {
16657 return (long)recv > (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16658 }
16659 else if (FLONUM_2_P(recv, obj) &&
16660 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
16661 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16662 }
16663 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))) {
16664 return ((VALUE)RUBY_Qundef);
16665 }
16666 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16667 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16668 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GT)]&((1 << 1))) == 0), 1)))) {
16669 ;
16670 return rb_float_value_inline(recv) > rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16671 }
16672 else {
16673 return ((VALUE)RUBY_Qundef);
16674 }
16675 }
16676 static VALUE
16677 vm_opt_ge(VALUE recv, VALUE obj)
16678 {
16679 if (FIXNUM_2_P(recv, obj) &&
16680 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 0))) == 0), 1)))) {
16681 return (long)recv >= (long)obj ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16682 }
16683 else if (FLONUM_2_P(recv, obj) &&
16684 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
16685 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16686 }
16687 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))) {
16688 return ((VALUE)RUBY_Qundef);
16689 }
16690 else if ((((struct RBasic*)(recv))->klass) == rb_cFloat &&
16691 (((struct RBasic*)(obj))->klass) == rb_cFloat &&
16692 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_GE)]&((1 << 1))) == 0), 1)))) {
16693 ;
16694 return rb_float_value_inline(recv) >= rb_float_value_inline(obj) ? ((VALUE)RUBY_Qtrue) : ((VALUE)RUBY_Qfalse);
16695 }
16696 else {
16697 return ((VALUE)RUBY_Qundef);
16698 }
16699 }
16700 static VALUE
16701 vm_opt_ltlt(VALUE recv, VALUE obj)
16702 {
16703 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16704 return ((VALUE)RUBY_Qundef);
16705 }
16706 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16707 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 2))) == 0), 1)))) {
16708 return rb_str_concat(recv, obj);
16709 }
16710 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16711 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_LTLT)]&((1 << 3))) == 0), 1)))) {
16712 return rb_ary_push(recv, obj);
16713 }
16714 else {
16715 return ((VALUE)RUBY_Qundef);
16716 }
16717 }
16718 static VALUE
16719 vm_opt_and(VALUE recv, VALUE obj)
16720 {
16721 if (FIXNUM_2_P(recv, obj) &&
16722 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AND)]&((1 << 0))) == 0), 1)))) {
16723 return (recv & obj) | 1;
16724 }
16725 else {
16726 return ((VALUE)RUBY_Qundef);
16727 }
16728 }
16729 static VALUE
16730 vm_opt_or(VALUE recv, VALUE obj)
16731 {
16732 if (FIXNUM_2_P(recv, obj) &&
16733 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_OR)]&((1 << 0))) == 0), 1)))) {
16734 return recv | obj;
16735 }
16736 else {
16737 return ((VALUE)RUBY_Qundef);
16738 }
16739 }
16740 static VALUE
16741 vm_opt_aref(VALUE recv, VALUE obj)
16742 {
16743 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16744 if (FIXNUM_2_P(recv, obj) &&
16745 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 0))) == 0), 1)))) {
16746 return rb_fix_aref(recv, obj);
16747 }
16748 return ((VALUE)RUBY_Qundef);
16749 }
16750 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16751 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 3))) == 0), 1)))) {
16752 if ((((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
16753 return rb_ary_entry_internal(recv, ((long)(((long)(obj))>>(int)(1))));
16754 }
16755 else {
16756 return rb_ary_aref1(recv, obj);
16757 }
16758 }
16759 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16760 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1)))) {
16761 return rb_hash_aref(recv, obj);
16762 }
16763 else {
16764 return ((VALUE)RUBY_Qundef);
16765 }
16766 }
16767 static VALUE
16768 vm_opt_aset(VALUE recv, VALUE obj, VALUE set)
16769 {
16770 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16771 return ((VALUE)RUBY_Qundef);
16772 }
16773 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16774 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 3))) == 0), 1))) &&
16775 (((int)(long)(obj))&RUBY_FIXNUM_FLAG)) {
16776 rb_ary_store(recv, ((long)(((long)(obj))>>(int)(1))), set);
16777 return set;
16778 }
16779 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16780 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1)))) {
16781 rb_hash_aset(recv, obj, set);
16782 return set;
16783 }
16784 else {
16785 return ((VALUE)RUBY_Qundef);
16786 }
16787 }
16788 static VALUE
16789 vm_opt_aref_with(VALUE recv, VALUE key)
16790 {
16791 if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
16792 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_AREF)]&((1 << 4))) == 0), 1))) &&
16793 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
16794 return rb_hash_aref(recv, key);
16795 }
16796 else {
16797 return ((VALUE)RUBY_Qundef);
16798 }
16799 }
16800 static VALUE
16801 vm_opt_aset_with(VALUE recv, VALUE key, VALUE val)
16802 {
16803 if (!(((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0)) && (((struct RBasic*)(recv))->klass) == rb_cHash &&
16804 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_ASET)]&((1 << 4))) == 0), 1))) &&
16805 rb_hash_compare_by_id_p(recv) == ((VALUE)RUBY_Qfalse)) {
16806 return rb_hash_aset(recv, key, val);
16807 }
16808 else {
16809 return ((VALUE)RUBY_Qundef);
16810 }
16811 }
16812 static VALUE
16813 vm_opt_length(VALUE recv, int bop)
16814 {
16815 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16816 return ((VALUE)RUBY_Qundef);
16817 }
16818 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16819 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 2))) == 0), 1)))) {
16820 if (bop == BOP_EMPTY_P) {
16821 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));
16822 }
16823 else {
16824 return rb_str_length(recv);
16825 }
16826 }
16827 else if ((((struct RBasic*)(recv))->klass) == rb_cArray &&
16828 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 3))) == 0), 1)))) {
16829 return rb_long2num_inline(rb_array_len(recv));
16830 }
16831 else if ((((struct RBasic*)(recv))->klass) == rb_cHash &&
16832 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(bop)]&((1 << 4))) == 0), 1)))) {
16833 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);
16834 }
16835 else {
16836 return ((VALUE)RUBY_Qundef);
16837 }
16838 }
16839 static VALUE
16840 vm_opt_empty_p(VALUE recv)
16841 {
16842 switch (vm_opt_length(recv, BOP_EMPTY_P)) {
16843 case ((VALUE)RUBY_Qundef): return ((VALUE)RUBY_Qundef);
16844 case (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG): return ((VALUE)RUBY_Qtrue);
16845 default: return ((VALUE)RUBY_Qfalse);
16846 }
16847 }
16848 VALUE rb_false(VALUE obj);
16849 static VALUE
16850 vm_opt_nil_p(CALL_DATA cd, VALUE recv)
16851 {
16852 if (recv == ((VALUE)RUBY_Qnil) &&
16853 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_NIL_P)]&((1 << 9))) == 0), 1)))) {
16854 return ((VALUE)RUBY_Qtrue);
16855 }
16856 else if (vm_method_cfunc_is(cd, recv, rb_false)) {
16857 return ((VALUE)RUBY_Qfalse);
16858 }
16859 else {
16860 return ((VALUE)RUBY_Qundef);
16861 }
16862 }
16863 static VALUE
16864 fix_succ(VALUE x)
16865 {
16866 switch (x) {
16867 case ~0UL:
16868 return (((VALUE)(0))<<1 | RUBY_FIXNUM_FLAG);
16869 case ((~0UL)>>(int)(1)):
16870 return rb_uint2big(1UL << (8 * 8 - 2));
16871 default:
16872 return x + 2;
16873 }
16874 }
16875 static VALUE
16876 vm_opt_succ(VALUE recv)
16877 {
16878 if ((((int)(long)(recv))&RUBY_FIXNUM_FLAG) &&
16879 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 0))) == 0), 1)))) {
16880 return fix_succ(recv);
16881 }
16882 else if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16883 return ((VALUE)RUBY_Qundef);
16884 }
16885 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16886 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_SUCC)]&((1 << 2))) == 0), 1)))) {
16887 return rb_str_succ(recv);
16888 }
16889 else {
16890 return ((VALUE)RUBY_Qundef);
16891 }
16892 }
16893 static VALUE
16894 vm_opt_not(CALL_DATA cd, VALUE recv)
16895 {
16896 if (vm_method_cfunc_is(cd, recv, rb_obj_not)) {
16897 return !(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0) ? ((VALUE)RUBY_Qfalse) : ((VALUE)RUBY_Qtrue);
16898 }
16899 else {
16900 return ((VALUE)RUBY_Qundef);
16901 }
16902 }
16903 static VALUE
16904 vm_opt_regexpmatch2(VALUE recv, VALUE obj)
16905 {
16906 if ((((VALUE)(recv) & RUBY_IMMEDIATE_MASK) || !!(((VALUE)(recv) & (VALUE)~((VALUE)RUBY_Qnil)) == 0))) {
16907 return ((VALUE)RUBY_Qundef);
16908 }
16909 else if ((((struct RBasic*)(recv))->klass) == rb_cString &&
16910 rb_class_of((VALUE)(obj)) == rb_cRegexp &&
16911 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 2))) == 0), 1)))) {
16912 return rb_reg_match(obj, recv);
16913 }
16914 else if ((((struct RBasic*)(recv))->klass) == rb_cRegexp &&
16915 ((__builtin_expect(!!((rb_current_vm()->redefined_flag[(BOP_MATCH)]&((1 << 8))) == 0), 1)))) {
16916 return rb_reg_match(recv, obj);
16917 }
16918 else {
16919 return ((VALUE)RUBY_Qundef);
16920 }
16921 }
16922 rb_event_flag_t rb_iseq_event_flags(const rb_iseq_t *iseq, size_t pos);
16923 __attribute__ ((__noinline__)) static void vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc);
16924 static inline void
16925 vm_trace_hook(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc,
16926 rb_event_flag_t pc_events, rb_event_flag_t target_event,
16927 rb_hook_list_t *global_hooks, rb_hook_list_t *local_hooks, VALUE val)
16928 {
16929 rb_event_flag_t event = pc_events & target_event;
16930 VALUE self = (((((reg_cfp)))->self));
16931 ((void)0);
16932 if (event & global_hooks->events) {
16933 reg_cfp->pc++;
16934 vm_dtrace(event, ec);
16935 rb_exec_event_hook_orig(ec, global_hooks, event, self, 0, 0, 0 , val, 0);
16936 reg_cfp->pc--;
16937 }
16938 if (local_hooks != ((void *)0)) {
16939 if (event & local_hooks->events) {
16940 reg_cfp->pc++;
16941 rb_exec_event_hook_orig(ec, local_hooks, event, self, 0, 0, 0 , val, 0);
16942 reg_cfp->pc--;
16943 }
16944 }
16945 }
16946 #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)
16947 static void
16948 vm_trace(rb_execution_context_t *ec, rb_control_frame_t *reg_cfp, const VALUE *pc)
16949 {
16950 rb_event_flag_t enabled_flags = ruby_vm_event_flags & (0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010| 0x0100| 0x0200| 0x010000| 0x020000);
16951 if (enabled_flags == 0 && ruby_vm_event_local_num == 0) {
16952 return;
16953 }
16954 else {
16955 const rb_iseq_t *iseq = reg_cfp->iseq;
16956 size_t pos = pc - iseq->body->iseq_encoded;
16957 rb_event_flag_t pc_events = rb_iseq_event_flags(iseq, pos);
16958 rb_hook_list_t *local_hooks = iseq->aux.exec.local_hooks;
16959 rb_event_flag_t local_hook_events = local_hooks != ((void *)0) ? local_hooks->events : 0;
16960 enabled_flags |= local_hook_events;
16961 ((void)0);
16962 if ((pc_events & enabled_flags) == 0) {
16963 return;
16964 }
16965 else if (ec->trace_arg != ((void *)0)) {
16966 return;
16967 }
16968 else {
16969 rb_hook_list_t *global_hooks = rb_vm_global_hooks(ec);
16970 if (0) {
16971 fprintf(((__getreent())->_stderr), "vm_trace>>%4d (%4x) - %s:%d %s\n",
16972 (int)pos,
16973 (int)pc_events,
16974 (!(((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),
16975 (int)rb_iseq_line_no(iseq, pos),
16976 (!(((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));
16977 }
16978 ((void)0);
16979 ((void)0);
16980 ((void)0);
16981 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);
16982 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);
16983 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);
16984 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);
16985 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);
16986 }
16987 }
16988 }
16989 void Init_vm_stack_canary(void) { }
16990 static VALUE
16991 builtin_invoker0(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16992 {
16993 typedef VALUE (*rb_invoke_funcptr0_t)(rb_execution_context_t *ec, VALUE self);
16994 return (*(rb_invoke_funcptr0_t)funcptr)(ec, self);
16995 }
16996 static VALUE
16997 builtin_invoker1(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
16998 {
16999 typedef VALUE (*rb_invoke_funcptr1_t)(rb_execution_context_t *ec, VALUE self, VALUE v1);
17000 return (*(rb_invoke_funcptr1_t)funcptr)(ec, self, argv[0]);
17001 }
17002 static VALUE
17003 builtin_invoker2(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17004 {
17005 typedef VALUE (*rb_invoke_funcptr2_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2);
17006 return (*(rb_invoke_funcptr2_t)funcptr)(ec, self, argv[0], argv[1]);
17007 }
17008 static VALUE
17009 builtin_invoker3(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17010 {
17011 typedef VALUE (*rb_invoke_funcptr3_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3);
17012 return (*(rb_invoke_funcptr3_t)funcptr)(ec, self, argv[0], argv[1], argv[2]);
17013 }
17014 static VALUE
17015 builtin_invoker4(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17016 {
17017 typedef VALUE (*rb_invoke_funcptr4_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4);
17018 return (*(rb_invoke_funcptr4_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3]);
17019 }
17020 static VALUE
17021 builtin_invoker5(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17022 {
17023 typedef VALUE (*rb_invoke_funcptr5_t)(rb_execution_context_t *ec, VALUE self, VALUE v1, VALUE v2, VALUE v3, VALUE v4, VALUE v5);
17024 return (*(rb_invoke_funcptr5_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4]);
17025 }
17026 static VALUE
17027 builtin_invoker6(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17028 {
17029 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);
17030 return (*(rb_invoke_funcptr6_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5]);
17031 }
17032 static VALUE
17033 builtin_invoker7(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17034 {
17035 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);
17036 return (*(rb_invoke_funcptr7_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6]);
17037 }
17038 static VALUE
17039 builtin_invoker8(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17040 {
17041 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);
17042 return (*(rb_invoke_funcptr8_t)funcptr)(ec, self, argv[0], argv[1], argv[2], argv[3], argv[4], argv[5], argv[6], argv[7]);
17043 }
17044 static VALUE
17045 builtin_invoker9(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17046 {
17047 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);
17048 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]);
17049 }
17050 static VALUE
17051 builtin_invoker10(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17052 {
17053 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);
17054 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]);
17055 }
17056 static VALUE
17057 builtin_invoker11(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17058 {
17059 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);
17060 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]);
17061 }
17062 static VALUE
17063 builtin_invoker12(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17064 {
17065 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);
17066 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]);
17067 }
17068 static VALUE
17069 builtin_invoker13(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17070 {
17071 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);
17072 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]);
17073 }
17074 static VALUE
17075 builtin_invoker14(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17076 {
17077 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);
17078 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]);
17079 }
17080 static VALUE
17081 builtin_invoker15(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr)
17082 {
17083 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);
17084 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]);
17085 }
17086 typedef VALUE (*builtin_invoker)(rb_execution_context_t *ec, VALUE self, const VALUE *argv, rb_insn_func_t funcptr);
17087 static builtin_invoker
17088 lookup_builtin_invoker(int argc)
17089 {
17090 static const builtin_invoker invokers[] = {
17091 builtin_invoker0,
17092 builtin_invoker1,
17093 builtin_invoker2,
17094 builtin_invoker3,
17095 builtin_invoker4,
17096 builtin_invoker5,
17097 builtin_invoker6,
17098 builtin_invoker7,
17099 builtin_invoker8,
17100 builtin_invoker9,
17101 builtin_invoker10,
17102 builtin_invoker11,
17103 builtin_invoker12,
17104 builtin_invoker13,
17105 builtin_invoker14,
17106 builtin_invoker15,
17107 };
17108 return invokers[argc];
17109 }
17110 static inline VALUE
17111 invoke_bf(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
17112 {
17113 VALUE self = cfp->self;
17114 return (*lookup_builtin_invoker(bf->argc))(ec, self, argv, (rb_insn_func_t)bf->func_ptr);
17115 }
17116 static VALUE
17117 vm_invoke_builtin(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function* bf, const VALUE *argv)
17118 {
17119 return invoke_bf(ec, cfp, bf, argv);
17120 }
17121 static VALUE
17122 vm_invoke_builtin_delegate(rb_execution_context_t *ec, rb_control_frame_t *cfp, const struct rb_builtin_function *bf, unsigned int start_index)
17123 {
17124 if (0) {
17125 fprintf(((__getreent())->_stderr), "vm_invoke_builtin_delegate: passing -> ");
17126 for (int i=0; i<bf->argc; i++) {
17127 fprintf(((__getreent())->_stderr), ":%s ", rb_id2name(cfp->iseq->body->local_table[i+start_index]));
17128 }
17129 fprintf(((__getreent())->_stderr), "\n");
17130 fprintf(((__getreent())->_stderr), "%s %s(%d):%p\n", __func__, bf->name, bf->argc, bf->func_ptr);
17131 }
17132 if (bf->argc == 0) {
17133 return invoke_bf(ec, cfp, bf, ((void *)0));
17134 }
17135 else {
17136 const VALUE *argv = cfp->ep - cfp->iseq->body->local_table_size - ( 3) + 1 + start_index;
17137 return invoke_bf(ec, cfp, bf, argv);
17138 }
17139 }
17140 VALUE
17141 rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
17142 {
17143 const rb_control_frame_t *cfp = ec->cfp;
17144 return cfp->ep[index];
17145 }
17146 struct local_var_list {
17147 VALUE tbl;
17148 };
17149 static inline VALUE method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat);
17150 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);
17151 static inline VALUE vm_yield(rb_execution_context_t *ec, int argc, const VALUE *argv, int kw_splat);
17152 static inline VALUE vm_yield_with_block(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE block_handler, int kw_splat);
17153 static inline VALUE vm_yield_force_blockarg(rb_execution_context_t *ec, VALUE args);
17154 VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p);
17155 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);
17156 static int vm_collect_local_variables_in_heap(const VALUE *dfp, const struct local_var_list *vars);
17157 static VALUE rb_eUncaughtThrow;
17158 static ID id_result, id_tag, id_value;
17159 #define id_mesg idMesg
17160 typedef enum call_type {
17161 CALL_PUBLIC,
17162 CALL_FCALL,
17163 CALL_VCALL,
17164 CALL_PUBLIC_KW,
17165 CALL_FCALL_KW,
17166 CALL_TYPE_MAX
17167 } call_type;
17168 static VALUE send_internal(int argc, const VALUE *argv, VALUE recv, call_type scope);
17169 static VALUE vm_call0_body(rb_execution_context_t* ec, struct rb_calling_info *calling, struct rb_call_data *cd, const VALUE *argv);
17170 static inline void
17171 stack_check(rb_execution_context_t *ec)
17172 {
17173 if (!(((ec)->raised_flag & (RAISED_STACKOVERFLOW)) != 0) &&
17174 rb_ec_stack_check(ec)) {
17175 ((ec)->raised_flag |= (RAISED_STACKOVERFLOW));
17176 rb_ec_stack_overflow(ec, 0);
17177 }
17178 }
17179 static void
17180 raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv, VALUE obj,
17181 enum method_missing_reason last_call_status)
17182 {
17183 VALUE exc = rb_eNoMethodError;
17184 VALUE format = 0;
17185 if ((__builtin_expect(!!(argc == 0), 0))) {
17186 rb_raise(rb_eArgError, "no method name given");
17187 }
17188 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))) {
17189 const VALUE e = rb_eArgError;
17190 rb_raise(e, "method name must be a Symbol but %""l""i" "\v"" is given",
17191 rb_obj_class(argv[0]));
17192 }
17193 stack_check(ec);
17194 if (last_call_status & MISSING_PRIVATE) {
17195 format = rb_fstring_new(("private method `%s' called for %s%s%s"), (sizeof("private method `%s' called for %s%s%s" "") - 1));
17196 }
17197 else if (last_call_status & MISSING_PROTECTED) {
17198 format = rb_fstring_new(("protected method `%s' called for %s%s%s"), (sizeof("protected method `%s' called for %s%s%s" "") - 1));
17199 }
17200 else if (last_call_status & MISSING_VCALL) {
17201 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));
17202 exc = rb_eNameError;
17203 }
17204 else if (last_call_status & MISSING_SUPER) {
17205 format = rb_fstring_new(("super: no superclass method `%s' for %s%s%s"), (sizeof("super: no superclass method `%s' for %s%s%s" "") - 1));
17206 }
17207 {
17208 exc = rb_make_no_method_exception(exc, format, obj, argc, argv,
17209 last_call_status & (MISSING_FCALL|MISSING_VCALL));
17210 if (!(last_call_status & MISSING_MISSING)) {
17211 rb_vm_pop_cfunc_frame();
17212 }
17213 rb_exc_raise(exc);
17214 }
17215 }
17216 static void
17217 vm_raise_method_missing(rb_execution_context_t *ec, int argc, const VALUE *argv,
17218 VALUE obj, int call_status)
17219 {
17220 vm_passed_block_handler_set(ec, 0);
17221 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
17222 }
17223 static inline VALUE
17224 method_missing(VALUE obj, ID id, int argc, const VALUE *argv, enum method_missing_reason call_status, int kw_splat)
17225 {
17226 VALUE *nargv, result, work, klass;
17227 rb_execution_context_t *ec = rb_current_execution_context();
17228 VALUE block_handler = vm_passed_block_handler(ec);
17229 const rb_callable_method_entry_t *me;
17230 ec->method_missing_reason = call_status;
17231 if (id == idMethodMissing) {
17232 missing:
17233 raise_method_missing(ec, argc, argv, obj, call_status | MISSING_MISSING);
17234 }
17235 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))));
17236 nargv[0] = (rb_id2sym(id));
17237 ((__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)));
17238 ++argc;
17239 argv = nargv;
17240 klass = rb_class_of((VALUE)(obj));
17241 if (!klass) goto missing;
17242 me = rb_callable_method_entry(klass, idMethodMissing);
17243 if (!me || (int) (((me)->flags & (((VALUE)RUBY_FL_USER6) )) >> ((((VALUE)RUBY_FL_USHIFT) + 4)+2))) goto missing;
17244 vm_passed_block_handler_set(ec, block_handler);
17245 result = rb_vm_call_kw(ec, obj, idMethodMissing, argc, argv, me, kw_splat);
17246 if (work) rb_free_tmp_buffer(&(work));
17247 return result;
17248 }
17249 static rb_control_frame_t *
17250 vm_get_ruby_level_caller_cfp(const rb_execution_context_t *ec, const rb_control_frame_t *cfp)
17251 {
17252 if (VM_FRAME_RUBYFRAME_P(cfp)) {
17253 return (rb_control_frame_t *)cfp;
17254 }
17255 cfp = ((cfp)+1);
17256 while (!RUBY_VM_CONTROL_FRAME_STACK_OVERFLOW_P(ec, cfp)) {
17257 if (VM_FRAME_RUBYFRAME_P(cfp)) {
17258 return (rb_control_frame_t *)cfp;
17259 }
17260 if (VM_ENV_FLAGS(cfp->ep, VM_FRAME_FLAG_PASSED) == 0) {
17261 break;
17262 }
17263 cfp = ((cfp)+1);
17264 }
17265 return 0;
17266 }
17267 static void
17268 rb_vm_pop_cfunc_frame(void)
17269 {
17270 rb_execution_context_t *ec = rb_current_execution_context();
17271 rb_control_frame_t *cfp = ec->cfp;
17272 const rb_callable_method_entry_t *me = rb_vm_frame_method_entry(cfp);
17273 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);
17274 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);
17275 vm_pop_frame(ec, cfp, cfp->ep);
17276 }
17277 static VALUE
17278 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)
17279 {
17280 ((void)0);
17281 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 0);
17282 }
17283 static VALUE
17284 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)
17285 {
17286 ((void)0);
17287 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 1);
17288 }
17289 static VALUE
17290 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)
17291 {
17292 ((void)0);
17293 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 2);
17294 }
17295 static VALUE
17296 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)
17297 {
17298 ((void)0);
17299 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 3);
17300 }
17301 static VALUE
17302 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)
17303 {
17304 ((void)0);
17305 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 4);
17306 }
17307 static VALUE
17308 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)
17309 {
17310 ((void)0);
17311 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 0, 5);
17312 }
17313 static VALUE
17314 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)
17315 {
17316 ((void)0);
17317 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 0);
17318 }
17319 static VALUE
17320 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)
17321 {
17322 ((void)0);
17323 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 1);
17324 }
17325 static VALUE
17326 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)
17327 {
17328 ((void)0);
17329 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 2);
17330 }
17331 static VALUE
17332 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)
17333 {
17334 ((void)0);
17335 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 3);
17336 }
17337 static VALUE
17338 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)
17339 {
17340 ((void)0);
17341 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 4);
17342 }
17343 static VALUE
17344 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)
17345 {
17346 ((void)0);
17347 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 1, 5);
17348 }
17349 static VALUE
17350 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)
17351 {
17352 ((void)0);
17353 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 0);
17354 }
17355 static VALUE
17356 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)
17357 {
17358 ((void)0);
17359 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 1);
17360 }
17361 static VALUE
17362 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)
17363 {
17364 ((void)0);
17365 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 2);
17366 }
17367 static VALUE
17368 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)
17369 {
17370 ((void)0);
17371 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 3);
17372 }
17373 static VALUE
17374 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)
17375 {
17376 ((void)0);
17377 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 4);
17378 }
17379 static VALUE
17380 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)
17381 {
17382 ((void)0);
17383 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 2, 5);
17384 }
17385 static VALUE
17386 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)
17387 {
17388 ((void)0);
17389 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 0);
17390 }
17391 static VALUE
17392 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)
17393 {
17394 ((void)0);
17395 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 1);
17396 }
17397 static VALUE
17398 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)
17399 {
17400 ((void)0);
17401 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 2);
17402 }
17403 static VALUE
17404 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)
17405 {
17406 ((void)0);
17407 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 3);
17408 }
17409 static VALUE
17410 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)
17411 {
17412 ((void)0);
17413 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 4);
17414 }
17415 static VALUE
17416 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)
17417 {
17418 ((void)0);
17419 return vm_call_iseq_setup_normal(ec, cfp, calling, cd->cc.me, 0, 3, 5);
17420 }
17421 static const vm_call_handler vm_call_iseq_handlers[][6] = {
17422 {vm_call_iseq_setup_normal_0start_0params_0locals,
17423 vm_call_iseq_setup_normal_0start_0params_1locals,
17424 vm_call_iseq_setup_normal_0start_0params_2locals,
17425 vm_call_iseq_setup_normal_0start_0params_3locals,
17426 vm_call_iseq_setup_normal_0start_0params_4locals,
17427 vm_call_iseq_setup_normal_0start_0params_5locals},
17428 {vm_call_iseq_setup_normal_0start_1params_0locals,
17429 vm_call_iseq_setup_normal_0start_1params_1locals,
17430 vm_call_iseq_setup_normal_0start_1params_2locals,
17431 vm_call_iseq_setup_normal_0start_1params_3locals,
17432 vm_call_iseq_setup_normal_0start_1params_4locals,
17433 vm_call_iseq_setup_normal_0start_1params_5locals},
17434 {vm_call_iseq_setup_normal_0start_2params_0locals,
17435 vm_call_iseq_setup_normal_0start_2params_1locals,
17436 vm_call_iseq_setup_normal_0start_2params_2locals,
17437 vm_call_iseq_setup_normal_0start_2params_3locals,
17438 vm_call_iseq_setup_normal_0start_2params_4locals,
17439 vm_call_iseq_setup_normal_0start_2params_5locals},
17440 {vm_call_iseq_setup_normal_0start_3params_0locals,
17441 vm_call_iseq_setup_normal_0start_3params_1locals,
17442 vm_call_iseq_setup_normal_0start_3params_2locals,
17443 vm_call_iseq_setup_normal_0start_3params_3locals,
17444 vm_call_iseq_setup_normal_0start_3params_4locals,
17445 vm_call_iseq_setup_normal_0start_3params_5locals}
17446 };
17447 static inline vm_call_handler
17448 vm_call_iseq_setup_func(const struct rb_call_info *ci, const int param_size, const int local_size)
17449 {
17450 if ((__builtin_expect(!!(ci->flag & (0x01 << VM_CALL_TAILCALL_bit)), 0))) {
17451 return &vm_call_iseq_setup_tailcall_0start;
17452 }
17453 else if (0) {
17454 return &vm_call_iseq_setup_normal_0start;
17455 }
17456 else {
17457 if (param_size <= 3 &&
17458 local_size <= 5) {
17459 ((void)0);
17460 return vm_call_iseq_handlers[param_size][local_size];
17461 }
17462 return &vm_call_iseq_setup_normal_0start;
17463 }
17464 }
f_hash
const VALUE int int int int int f_hash
Definition: rb_mjit_min_header-2.7.0.h:6462
rb_yield_values
#define rb_yield_values(argc,...)
Definition: rb_mjit_min_header-2.7.0.h:6584
rb_source_location
VALUE rb_source_location(int *pline)
Definition: vm.c:1360
Init_enc_set_filesystem_encoding
int Init_enc_set_filesystem_encoding(void)
Definition: localeinit.c:119
rb_struct_size
VALUE rb_struct_size(VALUE s)
Definition: struct.c:1294
rb_eEAGAIN
VALUE rb_eEAGAIN
Definition: error.c:54
rb_execution_context_struct::raised_flag
uint8_t raised_flag
Definition: vm_core.h:878
pthread_mutexattr_init
int pthread_mutexattr_init(pthread_mutexattr_t *)
strsep
char * strsep(char **, const char *)
ruby_brace_glob
int ruby_brace_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2659
kwtable
Definition: lex.c:34
rb_utf8_str_new
#define rb_utf8_str_new(str, len)
Definition: rb_mjit_min_header-2.7.0.h:6119
__strcpy_chk
char * __strcpy_chk(char *, const char *, size_t)
RB_DEBUG_COUNTER_heap_xrealloc
@ RB_DEBUG_COUNTER_heap_xrealloc
Definition: rb_mjit_min_header-2.7.0.h:11677
rb_str_concat_literals
VALUE rb_str_concat_literals(size_t, const VALUE *)
Definition: string.c:2974
rb_intern
#define rb_intern(str)
Definition: rb_mjit_min_header-2.7.0.h:5139
rb_thread_shield_wait
VALUE rb_thread_shield_wait(VALUE self)
Definition: thread.c:4806
rb_nativethread_lock_lock
void rb_nativethread_lock_lock(rb_nativethread_lock_t *lock)
Definition: thread.c:445
sqrtf
float sqrtf(float)
NODE_RESCUE
@ NODE_RESCUE
Definition: rb_mjit_min_header-2.7.0.h:8100
idTo_int
@ idTo_int
Definition: rb_mjit_min_header-2.7.0.h:8713
rb_execution_context_struct::protect_tag
struct rb_vm_protect_tag * protect_tag
Definition: vm_core.h:850
getenv
char * getenv(const char *__string)
rb_to_symbol_type
VALUE rb_to_symbol_type(VALUE obj)
Definition: symbol.c:1044
rb_gv_set
VALUE rb_gv_set(const char *, VALUE)
Definition: variable.c:671
fmodf
float fmodf(float, float)
pthread_mutex_destroy
int pthread_mutex_destroy(pthread_mutex_t *)
RB_DEBUG_COUNTER_mjit_cancel_ivar_inline
@ RB_DEBUG_COUNTER_mjit_cancel_ivar_inline
Definition: rb_mjit_min_header-2.7.0.h:11693
YARVINSN_trace_putobject
@ YARVINSN_trace_putobject
Definition: rb_mjit_min_header-2.7.0.h:12091
flock
Definition: rb_mjit_min_header-2.7.0.h:1401
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.0.h:1092
rb_check_symbol
VALUE rb_check_symbol(volatile VALUE *namep)
Definition: symbol.c:952
_fgetc_unlocked_r
int _fgetc_unlocked_r(struct _reent *, FILE *)
RSTRING_EMBED_LEN_MASK
#define RSTRING_EMBED_LEN_MASK
difftime
double difftime(time_t _time2, time_t _time1)
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
rb_parser_end_seen_p
VALUE rb_parser_end_seen_p(VALUE)
Definition: ripper.c:19282
Init_class_hierarchy
void Init_class_hierarchy(void)
Definition: class.c:549
YARVINSN_checkmatch
@ YARVINSN_checkmatch
Definition: rb_mjit_min_header-2.7.0.h:12014
tBt
@ tBt
Definition: rb_mjit_min_header-2.7.0.h:8644
RIMemo::v1
VALUE v1
Definition: internal.h:1127
rb_ary_shift
VALUE rb_ary_shift(VALUE)
Definition: array.c:1294
sigaltstack
Definition: rb_mjit_min_header-2.7.0.h:2300
nextafterl
long double nextafterl(long double, long double)
ynf
float ynf(int, float)
NODE_CASE3
@ NODE_CASE3
Definition: rb_mjit_min_header-2.7.0.h:8087
addr_t
char * addr_t
Definition: rb_mjit_min_header-2.7.0.h:1416
MISSING_PROTECTED
@ MISSING_PROTECTED
Definition: rb_mjit_min_header-2.7.0.h:7845
environ
char ** environ
_reclaim_reent
void _reclaim_reent(struct _reent *)
rb_gc
void rb_gc(void)
Definition: gc.c:8679
rb_big_sq_fast
VALUE rb_big_sq_fast(VALUE x)
Definition: bignum.c:1630
rb_rational_reciprocal
VALUE rb_rational_reciprocal(VALUE x)
Definition: rational.c:1875
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
stack_t
struct sigaltstack stack_t
rb_kwarg_call_data
Definition: vm_core.h:257
__itoa
char * __itoa(int, char *, int)
pthread_mutex_init
int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *)
tName
@ tName
Definition: rb_mjit_min_header-2.7.0.h:8657
pthread_attr_getschedparam
int pthread_attr_getschedparam(const pthread_attr_t *, struct sched_param *)
rb_thread_t
struct rb_thread_struct rb_thread_t
__sFILE64::_cookie
void * _cookie
Definition: rb_mjit_min_header-2.7.0.h:1017
RB_BUILTIN
const struct rb_builtin_function * RB_BUILTIN
Definition: rb_mjit_min_header-2.7.0.h:9682
rb_str_encode_ospath
VALUE rb_str_encode_ospath(VALUE)
Definition: file.c:236
RB_DEBUG_COUNTER_ccf_iseq_fix
@ RB_DEBUG_COUNTER_ccf_iseq_fix
Definition: rb_mjit_min_header-2.7.0.h:11546
rb_symname_p
int rb_symname_p(const char *)
Definition: symbol.c:182
rb_subclass_entry::next
rb_subclass_entry_t * next
Definition: internal.h:1000
ruby_stop
void ruby_stop(int ex)
Calls ruby_cleanup() and exits the process.
Definition: eval.c:287
_reent::_localtime_buf
struct __tm _localtime_buf
Definition: rb_mjit_min_header-2.7.0.h:1083
rb_thread_struct::thread_invoke_type_proc
@ thread_invoke_type_proc
Definition: vm_core.h:977
j0
double j0(double)
ruby_check_sizeof_long_long
char ruby_check_sizeof_long_long[8==sizeof(long long) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.0.h:3997
FPE_INTDIV
#define FPE_INTDIV
Definition: rb_mjit_min_header-2.7.0.h:2196
rb_get_kwargs
int rb_get_kwargs(VALUE keyword_hash, const ID *table, int required, int optional, VALUE *)
Definition: class.c:1886
rb_define_module_function
void rb_define_module_function(VALUE, const char *, VALUE(*)(), int)
strcpy
#define strcpy(dst, src)
Definition: rb_mjit_min_header-2.7.0.h:2853
__cygwin_lock_fini
void __cygwin_lock_fini(_LOCK_T *)
fabsl
long double fabsl(long double)
_reent::_asctime_buf
char _asctime_buf[26]
Definition: rb_mjit_min_header-2.7.0.h:1082
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 *)
ruby_signal_name
const char * ruby_signal_name(int)
Definition: signal.c:310
ID
unsigned long ID
Definition: ruby.h:103
rb_hash_compare_by_id_p
VALUE rb_hash_compare_by_id_p(VALUE hash)
Definition: hash.c:4192
tSingleton_method_removed
@ tSingleton_method_removed
Definition: rb_mjit_min_header-2.7.0.h:8615
idMethod_added
@ idMethod_added
Definition: rb_mjit_min_header-2.7.0.h:8693
rb_ivar_generic_ivtbl
struct st_table * rb_ivar_generic_ivtbl(void)
Definition: variable.c:803
__sFILE::_flags2
int _flags2
Definition: rb_mjit_min_header-2.7.0.h:1006
rb_num2short
short rb_num2short(VALUE)
Definition: numeric.c:3041
_nrand48_r
long _nrand48_r(struct _reent *, unsigned short[3])
rb_define_class
VALUE rb_define_class(const char *, VALUE)
Defines a top-level class.
Definition: class.c:649
rb_waitpid
const VALUE *pid_t rb_waitpid(pid_t pid, int *status, int flags)
sig
int sig
Definition: rb_mjit_min_header-2.7.0.h:10422
RUBY_ID_CLASS
@ RUBY_ID_CLASS
Definition: rb_mjit_min_header-2.7.0.h:8500
_strtoumax_r
uintmax_t _strtoumax_r(struct _reent *, const char *__restrict, char **__restrict, int)
fgetc
int int int int int int int int int fgetc(FILE *)
tanf
float tanf(float)
__compar_fn_t
int(* __compar_fn_t)(const void *, const void *)
Definition: rb_mjit_min_header-2.7.0.h:2561
NODE_ARYPTN
@ NODE_ARYPTN
Definition: rb_mjit_min_header-2.7.0.h:8183
rb_fiber_yield
VALUE rb_fiber_yield(int argc, const VALUE *argv)
Definition: cont.c:2114
YARVINSN_trace_opt_div
@ YARVINSN_trace_opt_div
Definition: rb_mjit_min_header-2.7.0.h:12145
native_thread_data_struct::cond
struct native_thread_data_struct::@162 cond
getgid
gid_t getgid(void)
Definition: win32.c:2779
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
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
rb_ary_dup
VALUE rb_ary_dup(VALUE)
Definition: array.c:2238
strstr
char * strstr(const char *, const char *)
Definition: strstr.c:8
ruby_debug_printf
void ruby_debug_printf(const char *,...) __attribute__((format(printf
f_var
const VALUE int int int int f_var
Definition: rb_mjit_min_header-2.7.0.h:6462
tan
double tan(double)
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.0.h:1011
getppid
pid_t getppid(void)
rb_filesystem_str_new
VALUE rb_filesystem_str_new(const char *, long)
Definition: string.c:1111
_sniprintf_r
int int int int _sniprintf_r(struct _reent *, char *, size_t, const char *,...) __attribute__((__format__(__printf__
ruby_stack_length
size_t ruby_stack_length(VALUE **)
Definition: gc.c:4631
rb_str_cat
VALUE rb_str_cat(VALUE, const char *, long)
Definition: string.c:2812
rb_mutex_lock
VALUE rb_mutex_lock(VALUE mutex)
Definition: thread_sync.c:333
rb_reset_random_seed
void rb_reset_random_seed(void)
Definition: random.c:1498
stat::st_size
off_t st_size
Definition: rb_mjit_min_header-2.7.0.h:2393
YARVINSN_trace_splatarray
@ YARVINSN_trace_splatarray
Definition: rb_mjit_min_header-2.7.0.h:12105
rb_f_raise
VALUE rb_f_raise(int argc, VALUE *argv)
Definition: eval.c:726
_fpstate::swd
__uint16_t swd
Definition: rb_mjit_min_header-2.7.0.h:2018
nextafter
double nextafter(double, double)
Definition: nextafter.c:9
strncasecmp_l
int strncasecmp_l(const char *, const char *, size_t, locale_t)
rb_method_bmethod_struct
Definition: method.h:151
SI_QUEUE
#define SI_QUEUE
Definition: rb_mjit_min_header-2.7.0.h:2186
rb_complex_abs
VALUE rb_complex_abs(VALUE z)
Definition: complex.c:1161
rb_st_clear
void rb_st_clear(st_table *)
rb_id2name
const char * rb_id2name(ID)
Definition: symbol.c:801
void
void
Definition: rb_mjit_min_header-2.7.0.h:13273
RB_DEBUG_COUNTER_theap_alloc
@ RB_DEBUG_COUNTER_theap_alloc
Definition: rb_mjit_min_header-2.7.0.h:11679
rb_cDir
VALUE rb_cDir
Definition: dir.c:439
imemo_ifunc
@ imemo_ifunc
Definition: rb_mjit_min_header-2.7.0.h:7052
_reent::_stdout
__FILE * _stdout
Definition: rb_mjit_min_header-2.7.0.h:1063
clock_setenable_attr
int clock_setenable_attr(clockid_t clock_id, int attr)
itimerspec::it_interval
struct timespec it_interval
Definition: rb_mjit_min_header-2.7.0.h:1258
rb_block::proc
VALUE proc
Definition: vm_core.h:755
RB_DEBUG_COUNTER_frame_C2R
@ RB_DEBUG_COUNTER_frame_C2R
Definition: rb_mjit_min_header-2.7.0.h:11573
expm1f
float expm1f(float)
getopt
int getopt(int, char *const *, const char *)
stat::st_ctim
timestruc_t st_ctim
Definition: rb_mjit_min_header-2.7.0.h:2396
_putc_unlocked_r
int _putc_unlocked_r(struct _reent *, int, FILE *)
_reent::_signal_buf
char _signal_buf[24]
Definition: rb_mjit_min_header-2.7.0.h:1091
infinityf
float infinityf(void)
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
tConst_missing
@ tConst_missing
Definition: rb_mjit_min_header-2.7.0.h:8610
RNode::value
VALUE value
Definition: node.h:154
rb_fd_select
int rb_fd_select(int, rb_fdset_t *, rb_fdset_t *, rb_fdset_t *, struct timeval *)
YARVINSN_trace_checkmatch
@ YARVINSN_trace_checkmatch
Definition: rb_mjit_min_header-2.7.0.h:12117
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_mjit_iseq_func
rb_mjit_iseq_func
Definition: rb_mjit_min_header-2.7.0.h:11718
rb_method_basic_definition_p
#define rb_method_basic_definition_p(klass, mid)
Definition: rb_mjit_min_header-2.7.0.h:7900
idTo_s
@ idTo_s
Definition: rb_mjit_min_header-2.7.0.h:8721
sigtimedwait
int sigtimedwait(const sigset_t *, siginfo_t *, const struct timespec *)
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.0.h:11382
rb_const_get
VALUE rb_const_get(VALUE, ID)
Definition: variable.c:2387
RUBY_T_CLASS
@ RUBY_T_CLASS
Definition: rb_mjit_min_header-2.7.0.h:4328
mjit_add_class_serial
void mjit_add_class_serial(rb_serial_t class_serial)
__pthread_condattr_t
Definition: rb_mjit_min_header-2.7.0.h:1350
tzset
void tzset(void)
rb_hook_list_struct
Definition: vm_core.h:565
BOP_NIL_P
@ BOP_NIL_P
Definition: rb_mjit_min_header-2.7.0.h:9649
rb_vm_cframe_keyword_p
int rb_vm_cframe_keyword_p(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.0.h:11377
idMULT
@ idMULT
Definition: rb_mjit_min_header-2.7.0.h:8559
rb_parser_encoding
VALUE rb_parser_encoding(VALUE)
Definition: ripper.c:19297
YARVINSN_trace_adjuststack
@ YARVINSN_trace_adjuststack
Definition: rb_mjit_min_header-2.7.0.h:12115
rb_mjit_iseq_compile_info
struct rb_mjit_compile_info * rb_mjit_iseq_compile_info(const struct rb_iseq_constant_body *body)
RUBY_NUM_ROUND_HALF_DOWN
@ RUBY_NUM_ROUND_HALF_DOWN
Definition: rb_mjit_min_header-2.7.0.h:7444
rb_cEncodingConverter
VALUE rb_cEncodingConverter
Definition: transcode.c:24
rb_mod_remove_cvar
VALUE rb_mod_remove_cvar(VALUE, VALUE)
Definition: variable.c:3273
RB_DEBUG_COUNTER_mjit_exec_not_compiled
@ RB_DEBUG_COUNTER_mjit_exec_not_compiled
Definition: rb_mjit_min_header-2.7.0.h:11686
pipe2
int pipe2(int __fildes[2], int flags)
fls
int fls(int) __attribute__((__const__))
rb_parser_set_yydebug
VALUE rb_parser_set_yydebug(VALUE, VALUE)
Definition: ripper.c:19329
__strncpy_chk
char * __strncpy_chk(char *, const char *, size_t, size_t)
stat
Definition: rb_mjit_min_header-2.7.0.h:2384
_sigcommune::_si_flags
uint32_t _si_flags
Definition: rb_mjit_min_header-2.7.0.h:2105
_exit
void _exit(int __status) __attribute__((__noreturn__))
rb_blocking_function_t
VALUE rb_blocking_function_t(void *)
Definition: rb_mjit_min_header-2.7.0.h:6162
__sFILE64::_mbstate
_mbstate_t _mbstate
Definition: rb_mjit_min_header-2.7.0.h:1036
rb_check_convert_type_with_id
VALUE rb_check_convert_type_with_id(VALUE, int, const char *, ID)
Definition: object.c:2957
llrint
long long int llrint(double)
getchar
int getchar(void)
pthread_attr_getstack
int pthread_attr_getstack(const pthread_attr_t *, void **, size_t *)
uint_fast8_t
unsigned char uint_fast8_t
Definition: rb_mjit_min_header-2.7.0.h:2922
__len
__inline__ int __len
Definition: rb_mjit_min_header-2.7.0.h:1891
ruby_vm_throw_flags
ruby_vm_throw_flags
Definition: vm_core.h:208
RB_WARN_CATEGORY_DEPRECATED
@ RB_WARN_CATEGORY_DEPRECATED
Definition: rb_mjit_min_header-2.7.0.h:7314
rb_cvar_set
void rb_cvar_set(VALUE, ID, VALUE)
Definition: variable.c:3074
rb_at_exit_list::func
rb_vm_at_exit_func * func
Definition: vm_core.h:556
YARVINSN_concatarray
@ YARVINSN_concatarray
Definition: rb_mjit_min_header-2.7.0.h:12001
rb_dbl_complex_new
VALUE rb_dbl_complex_new(double real, double imag)
Creates a Complex object.
Definition: complex.c:1561
ruby_sighandler_t
void(* ruby_sighandler_t)(int)
Definition: rb_mjit_min_header-2.7.0.h:10421
rb_vm_jump_tag_but_local_jump
void rb_vm_jump_tag_but_local_jump(int state)
Definition: vm.c:1510
acosl
long double acosl(long double)
ldexpf
float ldexpf(float, int)
BOP_LT
@ BOP_LT
Definition: rb_mjit_min_header-2.7.0.h:9641
mjit_cont_free
void mjit_cont_free(struct mjit_cont *cont)
RUBY_ID_SCOPE_MASK
@ RUBY_ID_SCOPE_MASK
Definition: rb_mjit_min_header-2.7.0.h:8504
log2l
long double log2l(long double)
tSingleton_method_added
@ tSingleton_method_added
Definition: rb_mjit_min_header-2.7.0.h:8613
rb_method_call_with_block
VALUE rb_method_call_with_block(int, const VALUE *, VALUE, VALUE)
Definition: proc.c:2297
rb_hash_keys
VALUE rb_hash_keys(VALUE hash)
Definition: hash.c:3334
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
cbrt
double cbrt(double)
Definition: cbrt.c:4
_atexit::_ind
int _ind
Definition: rb_mjit_min_header-2.7.0.h:968
rb_str_hash_cmp
int rb_str_hash_cmp(VALUE, VALUE)
Definition: string.c:3173
restrict
#define restrict
Definition: rb_mjit_min_header-2.7.0.h:80
time_t
long time_t
Definition: rb_mjit_min_header-2.7.0.h:1236
nearbyint
double nearbyint(double)
rb_iseq_location_t
struct rb_iseq_location_struct rb_iseq_location_t
abs
int abs(int)
rb_vm_struct::objspace
struct rb_objspace * objspace
Definition: vm_core.h:651
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
eaccess
int eaccess(const char *__path, int __mode)
Definition: file.c:1460
__sFILE::_w
int _w
Definition: rb_mjit_min_header-2.7.0.h:982
__stack_chk_fail
void __stack_chk_fail(void) __attribute__((__noreturn__))
idEqlP
@ idEqlP
Definition: rb_mjit_min_header-2.7.0.h:8587
rb_include_module
void rb_include_module(VALUE, VALUE)
Definition: class.c:869
rb_ast_add_mark_object
void rb_ast_add_mark_object(rb_ast_t *, VALUE)
Definition: node.c:1395
ruby_rmodule_flags
ruby_rmodule_flags
Definition: ruby.h:954
idUPlus
@ idUPlus
Definition: rb_mjit_min_header-2.7.0.h:8553
RUBY_T_IMEMO
@ RUBY_T_IMEMO
Definition: rb_mjit_min_header-2.7.0.h:4348
atan
double atan(double)
powl
long double powl(long double, long double)
strlwr
char * strlwr(char *)
pthread_attr_init
int pthread_attr_init(pthread_attr_t *)
rb_exc_new
VALUE rb_exc_new(VALUE, const char *, long)
Definition: error.c:959
MISSING_FCALL
@ MISSING_FCALL
Definition: rb_mjit_min_header-2.7.0.h:7846
ruby_check_sizeof_int
char ruby_check_sizeof_int[4==sizeof(int) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.0.h:3995
rb_execarg::fd_dup2_child
VALUE fd_dup2_child
Definition: internal.h:2059
rb_const_defined_from
int rb_const_defined_from(VALUE, ID)
Definition: variable.c:2676
idANDOP
@ idANDOP
Definition: rb_mjit_min_header-2.7.0.h:8580
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)
idMax
@ idMax
Definition: rb_mjit_min_header-2.7.0.h:8685
rb_ivar_set
VALUE rb_ivar_set(VALUE, ID, VALUE)
Definition: variable.c:1300
rb_lcm
VALUE rb_lcm(VALUE x, VALUE y)
Definition: rational.c:1913
rb_require_string
VALUE rb_require_string(VALUE)
Definition: load.c:1102
timezone
Definition: missing.h:67
rb_mod_deprecate_constant
VALUE rb_mod_deprecate_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:3011
rb_gc_update_tbl_refs
void rb_gc_update_tbl_refs(st_table *ptr)
Definition: gc.c:7983
YARVINSN_trace_opt_regexpmatch2
@ YARVINSN_trace_opt_regexpmatch2
Definition: rb_mjit_min_header-2.7.0.h:12165
NODE_IF
@ NODE_IF
Definition: rb_mjit_min_header-2.7.0.h:8083
sys_errlist
char * sys_errlist[]
st_check_for_sizeof_st_index_t
char st_check_for_sizeof_st_index_t[8==(int) sizeof(st_index_t) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.0.h:5370
pthread_barrier_destroy
int pthread_barrier_destroy(pthread_barrier_t *)
ILL_ILLOPC
#define ILL_ILLOPC
Definition: rb_mjit_min_header-2.7.0.h:2188
rb_get_next_signal
int rb_get_next_signal(void)
Definition: signal.c:756
rb_method_entry_arity
int rb_method_entry_arity(const rb_method_entry_t *me)
Definition: proc.c:2543
rb_io_eof
VALUE rb_io_eof(VALUE)
Definition: io.c:2149
YARVINSN_opt_aref_with
@ YARVINSN_opt_aref_with
Definition: rb_mjit_min_header-2.7.0.h:12056
YARVINSN_opt_str_uminus
@ YARVINSN_opt_str_uminus
Definition: rb_mjit_min_header-2.7.0.h:12024
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
list_head::n
struct list_node n
Definition: rb_mjit_min_header-2.7.0.h:8977
stpcpy
#define stpcpy(dst, src)
Definition: rb_mjit_min_header-2.7.0.h:2851
pthread_barrier_wait
int pthread_barrier_wait(pthread_barrier_t *)
rb_str_unlocktmp
VALUE rb_str_unlocktmp(VALUE)
Definition: string.c:2675
rb_method_entry
const rb_method_entry_t * rb_method_entry(VALUE klass, ID id)
Definition: vm_method.c:837
scalbn
double scalbn(double, int)
rb_data_object_wrap
#define rb_data_object_wrap
Definition: rb_mjit_min_header-2.7.0.h:4943
readlink
ssize_t readlink(const char *__restrict __path, char *__restrict __buf, size_t __buflen)
_vasnprintf_r
int char char * _vasnprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_reg_match_last
VALUE rb_reg_match_last(VALUE)
Definition: re.c:1792
rb_execution_context_struct::private_const_reference
VALUE private_const_reference
Definition: vm_core.h:883
rb_execarg::chdir_dir
VALUE chdir_dir
Definition: internal.h:2062
strtok_r
char * strtok_r(char *__restrict, const char *__restrict, char **__restrict)
expf
float expf(float)
__clock_t
unsigned long __clock_t
Definition: rb_mjit_min_header-2.7.0.h:924
rb_str_upto_each
VALUE rb_str_upto_each(VALUE, VALUE, int, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4263
rb_big2str_poweroftwo
VALUE rb_big2str_poweroftwo(VALUE x, int base)
Definition: bignum.c:4921
vars
const VALUE int int int int int int VALUE * vars[]
Definition: rb_mjit_min_header-2.7.0.h:6462
rb_eScriptError
VALUE rb_eScriptError
Definition: error.c:937
pthread_mutexattr_getprotocol
int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *, int *)
rb_ary_delete_same
void rb_ary_delete_same(VALUE, VALUE)
Definition: array.c:3396
NODE_ERRINFO
@ NODE_ERRINFO
Definition: rb_mjit_min_header-2.7.0.h:8177
execv
int execv(const char *__path, char *const __argv[])
RString::ptr
char * ptr
Definition: ruby.h:993
pthread_rwlockattr_setpshared
int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *attr, int pshared)
rb_struct_aref
VALUE rb_struct_aref(VALUE, VALUE)
Definition: struct.c:1064
RTypedData::type
const rb_data_type_t * type
Definition: ruby.h:1170
RUBY_TAG_MASK
@ RUBY_TAG_MASK
Definition: rb_mjit_min_header-2.7.0.h:9432
_signal_r
_sig_func_ptr _signal_r(struct _reent *, int, _sig_func_ptr)
pthread_suspend
int pthread_suspend(pthread_t)
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_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
tTOKEN_INSTANCE_BEGIN
@ tTOKEN_INSTANCE_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8670
rb_mEnumerable
VALUE rb_mEnumerable
Definition: enum.c:20
_reent::_gamma_signgam
int _gamma_signgam
Definition: rb_mjit_min_header-2.7.0.h:1084
rb_objspace_markable_object_p
int rb_objspace_markable_object_p(VALUE obj)
Definition: gc.c:3598
YARVINSN_checktype
@ YARVINSN_checktype
Definition: rb_mjit_min_header-2.7.0.h:12016
RB_DEBUG_COUNTER_ccf_ivar
@ RB_DEBUG_COUNTER_ccf_ivar
Definition: rb_mjit_min_header-2.7.0.h:11551
fdiml
long double fdiml(long double, long double)
reg_cfp
rb_control_frame_t * reg_cfp
Definition: rb_mjit_min_header-2.7.0.h:15146
ruby_options
void * ruby_options(int argc, char **argv)
Processes command line arguments and compiles the Ruby source to execute.
Definition: eval.c:114
rb_genrand_real
double rb_genrand_real(void)
Definition: random.c:122
rb_gvar_val_setter
rb_gvar_setter_t rb_gvar_val_setter
Definition: rb_mjit_min_header-2.7.0.h:5103
rb_iseq_realpath
VALUE rb_iseq_realpath(const rb_iseq_t *iseq)
Definition: iseq.c:1033
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
scanf
int int int int scanf(const char *__restrict,...) __attribute__((__format__(__scanf__
rb_mod_module_eval
VALUE rb_mod_module_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:2067
ruby_safe_level_2_warning
#define ruby_safe_level_2_warning()
fwrite
size_t fwrite(const void *__restrict, size_t _size, size_t _n, FILE *)
rb_cData
VALUE rb_cData
Data class.
Definition: ruby.h:2018
rb_class_inherited
VALUE rb_class_inherited(VALUE, VALUE)
Calls Class::inherited.
Definition: class.c:623
ino_t
__ino_t ino_t
Definition: rb_mjit_min_header-2.7.0.h:1315
rb_obj_not_equal
VALUE rb_obj_not_equal(VALUE obj1, VALUE obj2)
Definition: object.c:187
__pthread_barrier_t
Definition: rb_mjit_min_header-2.7.0.h:1353
strtoull
unsigned long long strtoull(const char *__restrict __n, char **__restrict __end_PTR, int __base)
truncf
float truncf(float)
setgid
int setgid(gid_t __gid)
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:837
ruby_mimmalloc
void * ruby_mimmalloc(size_t size) __attribute__((__malloc__))
Definition: gc.c:10187
rb_ast_struct::body
rb_ast_body_t body
Definition: node.h:402
rb_vm_mark
void rb_vm_mark(void *ptr)
Definition: vm.c:2243
scalbnf
float scalbnf(float, int)
vm_call_flag_bits
vm_call_flag_bits
Definition: vm_core.h:1085
range
#define range(low, item, hi)
Definition: date_strftime.c:21
isnanf
int isnanf(float)
rb_builtin_function
Definition: builtin.h:6
RArray::heap
struct RArray::@97::@98 heap
fdim
double fdim(double, double)
sigrelse
int sigrelse(int)
tLength
@ tLength
Definition: rb_mjit_min_header-2.7.0.h:8618
rb_exc_new_str
VALUE rb_exc_new_str(VALUE, VALUE)
Definition: error.c:972
lgammaf_r
float lgammaf_r(float, int *)
rb_add_refined_method_entry
void rb_add_refined_method_entry(VALUE refined_class, ID mid)
Definition: vm_method.c:491
NODE_REDO
@ NODE_REDO
Definition: rb_mjit_min_header-2.7.0.h:8097
VM_CALL_BLOCKISEQ_bit
@ VM_CALL_BLOCKISEQ_bit
Definition: rb_mjit_min_header-2.7.0.h:10010
rb_class_modify_check
void rb_class_modify_check(VALUE)
Asserts that klass is not a frozen class.
Definition: eval.c:437
quick_exit
_Noreturn void quick_exit(int)
RB_DEBUG_COUNTER_ccf_attrset
@ RB_DEBUG_COUNTER_ccf_attrset
Definition: rb_mjit_min_header-2.7.0.h:11552
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
putc_unlocked
int putc_unlocked(int, FILE *)
rb_execarg::env_modification
VALUE env_modification
Definition: internal.h:2060
st_table::num_entries
st_index_t num_entries
Definition: st.h:86
_mktemp_r
char * _mktemp_r(struct _reent *, char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
fstat
int fstat(int __fd, struct stat *__sbuf)
getlogin
char * getlogin(void)
Definition: win32.c:881
RB_DEBUG_COUNTER_frame_push_method
@ RB_DEBUG_COUNTER_frame_push_method
Definition: rb_mjit_min_header-2.7.0.h:11561
YARVINSN_opt_newarray_max
@ YARVINSN_opt_newarray_max
Definition: rb_mjit_min_header-2.7.0.h:12025
idEach
@ idEach
Definition: rb_mjit_min_header-2.7.0.h:8703
u_int
unsigned int u_int
Definition: rb_mjit_min_header-2.7.0.h:1291
rb_vm_struct::thread_report_on_exception
unsigned int thread_report_on_exception
Definition: vm_core.h:604
pthread_setschedparam
int pthread_setschedparam(pthread_t, int, const struct sched_param *)
rb_ary_freeze
VALUE rb_ary_freeze(VALUE)
Definition: array.c:648
env
#define env
rb_vm_env_local_variables
VALUE rb_vm_env_local_variables(const rb_env_t *env)
Definition: vm.c:840
rb_str_buf_new
VALUE rb_str_buf_new(long)
Definition: string.c:1315
tanhl
long double tanhl(long double)
rb_opts_exception_p
int rb_opts_exception_p(VALUE opts, int default_value)
Definition: object.c:3125
RB_DEBUG_COUNTER_obj_module_ptr
@ RB_DEBUG_COUNTER_obj_module_ptr
Definition: rb_mjit_min_header-2.7.0.h:11653
rb_big_gt
VALUE rb_big_gt(VALUE x, VALUE y)
Definition: bignum.c:5489
__pthread_mutexattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1349
rb_gc_disable
VALUE rb_gc_disable(void)
Definition: gc.c:9235
_puts_r
int _puts_r(struct _reent *, const char *)
rb_vm_struct::waiting_grps
struct list_head waiting_grps
Definition: vm_core.h:593
RB_DEBUG_COUNTER_frame_R2C
@ RB_DEBUG_COUNTER_frame_R2C
Definition: rb_mjit_min_header-2.7.0.h:11571
rb_thread_struct::invoke_type
enum rb_thread_struct::@190 invoke_type
tException
@ tException
Definition: rb_mjit_min_header-2.7.0.h:8648
_mbstate_t
Definition: rb_mjit_min_header-2.7.0.h:912
_Bigint::_next
struct _Bigint * _next
Definition: rb_mjit_min_header-2.7.0.h:943
YARVINSN_opt_le
@ YARVINSN_opt_le
Definition: rb_mjit_min_header-2.7.0.h:12047
clock_t
unsigned long clock_t
Definition: rb_mjit_min_header-2.7.0.h:1303
rb_ary_pattern_info::pre_args
NODE * pre_args
Definition: node.h:454
rb_int_idiv
VALUE rb_int_idiv(VALUE x, VALUE y)
Definition: numeric.c:3843
pthread_yield
int pthread_yield(void)
chroot
int chroot(const char *__path)
rb_mod_method_arity
int rb_mod_method_arity(VALUE, ID)
Definition: proc.c:2632
exp10
double exp10(double)
posix_openpt
int posix_openpt(int)
rb_iseq_struct
Definition: vm_core.h:456
rb_complex_pow
VALUE rb_complex_pow(VALUE base, VALUE exp)
Definition: complex.c:985
_fseeko_r
int _fseeko_r(struct _reent *, FILE *, _off_t, int)
YARVINSN_trace_opt_aref
@ YARVINSN_trace_opt_aref
Definition: rb_mjit_min_header-2.7.0.h:12156
YARVINSN_trace_putself
@ YARVINSN_trace_putself
Definition: rb_mjit_min_header-2.7.0.h:12090
ruby_value_type
ruby_value_type
Definition: ruby.h:486
st_table::size_ind
unsigned char size_ind
Definition: st.h:81
RHASH_PASS_AS_KEYWORDS
@ RHASH_PASS_AS_KEYWORDS
Definition: rb_mjit_min_header-2.7.0.h:6857
RB_DEBUG_COUNTER_gc_minor_capi
@ RB_DEBUG_COUNTER_gc_minor_capi
Definition: rb_mjit_min_header-2.7.0.h:11596
wcstoimax_l
intmax_t wcstoimax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t)
__tm::__tm_min
int __tm_min
Definition: rb_mjit_min_header-2.7.0.h:950
pthread_mutex_unlock
int pthread_mutex_unlock(pthread_mutex_t *)
rb_method_definition_struct::method_serial
uintptr_t method_serial
Definition: method.h:180
rb_cUnboundMethod
VALUE rb_cUnboundMethod
Definition: ruby.h:2050
memmem
void * memmem(const void *, size_t, const void *, size_t)
rb_class_has_methods
int rb_class_has_methods(VALUE c)
Definition: class.c:2201
asinhf
float asinhf(float)
rb_big2str
VALUE rb_big2str(VALUE, int)
Definition: bignum.c:5091
rb_big2dbl
double rb_big2dbl(VALUE)
Definition: bignum.c:5310
strtoumax
uintmax_t strtoumax(const char *__restrict, char **__restrict, int)
_mkstemp_r
int _mkstemp_r(struct _reent *, char *)
_mkostemp_r
int _mkostemp_r(struct _reent *, char *, int)
rb_mutex_new
VALUE rb_mutex_new(void)
Definition: thread_sync.c:165
__size_t
#define __size_t
Definition: rb_mjit_min_header-2.7.0.h:665
MEMO::flags
VALUE flags
Definition: internal.h:1279
div_t::rem
int rem
Definition: rb_mjit_min_header-2.7.0.h:2548
YARVINSN_setblockparam
@ YARVINSN_setblockparam
Definition: rb_mjit_min_header-2.7.0.h:11974
MISSING_NOENTRY
@ MISSING_NOENTRY
Definition: rb_mjit_min_header-2.7.0.h:7843
rb_const_defined
int rb_const_defined(VALUE, ID)
Definition: variable.c:2682
rb_io_write
VALUE rb_io_write(VALUE, VALUE)
Definition: io.c:1804
rb_math_atan2
VALUE rb_math_atan2(VALUE, VALUE)
in_addr_t
__uint32_t in_addr_t
Definition: rb_mjit_min_header-2.7.0.h:1282
roundl
long double roundl(long double)
YARVINSN_trace_getspecial
@ YARVINSN_trace_getspecial
Definition: rb_mjit_min_header-2.7.0.h:12079
_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__
VM_METHOD_TYPE_OPTIMIZED
@ VM_METHOD_TYPE_OPTIMIZED
Definition: rb_mjit_min_header-2.7.0.h:8837
POSTPONED_JOB_INTERRUPT_MASK
@ POSTPONED_JOB_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.0.h:10569
tgamma
double tgamma(double)
Definition: tgamma.c:66
RFloat
Definition: internal.h:798
rb_thread_struct::arg
void * arg
Definition: vm_core.h:971
__tzrule_struct::n
int n
Definition: rb_mjit_min_header-2.7.0.h:1979
close
int close(int __fildes)
RUBY_TAG_RETRY
@ RUBY_TAG_RETRY
Definition: rb_mjit_min_header-2.7.0.h:9427
VM_SPECIAL_OBJECT_VMCORE
@ VM_SPECIAL_OBJECT_VMCORE
Definition: rb_mjit_min_header-2.7.0.h:10032
clockid_t
__clockid_t clockid_t
Definition: rb_mjit_min_header-2.7.0.h:1335
rb_mutex_sleep
VALUE rb_mutex_sleep(VALUE self, VALUE timeout)
Definition: thread_sync.c:465
rb_gc_register_mark_object
void rb_gc_register_mark_object(VALUE)
Definition: gc.c:7063
lcong48
void lcong48(unsigned short[7])
path
VALUE path
Definition: rb_mjit_min_header-2.7.0.h:7351
_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__
ruby_malloc_size_overflow
void ruby_malloc_size_overflow(size_t count, size_t elsize)
Definition: gc.c:10074
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
rb_str_buf_cat2
#define rb_str_buf_cat2
Definition: rb_mjit_min_header-2.7.0.h:6136
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)
_reent::_unused
struct _reent::@212::@214 _unused
rb_define_module_under
VALUE rb_define_module_under(VALUE, const char *)
Definition: class.c:797
rb_obj_is_fiber
VALUE rb_obj_is_fiber(VALUE)
Definition: cont.c:1041
rb_thread_struct::calling
struct rb_calling_info * calling
Definition: vm_core.h:920
frexpl
long double frexpl(long double, int *)
remainderf
float remainderf(float, float)
rb_method_cfunc_struct::invoker
VALUE(* invoker)(VALUE recv, int argc, const VALUE *argv, VALUE(*func)(ANYARGS))
Definition: method.h:133
strtoimax_l
intmax_t strtoimax_l(const char *__restrict, char **_restrict, int, locale_t)
setbuf
void setbuf(FILE *__restrict, char *__restrict)
exp10l
float exp10l(float)
RBignum::len
size_t len
Definition: internal.h:753
RBignum::basic
struct RBasic basic
Definition: internal.h:750
rb_global_vm_lock_t
struct rb_global_vm_lock_struct rb_global_vm_lock_t
rb_iseq_new_with_callback_callback_func
Definition: vm_core.h:1018
idCmp
@ idCmp
Definition: rb_mjit_min_header-2.7.0.h:8556
rb_mod_constants
VALUE rb_mod_constants(int, const VALUE *, VALUE)
Definition: variable.c:2626
ruby_show_version
void ruby_show_version(void)
Prints the version information of the CRuby interpreter to stdout.
Definition: version.c:119
BOP_MAX
@ BOP_MAX
Definition: rb_mjit_min_header-2.7.0.h:9658
rb_classext_struct::subclasses
rb_subclass_entry_t * subclasses
Definition: internal.h:1028
rb_f_require
VALUE rb_f_require(VALUE, VALUE)
Definition: load.c:809
_wctomb_r
int _wctomb_r(struct _reent *, char *, wchar_t, _mbstate_t *)
idCOLON2
@ idCOLON2
Definition: rb_mjit_min_header-2.7.0.h:8579
tm::tm_min
int tm_min
Definition: rb_mjit_min_header-2.7.0.h:1935
swab
void swab(const void *__restrict, void *__restrict, ssize_t)
diprintf
int int int int int int int int char char int diprintf(int, const char *,...) __attribute__((__format__(__printf__
qsort_r
void qsort_r(void *__base, size_t __nmemb, size_t __size, int(*_compar)(const void *, const void *, void *), void *__thunk)
YARVINSN_branchnil
@ YARVINSN_branchnil
Definition: rb_mjit_min_header-2.7.0.h:12034
ruby_xmalloc2
void * ruby_xmalloc2(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
tLocals
@ tLocals
Definition: rb_mjit_min_header-2.7.0.h:8649
rb_warn
void rb_warn(const char *fmt,...)
Definition: error.c:313
isinff
int isinff(float)
iseq_compile_data_storage::buff
char buff[FLEX_ARY_LEN]
Definition: iseq.h:278
ST_CHECK
@ ST_CHECK
Definition: rb_mjit_min_header-2.7.0.h:5390
rb_vm_set_progname
void rb_vm_set_progname(VALUE filename)
Definition: vm.c:3289
_putenv_r
int _putenv_r(struct _reent *, char *__string)
rb_f_send
VALUE rb_f_send(int argc, VALUE *argv, VALUE recv)
Definition: vm_eval.c:1188
obj2
VALUE obj2
Definition: rb_mjit_min_header-2.7.0.h:7583
RComplex::basic
struct RBasic basic
Definition: internal.h:806
daddr_t
long daddr_t
Definition: rb_mjit_min_header-2.7.0.h:1306
mjit_call_p
_Bool mjit_call_p
Definition: mjit_worker.c:180
rb_cv_set
void rb_cv_set(VALUE, const char *, VALUE)
Definition: variable.c:3131
rb_type_str
const char * rb_type_str(enum ruby_value_type type)
Definition: vm_eval.c:572
ruby_exec_node
int ruby_exec_node(void *n)
Runs the given compiled source.
Definition: eval.c:340
rb_block_given_p
int rb_block_given_p(void)
Determines if the current method is given a block.
Definition: eval.c:897
__ssp_real_wctomb
int __ssp_real_wctomb(char *__buf, wchar_t __wc) __asm__("" "wctomb")
sigevent::sigev_signo
int sigev_signo
Definition: rb_mjit_min_header-2.7.0.h:2089
fork
pid_t fork(void)
YARVINSN_getblockparam
@ YARVINSN_getblockparam
Definition: rb_mjit_min_header-2.7.0.h:11973
RUBY_FL_FREEZE
@ RUBY_FL_FREEZE
Definition: ruby.h:851
_reent::_new
union _reent::@212 _new
rb_bug_reporter_add
int rb_bug_reporter_add(void(*func)(FILE *, void *), void *data)
Definition: error.c:455
rb_objspace_internal_object_p
int rb_objspace_internal_object_p(VALUE obj)
Definition: gc.c:3095
rb_global_entry::var
struct rb_global_variable * var
Definition: internal.h:1351
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
native_thread_data_t
struct native_thread_data_struct native_thread_data_t
rb_str_eql
VALUE rb_str_eql(VALUE str1, VALUE str2)
Definition: string.c:3287
setusershell
void setusershell(void)
tempnam
char * tempnam(const char *, const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
strptime_l
char * strptime_l(const char *__restrict, const char *__restrict, struct tm *__restrict, locale_t)
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
BUS_ADRALN
#define BUS_ADRALN
Definition: rb_mjit_min_header-2.7.0.h:2206
ar_hint_t
unsigned char ar_hint_t
Definition: rb_mjit_min_header-2.7.0.h:6887
rb_current_receiver
VALUE rb_current_receiver(void)
Definition: vm_eval.c:314
YARVINSN_trace_opt_mod
@ YARVINSN_trace_opt_mod
Definition: rb_mjit_min_header-2.7.0.h:12146
rb_complex_polar
VALUE rb_complex_polar(VALUE x, VALUE y)
Definition: complex.c:1539
rb_mjit_unit
Definition: mjit_worker.c:126
rb_gc_start
VALUE rb_gc_start(void)
Definition: gc.c:8672
siginfo_t::si_errno
int si_errno
Definition: rb_mjit_min_header-2.7.0.h:2118
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
rb_io_printf
VALUE rb_io_printf(int, const VALUE *, VALUE)
Definition: io.c:7505
rb_provide
void rb_provide(const char *)
Definition: load.c:563
siginfo_t
Definition: rb_mjit_min_header-2.7.0.h:2112
rb_data_type_struct::dmark
void(* dmark)(void *)
Definition: ruby.h:1151
j1
double j1(double)
rb_immutable_obj_clone
VALUE rb_immutable_obj_clone(int, VALUE *, VALUE)
Definition: object.c:346
rb_method_definition_struct::attr
rb_method_attr_t attr
Definition: method.h:171
size_t
long unsigned int size_t
Definition: rb_mjit_min_header-2.7.0.h:666
rb_str_freeze
VALUE rb_str_freeze(VALUE)
Definition: string.c:2616
double_t
double double_t
Definition: rb_mjit_min_header-2.7.0.h:3651
rb_vm_struct::redefined_flag
short redefined_flag[BOP_LAST_]
Definition: vm_core.h:669
RUBY_T_ARRAY
@ RUBY_T_ARRAY
Definition: rb_mjit_min_header-2.7.0.h:4333
rb_gvar_var_marker
rb_gvar_marker_t rb_gvar_var_marker
Definition: rb_mjit_min_header-2.7.0.h:5107
pthread_rwlock_rdlock
int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock)
idInitialize_copy
@ idInitialize_copy
Definition: rb_mjit_min_header-2.7.0.h:8710
rb_ec_backtrace_object
VALUE rb_ec_backtrace_object(const rb_execution_context_t *ec)
Definition: vm_backtrace.c:557
gmtime_r
struct tm * gmtime_r(const time_t *__restrict, struct tm *__restrict)
Definition: win32.c:7838
uint32_t
__uint32_t uint32_t
Definition: rb_mjit_min_header-2.7.0.h:1177
ruby_xmalloc
void * ruby_xmalloc(size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1)))
Definition: gc.c:11950
getloadavg
int getloadavg(double loadavg[], int nelem)
rb_xmalloc_mul_add_mul
void * rb_xmalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10170
rb_thread_main
VALUE rb_thread_main(void)
Definition: thread.c:2697
rb_float_div
VALUE rb_float_div(VALUE x, VALUE y)
Definition: numeric.c:1126
rb_singleton_class_internal_p
int rb_singleton_class_internal_p(VALUE sklass)
Definition: class.c:455
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__
rb_mGC
VALUE rb_mGC
Definition: gc.c:1000
RB_DEBUG_COUNTER_gc_minor_method
@ RB_DEBUG_COUNTER_gc_minor_method
Definition: rb_mjit_min_header-2.7.0.h:11595
rb_hash_size_num
size_t rb_hash_size_num(VALUE hash)
Definition: hash.c:2872
__path
__inline__ const char *__restrict __path
Definition: rb_mjit_min_header-2.7.0.h:3605
YARVINSN_opt_eq
@ YARVINSN_opt_eq
Definition: rb_mjit_min_header-2.7.0.h:12044
sched_getcpu
int sched_getcpu(void)
rb_encdb_replicate
int rb_encdb_replicate(const char *alias, const char *orig)
Definition: encoding.c:450
rb_proc_exec
int rb_proc_exec(const char *)
Definition: process.c:1665
rb_Complex
VALUE rb_Complex(VALUE, VALUE)
Definition: complex.c:1545
YARVINSN_trace_setglobal
@ YARVINSN_trace_setglobal
Definition: rb_mjit_min_header-2.7.0.h:12088
pthread_barrierattr_destroy
int pthread_barrierattr_destroy(pthread_barrierattr_t *)
arg_setup_block
@ arg_setup_block
Definition: rb_mjit_min_header-2.7.0.h:13523
rb_threadptr_unlock_all_locking_mutexes
void rb_threadptr_unlock_all_locking_mutexes(rb_thread_t *th)
Definition: thread.c:542
tTOKEN_CLASS_END
@ tTOKEN_CLASS_END
Definition: rb_mjit_min_header-2.7.0.h:8680
rb_time_interval
struct timeval rb_time_interval(VALUE num)
Definition: time.c:2669
__tzinfo_struct::__tzyear
int __tzyear
Definition: rb_mjit_min_header-2.7.0.h:1988
rb_nativethread_lock_destroy
void rb_nativethread_lock_destroy(rb_nativethread_lock_t *lock)
Definition: thread.c:439
imemo_svar
@ imemo_svar
Definition: rb_mjit_min_header-2.7.0.h:7050
rb_classext_struct::iv_tbl
struct st_table * iv_tbl
Definition: internal.h:1022
rb_realpath_internal
VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict)
Definition: file.c:4409
rb_cNumeric
VALUE rb_cNumeric
Definition: ruby.h:2037
ruby_rvalue_flags
ruby_rvalue_flags
Definition: ruby.h:909
clearerr
#define clearerr(p)
Definition: rb_mjit_min_header-2.7.0.h:1831
idGTGT
@ idGTGT
Definition: rb_mjit_min_header-2.7.0.h:8563
rb_execution_context_struct::local_storage
st_table * local_storage
Definition: vm_core.h:860
rb_funcallv_kw
VALUE rb_funcallv_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:962
rb_range_new
VALUE rb_range_new(VALUE, VALUE, int)
Definition: range.c:52
rb_iseq_constant_body::has_lead
unsigned int has_lead
Definition: vm_core.h:352
rb_scope_visibility_set
void rb_scope_visibility_set(rb_method_visibility_t)
Definition: vm_method.c:1138
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
cbase
VALUE cbase
Definition: rb_mjit_min_header-2.7.0.h:16133
YARVINSN_getlocal_WC_1
@ YARVINSN_getlocal_WC_1
Definition: rb_mjit_min_header-2.7.0.h:12068
rb_autoload_str
void rb_autoload_str(VALUE mod, ID id, VALUE file)
Definition: variable.c:1933
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
tFreeze
@ tFreeze
Definition: rb_mjit_min_header-2.7.0.h:8606
rb_timespec_now
void rb_timespec_now(struct timespec *)
Definition: time.c:1873
mkdtemp
char * mkdtemp(char *)
rb_complex_uminus
VALUE rb_complex_uminus(VALUE z)
Definition: complex.c:758
__sFILE::_write
_ssize_t(* _write)(struct _reent *, void *, const char *, size_t)
Definition: rb_mjit_min_header-2.7.0.h:990
rb_yield_values_kw
VALUE rb_yield_values_kw(int n, const VALUE *argv, int kw_splat)
Definition: vm_eval.c:1277
rb_ary_new_from_args
#define rb_ary_new_from_args(n,...)
Definition: rb_mjit_min_header-2.7.0.h:7214
strncasecmp
int strncasecmp(const char *, const char *, size_t) __attribute__((__pure__))
vm_ifunc_argc::max
int max
Definition: internal.h:1210
VM_FRAME_MAGIC_BLOCK
@ VM_FRAME_MAGIC_BLOCK
Definition: rb_mjit_min_header-2.7.0.h:10058
vm_ifunc_argc::min
int min
Definition: internal.h:1210
rb_big_norm
VALUE rb_big_norm(VALUE)
Definition: bignum.c:3152
rb_gvar_marker_t
void rb_gvar_marker_t(VALUE *var)
Definition: rb_mjit_min_header-2.7.0.h:5098
div_t
Definition: rb_mjit_min_header-2.7.0.h:2545
rb_scan_args
#define rb_scan_args(argc, argvp, fmt,...)
Definition: rb_mjit_min_header-2.7.0.h:6372
VM_DEFINECLASS_TYPE_MASK
@ VM_DEFINECLASS_TYPE_MASK
Definition: rb_mjit_min_header-2.7.0.h:9935
rb_iseq_constant_body::table
const ID * table
Definition: vm_core.h:394
int_least64_t
__int_least64_t int_least64_t
Definition: rb_mjit_min_header-2.7.0.h:2918
pthread_rwlock_destroy
int pthread_rwlock_destroy(pthread_rwlock_t *rwlock)
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
rb_hash_dup
VALUE rb_hash_dup(VALUE)
Definition: hash.c:1537
rb_fix2short
short rb_fix2short(VALUE)
Definition: numeric.c:3050
marker
const VALUE VALUE VALUE marker
Definition: rb_mjit_min_header-2.7.0.h:5742
isatty
int isatty(int __fildes)
rb_vm_ep_local_ep
const VALUE * rb_vm_ep_local_ep(const VALUE *ep)
Definition: rb_mjit_min_header-2.7.0.h:11354
_uc_fpxreg::padding
__uint16_t padding[3]
Definition: rb_mjit_min_header-2.7.0.h:2010
__fdlibm_version
__fdlibm_version
Definition: rb_mjit_min_header-2.7.0.h:3891
rb_eStopIteration
VALUE rb_eStopIteration
Definition: enumerator.c:124
fileno_unlocked
int fileno_unlocked(FILE *)
_fpstate::mxcr_mask
__uint32_t mxcr_mask
Definition: rb_mjit_min_header-2.7.0.h:2024
rb_data_type_struct::reserved
void * reserved[1]
Definition: ruby.h:1155
__sFILE::_lock
_flock_t _lock
Definition: rb_mjit_min_header-2.7.0.h:1004
rb_parser_realloc
void * rb_parser_realloc(struct parser_params *, void *, size_t)
Definition: ripper.c:19398
log10l
long double log10l(long double)
rb_nmin_run
VALUE rb_nmin_run(VALUE obj, VALUE num, int by, int rev, int ary)
Definition: enum.c:1568
rb_big_even_p
VALUE rb_big_even_p(VALUE)
Definition: bignum.c:6840
RRational::num
VALUE num
Definition: internal.h:790
rb_st_keys
st_index_t rb_st_keys(st_table *table, st_data_t *keys, st_index_t size)
idTo_io
@ idTo_io
Definition: rb_mjit_min_header-2.7.0.h:8719
putchar_unlocked
#define putchar_unlocked(_c)
Definition: rb_mjit_min_header-2.7.0.h:1850
YARVINSN_trace_opt_lt
@ YARVINSN_trace_opt_lt
Definition: rb_mjit_min_header-2.7.0.h:12149
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
_reent::_atexit
struct _atexit * _atexit
Definition: rb_mjit_min_header-2.7.0.h:1107
setregid
int setregid(gid_t __rgid, gid_t __egid)
tNUMPARAM_8
@ tNUMPARAM_8
Definition: rb_mjit_min_header-2.7.0.h:8667
NODE_OP_ASGN1
@ NODE_OP_ASGN1
Definition: rb_mjit_min_header-2.7.0.h:8113
YARVINSN_trace_toregexp
@ YARVINSN_trace_toregexp
Definition: rb_mjit_min_header-2.7.0.h:12097
RUBY_FL_UNTRUSTED
@ RUBY_FL_UNTRUSTED
Definition: ruby.h:848
vfork
pid_t vfork(void)
sigaction
Definition: rb_mjit_min_header-2.7.0.h:2225
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
rb_block_min_max_arity
int rb_block_min_max_arity(int *max)
Definition: proc.c:1178
MEMO::v1
const VALUE v1
Definition: internal.h:1281
rb_mComparable
VALUE rb_mComparable
Definition: compar.c:16
getpt
int getpt(void)
stat::st_uid
uid_t st_uid
Definition: rb_mjit_min_header-2.7.0.h:2390
__sFILE::_w
size_t _w
Definition: vsnprintf.c:174
ISEQ
rb_iseq_t * ISEQ
Definition: rb_mjit_min_header-2.7.0.h:11943
VM_FRAME_MAGIC_MASK
@ VM_FRAME_MAGIC_MASK
Definition: rb_mjit_min_header-2.7.0.h:10066
rb_to_symbol
VALUE rb_to_symbol(VALUE name)
Definition: string.c:11156
rb_iseq_constant_body::jit_unit
struct rb_mjit_unit * jit_unit
Definition: rb_mjit_min_header-2.7.0.h:9595
idIntern
@ idIntern
Definition: rb_mjit_min_header-2.7.0.h:8689
RNode::node
struct RNode * node
Definition: node.h:152
rb_call_info_kw_arg::keywords
VALUE keywords[1]
Definition: vm_core.h:242
iseq_inline_iv_cache_entry
Definition: vm_core.h:226
rb_fix2str
VALUE rb_fix2str(VALUE, int)
Definition: numeric.c:3508
RB_DEBUG_COUNTER_obj_hash_empty
@ RB_DEBUG_COUNTER_obj_hash_empty
Definition: rb_mjit_min_header-2.7.0.h:11628
pthread_attr_getdetachstate
int pthread_attr_getdetachstate(const pthread_attr_t *, int *)
idNOT
@ idNOT
Definition: rb_mjit_min_header-2.7.0.h:8731
flsl
int flsl(long) __attribute__((__const__))
rb_hash_st_table_set
void rb_hash_st_table_set(VALUE hash, st_table *st)
Definition: hash.c:558
lrintf
long int lrintf(float)
rb_hash_uint32
#define rb_hash_uint32(h, i)
Definition: rb_mjit_min_header-2.7.0.h:6092
localtime
struct tm * localtime(const time_t *_timer)
rb_stderr
VALUE rb_stderr
Definition: rb_mjit_min_header-2.7.0.h:5324
llroundl
long long int llroundl(long double)
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:8687
RObject
Definition: ruby.h:922
rb_int128t2big
VALUE rb_int128t2big(__int128 n)
rb_print_undef
void rb_print_undef(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:379
rb_reg_options
int rb_reg_options(VALUE)
Definition: re.c:3578
rb_gvar_undef_setter
rb_gvar_setter_t rb_gvar_undef_setter
Definition: rb_mjit_min_header-2.7.0.h:5100
pthread_rwlock_unlock
int pthread_rwlock_unlock(pthread_rwlock_t *rwlock)
rb_thread_shield_release
VALUE rb_thread_shield_release(VALUE self)
Definition: thread.c:4835
fflush_unlocked
int fflush_unlocked(FILE *)
flock::l_whence
short l_whence
Definition: rb_mjit_min_header-2.7.0.h:1403
RB_DEBUG_COUNTER_mc_miss_by_visi
@ RB_DEBUG_COUNTER_mc_miss_by_visi
Definition: rb_mjit_min_header-2.7.0.h:11539
execvp
int execvp(const char *__file, char *const __argv[])
atanl
long double atanl(long double)
rb_vm_thread_backtrace_locations
VALUE rb_vm_thread_backtrace_locations(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:966
block_handler_type_symbol
@ block_handler_type_symbol
Definition: rb_mjit_min_header-2.7.0.h:9778
rb_f_abort
VALUE rb_f_abort(int argc, const VALUE *argv)
Definition: process.c:4277
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.0.h:14544
rb_call_cache::me
const struct rb_callable_method_entry_struct * me
Definition: internal.h:2373
tPRESERVED_ID_BEGIN
@ tPRESERVED_ID_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8583
rb_ary_shared_with_p
VALUE rb_ary_shared_with_p(VALUE, VALUE)
Definition: array.c:661
__uint8_t
unsigned char __uint8_t
Definition: rb_mjit_min_header-2.7.0.h:621
fsblkcnt_t
__fsblkcnt_t fsblkcnt_t
Definition: rb_mjit_min_header-2.7.0.h:1310
DEFINED_NIL
@ DEFINED_NIL
Definition: rb_mjit_min_header-2.7.0.h:10881
pthread_attr_getstacksize
int pthread_attr_getstacksize(const pthread_attr_t *, size_t *)
YARVINSN_opt_size
@ YARVINSN_opt_size
Definition: rb_mjit_min_header-2.7.0.h:12058
RAISED_STACKOVERFLOW
@ RAISED_STACKOVERFLOW
Definition: rb_mjit_min_header-2.7.0.h:11181
_mkstemps_r
int _mkstemps_r(struct _reent *, char *, int)
rb_io_getbyte
VALUE rb_io_getbyte(VALUE)
Definition: io.c:4215
vm_ifunc::data
const void * data
Definition: internal.h:1219
YARVINSN_trace_getlocal_WC_1
@ YARVINSN_trace_getlocal_WC_1
Definition: rb_mjit_min_header-2.7.0.h:12171
RB_DEBUG_COUNTER_obj_file_ptr
@ RB_DEBUG_COUNTER_obj_file_ptr
Definition: rb_mjit_min_header-2.7.0.h:11660
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_obj_is_proc
VALUE rb_obj_is_proc(VALUE)
Definition: proc.c:152
RHash::ifnone
const VALUE ifnone
Definition: internal.h:893
llround
long long int llround(double)
setgroups
int setgroups(int ngroups, const gid_t *grouplist)
idNUMPARAM_7
@ idNUMPARAM_7
Definition: rb_mjit_min_header-2.7.0.h:8747
rb_enumeratorize
VALUE rb_enumeratorize(VALUE, VALUE, int, const VALUE *)
Definition: enumerator.c:516
_mbstate_t::__count
int __count
Definition: rb_mjit_min_header-2.7.0.h:914
crypt
char * crypt(const char *__key, const char *__salt)
RSTRING_EMBED_LEN_SHIFT
#define RSTRING_EMBED_LEN_SHIFT
pthread_sigqueue
int pthread_sigqueue(pthread_t *, int, const union sigval)
idDIV
@ idDIV
Definition: rb_mjit_min_header-2.7.0.h:8560
rb_thread_list_t
struct rb_thread_list_struct rb_thread_list_t
mjit_remove_class_serial
void mjit_remove_class_serial(rb_serial_t class_serial)
rb_method_cfunc_t
struct rb_method_cfunc_struct rb_method_cfunc_t
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
rb_last_status_clear
void rb_last_status_clear(void)
Definition: process.c:554
rb_block::captured
struct rb_captured_block captured
Definition: vm_core.h:753
__sFILE64::_file
short _file
Definition: rb_mjit_min_header-2.7.0.h:1013
rb_utf8_str_new_cstr
#define rb_utf8_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6122
tBt_locations
@ tBt_locations
Definition: rb_mjit_min_header-2.7.0.h:8645
rb_dbl_cmp
VALUE rb_dbl_cmp(double a, double b)
Definition: numeric.c:1431
rb_execarg::unsetenv_others_do
unsigned unsetenv_others_do
Definition: internal.h:2039
rb_num_t
unsigned long rb_num_t
Definition: vm_core.h:181
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.0.h:2084
iseq_compile_data::storage_head
struct iseq_compile_data_storage * storage_head
Definition: iseq.h:104
__ssp_real_getlogin_r
int __ssp_real_getlogin_r(char *__buf, size_t __len) __asm__("" "getlogin_r")
YARVINSN_trace_newarraykwsplat
@ YARVINSN_trace_newarraykwsplat
Definition: rb_mjit_min_header-2.7.0.h:12100
rb_class_remove_from_module_subclasses
void rb_class_remove_from_module_subclasses(VALUE)
Definition: class.c:94
YARVINSN_trace_setlocal_WC_0
@ YARVINSN_trace_setlocal_WC_0
Definition: rb_mjit_min_header-2.7.0.h:12172
YARVINSN_trace_opt_str_uminus
@ YARVINSN_trace_opt_str_uminus
Definition: rb_mjit_min_header-2.7.0.h:12127
rb_vm_struct::coverage_mode
int coverage_mode
Definition: vm_core.h:647
idTo_ary
@ idTo_ary
Definition: rb_mjit_min_header-2.7.0.h:8714
timeval::tv_usec
suseconds_t tv_usec
Definition: rb_mjit_min_header-2.7.0.h:1242
iseq_catch_table_entry::cont
unsigned int cont
Definition: iseq.h:251
stat
int stat(const char *__restrict __path, struct stat *__restrict __sbuf)
rb_warning_category_enabled_p
_Bool rb_warning_category_enabled_p(rb_warning_category_t category)
Definition: error.c:164
fmaf
float fmaf(float, float, float)
tObject_id
@ tObject_id
Definition: rb_mjit_min_header-2.7.0.h:8609
VM_METHOD_TYPE_ISEQ
@ VM_METHOD_TYPE_ISEQ
Definition: rb_mjit_min_header-2.7.0.h:8828
_getchar_unlocked_r
int _getchar_unlocked_r(struct _reent *)
time
time_t time(time_t *_timer)
rb_syswait
void rb_syswait(pid_t pid)
strcasestr
char * strcasestr(const char *, const char *)
sigwait
int sigwait(const sigset_t *, int *)
ruby_float_step_size
double ruby_float_step_size(double beg, double end, double unit, int excl)
Definition: numeric.c:2495
llroundf
long long int llroundf(float)
tTOKEN_CONST_END
@ tTOKEN_CONST_END
Definition: rb_mjit_min_header-2.7.0.h:8678
pthread_mutexattr_setprotocol
int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int)
rb_absint_size
size_t rb_absint_size(VALUE val, int *nlz_bits_ret)
Definition: bignum.c:3247
call_type
call_type
Definition: rb_mjit_min_header-2.7.0.h:17160
rb_hash_tbl
struct st_table * rb_hash_tbl(VALUE, const char *file, int line)
Definition: hash.c:1574
strtod_l
double strtod_l(const char *__restrict, char **__restrict, locale_t)
BOP_AND
@ BOP_AND
Definition: rb_mjit_min_header-2.7.0.h:9661
div
void div_t div(int __numer, int __denom)
rb_iseq_constant_body::default_values
VALUE * default_values
Definition: vm_core.h:395
YARVINSN_trace_opt_case_dispatch
@ YARVINSN_trace_opt_case_dispatch
Definition: rb_mjit_min_header-2.7.0.h:12141
rb_empty_keyword_given_p
int rb_empty_keyword_given_p(void)
Definition: eval.c:918
rb_struct_define_under
VALUE rb_struct_define_under(VALUE, const char *,...)
Definition: struct.c:449
rb_thread_struct::top_wrapper
VALUE top_wrapper
Definition: vm_core.h:924
ruby_num_interval_step_size
VALUE ruby_num_interval_step_size(VALUE from, VALUE to, VALUE step, int excl)
Definition: numeric.c:2555
_Bigint::_sign
int _sign
Definition: rb_mjit_min_header-2.7.0.h:944
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:2383
RB_DEBUG_COUNTER_obj_str_shared
@ RB_DEBUG_COUNTER_obj_str_shared
Definition: rb_mjit_min_header-2.7.0.h:11618
rb_str_new_shared
VALUE rb_str_new_shared(VALUE)
Definition: string.c:1197
getpgrp
pid_t getpgrp(void)
rb_bug_errno
void rb_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:667
fdimf
float fdimf(float, float)
__tzrule_struct::change
time_t change
Definition: rb_mjit_min_header-2.7.0.h:1982
strlcat
size_t strlcat(char *, const char *, size_t)
Definition: strlcat.c:31
rb_ary_detransient
void rb_ary_detransient(VALUE a)
Definition: array.c:408
__pthread_spinlock_t
Definition: rb_mjit_min_header-2.7.0.h:1360
rb_print_backtrace
void rb_print_backtrace(void)
Definition: vm_dump.c:750
rb_iseq_constant_body::has_kwrest
unsigned int has_kwrest
Definition: vm_core.h:357
rb_complex_imag
VALUE rb_complex_imag(VALUE z)
Definition: complex.c:743
blkcnt_t
__blkcnt_t blkcnt_t
Definition: rb_mjit_min_header-2.7.0.h:1299
__utoa
char * __utoa(unsigned, char *, int)
rb_iseq_constant_body::coverage
VALUE coverage
Definition: vm_core.h:430
rb_hash_foreach
void rb_hash_foreach(VALUE, int(*)(VALUE, VALUE, VALUE), VALUE)
NODE_GASGN
@ NODE_GASGN
Definition: rb_mjit_min_header-2.7.0.h:8109
rb_default_home_dir
VALUE rb_default_home_dir(VALUE result)
Definition: file.c:3576
YARVINSN_trace_getconstant
@ YARVINSN_trace_getconstant
Definition: rb_mjit_min_header-2.7.0.h:12085
rb_data_type_struct::parent
const rb_data_type_t * parent
Definition: ruby.h:1158
YARVINSN_trace_dupn
@ YARVINSN_trace_dupn
Definition: rb_mjit_min_header-2.7.0.h:12110
ungetc
int ungetc(int, FILE *)
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
__uint_least8_t
unsigned char __uint_least8_t
Definition: rb_mjit_min_header-2.7.0.h:633
iseq_link_anchor
Definition: compile.c:50
NODE_BLOCK
@ NODE_BLOCK
Definition: rb_mjit_min_header-2.7.0.h:8082
RB_DEBUG_COUNTER_gc_minor_stress
@ RB_DEBUG_COUNTER_gc_minor_stress
Definition: rb_mjit_min_header-2.7.0.h:11597
rb_threadptr_interrupt
void rb_threadptr_interrupt(rb_thread_t *th)
Definition: thread.c:510
BOP_NOT
@ BOP_NOT
Definition: rb_mjit_min_header-2.7.0.h:9653
YARVINSN_trace_opt_invokebuiltin_delegate
@ YARVINSN_trace_opt_invokebuiltin_delegate
Definition: rb_mjit_min_header-2.7.0.h:12168
METHOD_VISI_PRIVATE
@ METHOD_VISI_PRIVATE
Definition: rb_mjit_min_header-2.7.0.h:8766
rb_method_name_error
void rb_method_name_error(VALUE klass, VALUE str)
Definition: proc.c:1778
DEFINED_LVAR
@ DEFINED_LVAR
Definition: rb_mjit_min_header-2.7.0.h:10883
rb_mark_tbl_no_pin
void rb_mark_tbl_no_pin(struct st_table *)
Definition: gc.c:5011
mkfifo
int mkfifo(const char *__path, mode_t __mode)
rb_mod_const_of
void * rb_mod_const_of(VALUE, void *)
Definition: variable.c:2572
rb_class_superclass
VALUE rb_class_superclass(VALUE)
Returns the superclass of klass.
Definition: object.c:1976
YARVINSN_checkkeyword
@ YARVINSN_checkkeyword
Definition: rb_mjit_min_header-2.7.0.h:12015
rb_code_position_t
struct rb_code_position_struct rb_code_position_t
rb_const_entry_struct::line
int line
Definition: constant.h:33
ruby_vm_event_enabled_global_flags
rb_event_flag_t ruby_vm_event_enabled_global_flags
Definition: vm.c:376
rb_objspace
Definition: gc.c:676
vm_throw_data::catch_frame
const struct rb_control_frame_struct * catch_frame
Definition: internal.h:1197
truncate
int truncate(const char *, off_t __length)
flock::l_pid
pid_t l_pid
Definition: rb_mjit_min_header-2.7.0.h:1406
RFloat::basic
struct RBasic basic
Definition: internal.h:799
RUBY_T_NONE
@ RUBY_T_NONE
Definition: rb_mjit_min_header-2.7.0.h:4326
rb_class_new_instance_kw
VALUE rb_class_new_instance_kw(int, const VALUE *, VALUE, int)
Definition: object.c:1931
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:1246
rb_iseq_constant_body::rest_start
int rest_start
Definition: vm_core.h:369
RUBY_NUM_ROUND_DEFAULT
@ RUBY_NUM_ROUND_DEFAULT
Definition: rb_mjit_min_header-2.7.0.h:7445
rb_throw_obj
void rb_throw_obj(VALUE tag, VALUE value)
Definition: vm_eval.c:2193
getpagesize
int getpagesize(void)
rb_method_attr_struct::id
ID id
Definition: method.h:138
uint_least64_t
__uint_least64_t uint_least64_t
Definition: rb_mjit_min_header-2.7.0.h:2919
setpgid
int setpgid(pid_t __pid, pid_t __pgid)
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
fileno
int fileno(FILE *)
YARVINSN_setglobal
@ YARVINSN_setglobal
Definition: rb_mjit_min_header-2.7.0.h:11985
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
idNUMPARAM_5
@ idNUMPARAM_5
Definition: rb_mjit_min_header-2.7.0.h:8745
rb_iseq_constant_body::ISEQ_TYPE_CLASS
@ ISEQ_TYPE_CLASS
Definition: vm_core.h:316
pthread_mutexattr_setprioceiling
int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int)
rb_big_remainder
VALUE rb_big_remainder(VALUE x, VALUE y)
Definition: bignum.c:6119
popen
FILE * popen(const char *, const char *)
YARVINSN_opt_minus
@ YARVINSN_opt_minus
Definition: rb_mjit_min_header-2.7.0.h:12040
idInitialize_dup
@ idInitialize_dup
Definition: rb_mjit_min_header-2.7.0.h:8712
ruby_error_nomemory
@ ruby_error_nomemory
Definition: rb_mjit_min_header-2.7.0.h:9627
RUBY_T_REGEXP
@ RUBY_T_REGEXP
Definition: rb_mjit_min_header-2.7.0.h:4332
gammaf_r
float gammaf_r(float, int *)
rb_grantpt
int rb_grantpt(int fd)
Definition: signal.c:1597
__ssp_real_ttyname_r
int __ssp_real_ttyname_r(int __fd, char *__buf, size_t __len) __asm__("" "ttyname_r")
_reent::_nextf
unsigned char * _nextf[30]
Definition: rb_mjit_min_header-2.7.0.h:1103
rb_iseq_trace_set
void rb_iseq_trace_set(const rb_iseq_t *iseq, rb_event_flag_t turnon_events)
Definition: iseq.c:3269
rb_uv_to_utf8
int rb_uv_to_utf8(char[6], unsigned long)
Definition: pack.c:1651
RB_DEBUG_COUNTER_obj_free
@ RB_DEBUG_COUNTER_obj_free
Definition: rb_mjit_min_header-2.7.0.h:11610
rb_singleton_class_clone
VALUE rb_singleton_class_clone(VALUE)
Definition: class.c:370
rb_vm_trap_exit
void rb_vm_trap_exit(rb_vm_t *vm)
Definition: signal.c:1060
iseq_compile_data::ensure_node_stack
struct iseq_compile_data_ensure_node_stack * ensure_node_stack
Definition: iseq.h:102
rb_mark_generic_ivar
void rb_mark_generic_ivar(VALUE)
Definition: variable.c:973
cookie_io_functions_t::write
cookie_write_function_t * write
Definition: rb_mjit_min_header-2.7.0.h:1794
rb_gc_mark_global_tbl
void rb_gc_mark_global_tbl(void)
Definition: variable.c:434
asiprintf
int int int int int int int int asiprintf(char **, const char *,...) __attribute__((__format__(__printf__
mjit_init
void mjit_init(const struct mjit_options *opts)
rb_obj_infect
void rb_obj_infect(VALUE victim, VALUE carrier)
Does nothing.
Definition: object.c:1068
NODE_CASE2
@ NODE_CASE2
Definition: rb_mjit_min_header-2.7.0.h:8086
rb_int_lshift
VALUE rb_int_lshift(VALUE x, VALUE y)
Definition: numeric.c:4583
pthread_sigmask
int pthread_sigmask(int, const sigset_t *, sigset_t *)
tm::tm_wday
int tm_wday
Definition: rb_mjit_min_header-2.7.0.h:1940
_fcloseall_r
int _fcloseall_r(struct _reent *)
RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_oorange
Definition: rb_mjit_min_header-2.7.0.h:11583
rb_id2sym
VALUE rb_id2sym(ID)
Definition: symbol.c:776
fsetpos
int fsetpos(FILE *, const fpos_t *)
fsync
int fsync(int __fd)
CONST_VISIBILITY_MAX
@ CONST_VISIBILITY_MAX
Definition: rb_mjit_min_header-2.7.0.h:12185
rb_suppress_tracing
VALUE rb_suppress_tracing(VALUE(*func)(VALUE), VALUE arg)
Definition: vm_trace.c:409
RB_DEBUG_COUNTER_mc_miss_reuse_call
@ RB_DEBUG_COUNTER_mc_miss_reuse_call
Definition: rb_mjit_min_header-2.7.0.h:11541
rb_hook_list_mark
void rb_hook_list_mark(rb_hook_list_t *hooks)
Definition: vm_trace.c:53
rb_data_type_struct::flags
VALUE flags
Definition: ruby.h:1161
rb_st_locale_insensitive_strncasecmp
int rb_st_locale_insensitive_strncasecmp(const char *s1, const char *s2, size_t n)
log1pf
float log1pf(float)
rb_spawn_err
pid_t rb_spawn_err(int, const VALUE *, char *, size_t)
Definition: process.c:4435
VALUE
unsigned long VALUE
Definition: ruby.h:102
_reent::_rand_next
__extension__ unsigned long long _rand_next
Definition: rb_mjit_min_header-2.7.0.h:1085
index
int index
Definition: rb_mjit_min_header-2.7.0.h:11246
YARVINSN_putobject_INT2FIX_1_
@ YARVINSN_putobject_INT2FIX_1_
Definition: rb_mjit_min_header-2.7.0.h:12072
rb_block_to_s
VALUE rb_block_to_s(VALUE self, const struct rb_block *block, const char *additional_info)
Definition: proc.c:1360
RHASH_PROC_DEFAULT
@ RHASH_PROC_DEFAULT
Definition: rb_mjit_min_header-2.7.0.h:6858
rb_public_const_get_at
VALUE rb_public_const_get_at(VALUE klass, ID id)
Definition: variable.c:2405
_reent::_result
struct _Bigint * _result
Definition: rb_mjit_min_header-2.7.0.h:1070
rb_funcallv_public
VALUE rb_funcallv_public(VALUE, ID, int, const VALUE *)
Calls a method.
Definition: vm_eval.c:980
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__
METHOD_VISI_PUBLIC
@ METHOD_VISI_PUBLIC
Definition: rb_mjit_min_header-2.7.0.h:8765
DEFINED_TRUE
@ DEFINED_TRUE
Definition: rb_mjit_min_header-2.7.0.h:10891
block_handler_type_proc
@ block_handler_type_proc
Definition: rb_mjit_min_header-2.7.0.h:9779
rb_last_status_set
void rb_last_status_set(int status, pid_t pid)
rb_module_new
VALUE rb_module_new(void)
Definition: class.c:758
RB_DEBUG_COUNTER_mc_global_state_miss
@ RB_DEBUG_COUNTER_mc_global_state_miss
Definition: rb_mjit_min_header-2.7.0.h:11531
rb_eArgError
VALUE rb_eArgError
Definition: error.c:923
reallocarray
void * reallocarray(void *, size_t, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2
NODE_VCALL
@ NODE_VCALL
Definition: rb_mjit_min_header-2.7.0.h:8121
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
fpurge
int char char int int int int int int int int int int int int int int int int int int fpurge(FILE *)
int16_t
__int16_t int16_t
Definition: rb_mjit_min_header-2.7.0.h:1170
rb_cMethod
VALUE rb_cMethod
Definition: ruby.h:2033
rb_key_err_new
VALUE rb_key_err_new(VALUE mesg, VALUE recv, VALUE name)
Definition: error.c:1907
rb_mod_init_copy
VALUE rb_mod_init_copy(VALUE, VALUE)
Definition: class.c:313
pthread_cond_wait
int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *)
rb_struct_s_members
VALUE rb_struct_s_members(VALUE)
Definition: struct.c:58
RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start
@ RB_DEBUG_COUNTER_ccf_iseq_setup_tailcall_0start
Definition: rb_mjit_min_header-2.7.0.h:11545
VM_METHOD_TYPE_ATTRSET
@ VM_METHOD_TYPE_ATTRSET
Definition: rb_mjit_min_header-2.7.0.h:8830
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.0.h:9592
rb_ary_includes
VALUE rb_ary_includes(VALUE, VALUE)
Definition: array.c:4340
grantpt
int grantpt(int)
expl
long double expl(long double)
ucontext_t
ucontext_t
Definition: rb_mjit_min_header-2.7.0.h:2335
RUBY_FL_PROMOTED
@ RUBY_FL_PROMOTED
Definition: ruby.h:845
malloc
void * malloc(size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1)))
__id_t
__uint32_t __id_t
Definition: rb_mjit_min_header-2.7.0.h:888
RB_DEBUG_COUNTER_ivar_get_ic_hit
@ RB_DEBUG_COUNTER_ivar_get_ic_hit
Definition: rb_mjit_min_header-2.7.0.h:11574
rb_float_value
#define rb_float_value(v)
Definition: rb_mjit_min_header-2.7.0.h:7580
rb_hash
VALUE rb_hash(VALUE)
Definition: hash.c:129
rb_scope_visi_struct::method_visi
rb_method_visibility_t method_visi
Definition: rb_mjit_min_header-2.7.0.h:8771
cookie_seek_function_t
int cookie_seek_function_t(void *__cookie, _off64_t *__off, int __whence)
Definition: rb_mjit_min_header-2.7.0.h:1788
YARVINSN_trace_leave
@ YARVINSN_trace_leave
Definition: rb_mjit_min_header-2.7.0.h:12132
asctime
char * asctime(const struct tm *_tblock)
rb_vm_t
struct rb_vm_struct rb_vm_t
RB_DEBUG_COUNTER_obj_imemo_throw_data
@ RB_DEBUG_COUNTER_obj_imemo_throw_data
Definition: rb_mjit_min_header-2.7.0.h:11669
RB_DEBUG_COUNTER_obj_obj_embed
@ RB_DEBUG_COUNTER_obj_obj_embed
Definition: rb_mjit_min_header-2.7.0.h:11613
rintf
float rintf(float)
ruby_threadptr_data_type
const rb_data_type_t ruby_threadptr_data_type
Definition: vm.c:2643
sched_rr_get_interval
int sched_rr_get_interval(pid_t __pid, struct timespec *__interval)
rb_eSyntaxError
VALUE rb_eSyntaxError
Definition: error.c:938
CLD_STOPPED
#define CLD_STOPPED
Definition: rb_mjit_min_header-2.7.0.h:2213
rb_ary_subseq
VALUE rb_ary_subseq(VALUE, long, long)
Definition: array.c:1518
rb_exec_recursive_outer
VALUE rb_exec_recursive_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5098
NODE_MATCH3
@ NODE_MATCH3
Definition: rb_mjit_min_header-2.7.0.h:8141
RBignum::digits
unsigned int * digits
Definition: rb_mjit_min_header-2.7.0.h:6817
rawmemchr
void * rawmemchr(const void *, int)
rb_method_entry_t
struct rb_method_entry_struct rb_method_entry_t
YARVINSN_trace_tostring
@ YARVINSN_trace_tostring
Definition: rb_mjit_min_header-2.7.0.h:12095
rb_thread_struct::invoke_arg
union rb_thread_struct::@189 invoke_arg
rb_file_absolute_path
VALUE rb_file_absolute_path(VALUE, VALUE)
Definition: file.c:4072
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
tUScore
@ tUScore
Definition: rb_mjit_min_header-2.7.0.h:8659
setdtablesize
int setdtablesize(int)
rb_vm_get_sourceline
int rb_vm_get_sourceline(const rb_control_frame_t *)
Definition: vm_backtrace.c:68
_sig_func_ptr
void(* _sig_func_ptr)(int)
Definition: rb_mjit_min_header-2.7.0.h:2224
__sFILE::_ub
struct __sbuf _ub
Definition: rb_mjit_min_header-2.7.0.h:995
YARVINSN_setspecial
@ YARVINSN_setspecial
Definition: rb_mjit_min_header-2.7.0.h:11977
stat::st_blocks
blkcnt_t st_blocks
Definition: rb_mjit_min_header-2.7.0.h:2398
_reent::_unused_rand
unsigned int _unused_rand
Definition: rb_mjit_min_header-2.7.0.h:1080
perror
void perror(const char *)
_diprintf_r
int char char int int _diprintf_r(struct _reent *, int, const char *,...) __attribute__((__format__(__printf__
rb_alias
void rb_alias(VALUE, ID, ID)
Definition: vm_method.c:1581
rb_fiber_yield_kw
VALUE rb_fiber_yield_kw(int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2108
NODE_IN
@ NODE_IN
Definition: rb_mjit_min_header-2.7.0.h:8089
rb_uint2inum
VALUE rb_uint2inum(uintptr_t)
Definition: bignum.c:3201
tInitialize_clone
@ tInitialize_clone
Definition: rb_mjit_min_header-2.7.0.h:8630
rb_ary_unshift
VALUE rb_ary_unshift(VALUE, VALUE)
Definition: array.c:1494
rb_time_utc_offset
VALUE rb_time_utc_offset(VALUE time)
Definition: time.c:4791
rb_gvar_getter_function_of
rb_gvar_getter_t * rb_gvar_getter_function_of(const struct rb_global_entry *)
Definition: variable.c:702
id_core_set_variable_alias
@ id_core_set_variable_alias
Definition: rb_mjit_min_header-2.7.0.h:8593
RB_DEBUG_COUNTER_obj_hash_4
@ RB_DEBUG_COUNTER_obj_hash_4
Definition: rb_mjit_min_header-2.7.0.h:11632
ruby_vm_event_local_num
unsigned int ruby_vm_event_local_num
Definition: vm.c:377
_
#define _(args)
Definition: rb_mjit_min_header-2.7.0.h:3913
YARVINSN_adjuststack
@ YARVINSN_adjuststack
Definition: rb_mjit_min_header-2.7.0.h:12012
rb_make_backtrace
VALUE rb_make_backtrace(void)
Definition: vm_backtrace.c:872
rb_big_divmod
VALUE rb_big_divmod(VALUE, VALUE)
Definition: bignum.c:6135
FPE_FLTRES
#define FPE_FLTRES
Definition: rb_mjit_min_header-2.7.0.h:2201
rb_callable_method_entry_struct
Definition: method.h:59
_fpstate::rip
__uint64_t rip
Definition: rb_mjit_min_header-2.7.0.h:2021
rb_postponed_job_flush
void rb_postponed_job_flush(rb_vm_t *vm)
Definition: vm_trace.c:1656
buf
struct rb_call_cache buf
Definition: rb_mjit_min_header-2.7.0.h:13260
exp2
double exp2(double)
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.0.h:5214
int32_t
__int32_t int32_t
Definition: rb_mjit_min_header-2.7.0.h:1175
RB_DEBUG_COUNTER_mjit_length_active_units
@ RB_DEBUG_COUNTER_mjit_length_active_units
Definition: rb_mjit_min_header-2.7.0.h:11698
vhangup
int vhangup(void)
RB_DEBUG_COUNTER_mc_search_super
@ RB_DEBUG_COUNTER_mc_search_super
Definition: rb_mjit_min_header-2.7.0.h:11535
ruby_run_node
int ruby_run_node(void *n)
Runs the given compiled source and exits this process.
Definition: eval.c:326
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
__gid_t
__uint32_t __gid_t
Definition: rb_mjit_min_header-2.7.0.h:854
NODE_RESBODY
@ NODE_RESBODY
Definition: rb_mjit_min_header-2.7.0.h:8101
rb_default_coverage
VALUE rb_default_coverage(int)
Definition: thread.c:5519
getpgid
pid_t getpgid(pid_t)
rb_str_hash
st_index_t rb_str_hash(VALUE)
Definition: string.c:3163
rb_cmpint
int rb_cmpint(VALUE, VALUE, VALUE)
Definition: bignum.c:2925
__uint64_t
long unsigned int __uint64_t
Definition: rb_mjit_min_header-2.7.0.h:630
suseconds_t
__suseconds_t suseconds_t
Definition: rb_mjit_min_header-2.7.0.h:1234
RB_DEBUG_COUNTER_mc_class_serial_miss
@ RB_DEBUG_COUNTER_mc_class_serial_miss
Definition: rb_mjit_min_header-2.7.0.h:11532
rb_gvar_var_getter
rb_gvar_getter_t rb_gvar_var_getter
Definition: rb_mjit_min_header-2.7.0.h:5105
VM_FRAME_FLAG_FINISH
@ VM_FRAME_FLAG_FINISH
Definition: rb_mjit_min_header-2.7.0.h:10068
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.0.h:9847
_fwrite_r
size_t _fwrite_r(struct _reent *, const void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_const_entry_struct::value
VALUE value
Definition: constant.h:34
rb_arithmetic_sequence_components_t
Definition: intern.h:281
RStruct::basic
struct RBasic basic
Definition: internal.h:943
rb_proc_arity
int rb_proc_arity(VALUE)
Definition: proc.c:1112
VM_CALL_FCALL_bit
@ VM_CALL_FCALL_bit
Definition: rb_mjit_min_header-2.7.0.h:10007
NODE_IVAR
@ NODE_IVAR
Definition: rb_mjit_min_header-2.7.0.h:8134
__sFILE64::_close
int(* _close)(struct _reent *, void *)
Definition: rb_mjit_min_header-2.7.0.h:1024
rb_aligned_malloc
void * rb_aligned_malloc(size_t alignment, size_t size)
Definition: gc.c:9610
rb_st_foreach_check
int rb_st_foreach_check(st_table *, st_foreach_check_callback_func *, st_data_t, st_data_t)
rb_f_exit
VALUE rb_f_exit(int argc, const VALUE *argv)
Definition: process.c:4203
ffs
int ffs(int) __attribute__((__const__))
Definition: ffs.c:6
__int8_t
signed char __int8_t
Definition: rb_mjit_min_header-2.7.0.h:620
rb_name_err_new
VALUE rb_name_err_new(VALUE mesg, VALUE recv, VALUE method)
Definition: error.c:1592
rb_execarg::pgroup_given
unsigned pgroup_given
Definition: internal.h:2036
log2
#define log2(x)
Definition: rb_mjit_min_header-2.7.0.h:3718
explicit_bzero
void explicit_bzero(void *, size_t)
Definition: explicit_bzero.c:77
RObject::basic
struct RBasic basic
Definition: ruby.h:923
rb_args_info::pre_args_num
int pre_args_num
Definition: node.h:435
rb_ary_entry
VALUE rb_ary_entry(VALUE, long)
Definition: array.c:1512
rb_ary_aref
VALUE rb_ary_aref(int, const VALUE *, VALUE)
Definition: array.c:1574
rb_iseq_struct::compile_data
struct iseq_compile_data * compile_data
Definition: vm_core.h:463
RB_IO_WAIT_WRITABLE
#define RB_IO_WAIT_WRITABLE
Definition: rb_mjit_min_header-2.7.0.h:5185
id
VALUE ID id
Definition: rb_mjit_min_header-2.7.0.h:16133
unlockpt
int unlockpt(int)
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:2376
tIntern
@ tIntern
Definition: rb_mjit_min_header-2.7.0.h:8608
rb_ast_newnode
NODE * rb_ast_newnode(rb_ast_t *, enum node_type type)
Definition: node.c:1189
_strerror_r
char * _strerror_r(struct _reent *, int, int, int *)
ruby_binding_data_type
const rb_data_type_t ruby_binding_data_type
Definition: proc.c:319
rb_enumerator_size_func
VALUE rb_enumerator_size_func(VALUE, VALUE, VALUE)
Definition: rb_mjit_min_header-2.7.0.h:5655
_rand48::_mult
unsigned short _mult[3]
Definition: rb_mjit_min_header-2.7.0.h:1054
memccpy
void * memccpy(void *__restrict, const void *__restrict, int, size_t)
pause
int pause(void)
rb_str_cat2
#define rb_str_cat2
Definition: rb_mjit_min_header-2.7.0.h:6137
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:1431
idSucc
@ idSucc
Definition: rb_mjit_min_header-2.7.0.h:8702
ruby_current_execution_context_ptr
rb_execution_context_t * ruby_current_execution_context_ptr
Definition: vm.c:373
idLE
@ idLE
Definition: rb_mjit_min_header-2.7.0.h:8565
rb_hash_delete_entry
VALUE rb_hash_delete_entry(VALUE hash, VALUE key)
Definition: hash.c:2253
nextafterf
float nextafterf(float, float)
rb_code_position_struct
Definition: node.h:130
_fpstate::cwd
__uint16_t cwd
Definition: rb_mjit_min_header-2.7.0.h:2017
rb_class_path
VALUE rb_class_path(VALUE)
Definition: variable.c:153
rb_method_definition_struct::type
rb_method_type_t type
Definition: rb_mjit_min_header-2.7.0.h:8877
__sFILE64::_up
unsigned char * _up
Definition: rb_mjit_min_header-2.7.0.h:1026
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
fputc_unlocked
int fputc_unlocked(int, FILE *)
rb_obj_as_string
VALUE rb_obj_as_string(VALUE)
Definition: string.c:1440
fpathconf
long fpathconf(int __fd, int __name)
rb_iseq_struct::wrapper
VALUE wrapper
Definition: vm_core.h:458
rb_dbl_long_hash
long rb_dbl_long_hash(double d)
Definition: hash.c:160
rb_reg_compile
VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline)
Definition: re.c:2952
ruby_xrealloc
void void void * ruby_xrealloc(void *, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2)))
Definition: gc.c:11980
pow10f
float pow10f(float)
ruby_special_error_count
@ ruby_special_error_count
Definition: rb_mjit_min_header-2.7.0.h:9631
NODE_HSHPTN
@ NODE_HSHPTN
Definition: rb_mjit_min_header-2.7.0.h:8184
wcstombs
size_t wcstombs(char *__restrict, const wchar_t *__restrict, size_t)
rb_data_object_wrap_warning
#define rb_data_object_wrap_warning(klass, ptr, mark, free)
Definition: rb_mjit_min_header-2.7.0.h:4905
siginfo_t::si_uid
uid_t si_uid
Definition: rb_mjit_min_header-2.7.0.h:2117
t__attached__
@ t__attached__
Definition: rb_mjit_min_header-2.7.0.h:8627
rb_free_const_table
void rb_free_const_table(struct rb_id_table *tbl)
Definition: gc.c:2491
rb_iseq_constant_body::bits_start
int bits_start
Definition: vm_core.h:392
rb_hash_delete_if
VALUE rb_hash_delete_if(VALUE)
Definition: hash.c:2420
st_retval
st_retval
Definition: st.h:99
strptime
char * strptime(const char *__restrict, const char *__restrict, struct tm *__restrict)
rb_thread_struct::func
VALUE(* func)(void *)
Definition: vm_core.h:970
rb_proc_location
VALUE rb_proc_location(VALUE self)
Definition: proc.c:1256
int
#define int
Definition: rb_mjit_min_header-2.7.0.h:2879
rb_raw_obj_info
const char * rb_raw_obj_info(char *buff, const int buff_size, VALUE obj)
Definition: gc.c:11419
NODE_TRUE
@ NODE_TRUE
Definition: rb_mjit_min_header-2.7.0.h:8175
rb_obj_info_dump
void rb_obj_info_dump(VALUE obj)
Definition: gc.c:11661
rb_need_block
void rb_need_block(void)
Declares that the current method needs a block.
Definition: eval.c:931
lrand48
long lrand48(void)
NODE_COLON2
@ NODE_COLON2
Definition: rb_mjit_min_header-2.7.0.h:8167
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.0.h:2092
_rand48::_seed
unsigned short _seed[3]
Definition: rb_mjit_min_header-2.7.0.h:1053
sigset
_sig_func_ptr sigset(int, _sig_func_ptr)
rb_public_const_get_from
VALUE rb_public_const_get_from(VALUE klass, ID id)
Definition: variable.c:2399
_wcstombs_r
size_t _wcstombs_r(struct _reent *, char *__restrict, const wchar_t *__restrict, size_t, _mbstate_t *)
RRational
Definition: internal.h:788
NODE_DEFN
@ NODE_DEFN
Definition: rb_mjit_min_header-2.7.0.h:8159
RB_DEBUG_COUNTER_frame_C2C
@ RB_DEBUG_COUNTER_frame_C2C
Definition: rb_mjit_min_header-2.7.0.h:11572
RB_INT_PARSE_PREFIX
@ RB_INT_PARSE_PREFIX
Definition: rb_mjit_min_header-2.7.0.h:7936
rb_fd_fix_cloexec
void rb_fd_fix_cloexec(int fd)
Definition: io.c:268
iseq_catch_table_entry::end
unsigned int end
Definition: iseq.h:250
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:444
VM_CHECKMATCH_TYPE_WHEN
@ VM_CHECKMATCH_TYPE_WHEN
Definition: rb_mjit_min_header-2.7.0.h:9998
rb_assert_failure
MJIT_FUNC_EXPORTED void rb_assert_failure(const char *file, int line, const char *name, const char *expr)
Definition: error.c:716
rb_execarg::waitpid_state
struct waitpid_state * waitpid_state
Definition: internal.h:2049
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:2043
rb_str_upto_endless_each
VALUE rb_str_upto_endless_each(VALUE, int(*each)(VALUE, VALUE), VALUE)
Definition: string.c:4345
atoll
long long atoll(const char *__nptr)
tNUMPARAM_5
@ tNUMPARAM_5
Definition: rb_mjit_min_header-2.7.0.h:8664
argv
const VALUE * argv
Definition: rb_mjit_min_header-2.7.0.h:5742
YARVINSN_opt_mult
@ YARVINSN_opt_mult
Definition: rb_mjit_min_header-2.7.0.h:12041
VM_FRAME_FLAG_CFRAME
@ VM_FRAME_FLAG_CFRAME
Definition: rb_mjit_min_header-2.7.0.h:10070
rb_method_attr_struct
Definition: method.h:137
old
VALUE ID VALUE old
Definition: rb_mjit_min_header-2.7.0.h:16133
rb_method_entry_struct::def
struct rb_method_definition_struct *const def
Definition: method.h:54
rb_load_protect
void rb_load_protect(VALUE, int, int *)
Definition: load.c:657
rb_cFloat
VALUE rb_cFloat
Definition: ruby.h:2028
rb_thread_struct::thread_id
rb_nativethread_id_t thread_id
Definition: vm_core.h:927
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
YARVINSN_trace_reverse
@ YARVINSN_trace_reverse
Definition: rb_mjit_min_header-2.7.0.h:12112
VM_SPECIAL_OBJECT_CONST_BASE
@ VM_SPECIAL_OBJECT_CONST_BASE
Definition: rb_mjit_min_header-2.7.0.h:10034
DEFINED_NOT_DEFINED
@ DEFINED_NOT_DEFINED
Definition: rb_mjit_min_header-2.7.0.h:10880
coshf
float coshf(float)
drand48
double drand48(void)
rb_time_timespec
struct timespec rb_time_timespec(VALUE time)
Definition: time.c:2692
rb_global_vm_lock_struct
Definition: thread_pthread.h:48
pthread_setname_np
int pthread_setname_np(pthread_t, const char *) __attribute__((__nonnull__(2)))
useconds_t
__useconds_t useconds_t
Definition: rb_mjit_min_header-2.7.0.h:1341
iseq_compile_data_ensure_node_stack
Definition: compile.c:104
rb_execarg_new
VALUE rb_execarg_new(int argc, const VALUE *argv, int accept_shell, int allow_exc_opt)
Definition: process.c:2633
_off_t
long _off_t
Definition: rb_mjit_min_header-2.7.0.h:886
tNUMPARAM_9
@ tNUMPARAM_9
Definition: rb_mjit_min_header-2.7.0.h:8668
rb_random_ulong_limited
unsigned long rb_random_ulong_limited(VALUE rnd, unsigned long limit)
Definition: random.c:930
rb_big_resize
void rb_big_resize(VALUE big, size_t len)
Definition: bignum.c:2989
__pthread_key_t
Definition: rb_mjit_min_header-2.7.0.h:1347
ruby_is_fd_loadable
int ruby_is_fd_loadable(int fd)
Definition: file.c:6195
RUBY_T_STRING
@ RUBY_T_STRING
Definition: rb_mjit_min_header-2.7.0.h:4331
RB_DEBUG_COUNTER_ccf_iseq_kw2
@ RB_DEBUG_COUNTER_ccf_iseq_kw2
Definition: rb_mjit_min_header-2.7.0.h:11549
rb_vm_struct::default_params
struct rb_vm_struct::@185 default_params
rb_iseq_new_with_callback_callback_func::reserved
VALUE reserved
Definition: vm_core.h:1020
tNEXT_ID
@ tNEXT_ID
Definition: rb_mjit_min_header-2.7.0.h:8683
asnprintf
int int int int int int int int char char * asnprintf(char *__restrict, size_t *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
rb_float_uminus
VALUE rb_float_uminus(VALUE num)
Definition: numeric.c:1011
rb_complex_conjugate
VALUE rb_complex_conjugate(VALUE z)
Definition: complex.c:1254
rb_io_close
VALUE rb_io_close(VALUE)
Definition: io.c:4820
rb_ary_push
VALUE rb_ary_push(VALUE, VALUE)
Definition: array.c:1195
rb_num_coerce_bin
VALUE rb_num_coerce_bin(VALUE, VALUE, ID)
Definition: numeric.c:446
_siscanf_r
int int int _siscanf_r(struct _reent *, const char *, const char *,...) __attribute__((__format__(__scanf__
iseq_compile_data::ci_kw_index
unsigned int ci_kw_index
Definition: iseq.h:116
rb_mutex_trylock
VALUE rb_mutex_trylock(VALUE mutex)
Definition: thread_sync.c:203
copysignl
long double copysignl(long double, long double)
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:3516
_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__
RUBY_TAG_REDO
@ RUBY_TAG_REDO
Definition: rb_mjit_min_header-2.7.0.h:9428
rb_execution_context_struct::ensure_list
rb_ensure_list_t * ensure_list
Definition: vm_core.h:869
pthread_barrier_t
struct __pthread_barrier_t * pthread_barrier_t
VM_FRAME_FLAG_PASSED
@ VM_FRAME_FLAG_PASSED
Definition: rb_mjit_min_header-2.7.0.h:10067
rb_vm_cref_new_toplevel
rb_cref_t * rb_vm_cref_new_toplevel(void)
Definition: rb_mjit_min_header-2.7.0.h:11485
YARVINSN_trace_putstring
@ YARVINSN_trace_putstring
Definition: rb_mjit_min_header-2.7.0.h:12093
stat::st_birthtim
timestruc_t st_birthtim
Definition: rb_mjit_min_header-2.7.0.h:2399
rb_int_fdiv_double
double rb_int_fdiv_double(VALUE x, VALUE y)
Definition: numeric.c:3728
iscanf
int int int int int int int int char char int int int int int iscanf(const char *,...) __attribute__((__format__(__scanf__
rb_method_bmethod_t
struct rb_method_bmethod_struct rb_method_bmethod_t
rb_define_global_function
void rb_define_global_function(const char *, VALUE(*)(), int)
rb_iseq_struct::loader
struct rb_iseq_struct::@181::@182 loader
BOP_MINUS
@ BOP_MINUS
Definition: rb_mjit_min_header-2.7.0.h:9635
__signbitf
int __signbitf(float x)
alias
const char * alias
Definition: nkf.c:1159
pthread_attr_setguardsize
int pthread_attr_setguardsize(pthread_attr_t *, size_t)
rb_xrealloc_mul_add
void * rb_xrealloc_mul_add(const void *, size_t, size_t, size_t)
Definition: gc.c:10163
VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM
@ VM_FRAME_FLAG_MODIFIED_BLOCK_PARAM
Definition: rb_mjit_min_header-2.7.0.h:10072
fma
double fma(double, double, double)
stat::st_nlink
nlink_t st_nlink
Definition: rb_mjit_min_header-2.7.0.h:2389
_fmemopen_r
int int FILE * _fmemopen_r(struct _reent *, void *__restrict, size_t, const char *__restrict)
RHASH_AR_TABLE_BOUND_SHIFT
#define RHASH_AR_TABLE_BOUND_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:6883
rb_iseq_constant_body::ISEQ_TYPE_EVAL
@ ISEQ_TYPE_EVAL
Definition: vm_core.h:319
rb_ec_error_print
void rb_ec_error_print(rb_execution_context_t *volatile ec, volatile VALUE errinfo)
Definition: eval_error.c:346
rb_const_flag_t
rb_const_flag_t
Definition: constant.h:14
_fpstate::xmm
struct _uc_xmmreg xmm[16]
Definition: rb_mjit_min_header-2.7.0.h:2026
rb_call_super
VALUE rb_call_super(int, const VALUE *)
Definition: vm_eval.c:306
idASET
@ idASET
Definition: rb_mjit_min_header-2.7.0.h:8578
rb_vm_struct::loaded_features
VALUE loaded_features
Definition: vm_core.h:619
ruby_default_signal
void ruby_default_signal(int)
Definition: signal.c:402
idGets
@ idGets
Definition: rb_mjit_min_header-2.7.0.h:8701
rb_funcall_passing_block_kw
VALUE rb_funcall_passing_block_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:1039
rb_enum_values_pack
VALUE rb_enum_values_pack(int, const VALUE *)
Definition: enum.c:33
rb_args_info::post_init
NODE * post_init
Definition: node.h:433
rb_st_add_direct
void rb_st_add_direct(st_table *, st_data_t, st_data_t)
u_int16_t
__uint16_t u_int16_t
Definition: rb_mjit_min_header-2.7.0.h:1158
idUMinus
@ idUMinus
Definition: rb_mjit_min_header-2.7.0.h:8554
vfscanf
int int int vfscanf(FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
YARVINSN_setclassvariable
@ YARVINSN_setclassvariable
Definition: rb_mjit_min_header-2.7.0.h:11981
pthread_attr_getguardsize
int pthread_attr_getguardsize(const pthread_attr_t *, size_t *)
rb_thread_struct::to_kill
unsigned int to_kill
Definition: vm_core.h:933
rb_execarg::gid_given
unsigned gid_given
Definition: internal.h:2046
NODE_STR
@ NODE_STR
Definition: rb_mjit_min_header-2.7.0.h:8143
idNilP
@ idNilP
Definition: rb_mjit_min_header-2.7.0.h:8584
sin
double sin(double)
RSTRUCT_EMBED_LEN_MASK
#define RSTRUCT_EMBED_LEN_MASK
Definition: rb_mjit_min_header-2.7.0.h:6911
idAND
@ idAND
Definition: rb_mjit_min_header-2.7.0.h:8732
NODE_DASGN
@ NODE_DASGN
Definition: rb_mjit_min_header-2.7.0.h:8107
YARVINSN_opt_mod
@ YARVINSN_opt_mod
Definition: rb_mjit_min_header-2.7.0.h:12043
uint64_t
unsigned long long uint64_t
Definition: sha2.h:102
rb_cstr_to_rat
VALUE rb_cstr_to_rat(const char *, int)
Definition: rational.c:2541
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:917
rb_global_vm_lock_struct::switch_wait_cond
rb_nativethread_cond_t switch_wait_cond
Definition: thread_pthread.h:70
ruby_dtrace_method_hook_args::name
volatile VALUE name
Definition: probes_helper.h:12
_glue
Definition: rb_mjit_min_header-2.7.0.h:1039
RB_DEBUG_COUNTER_mjit_length_compact_units
@ RB_DEBUG_COUNTER_mjit_length_compact_units
Definition: rb_mjit_min_header-2.7.0.h:11699
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)
__getline
ssize_t __getline(char **, size_t *, FILE *)
setkey
void setkey(const char *__key)
mblen
int mblen(const char *, size_t)
idException
@ idException
Definition: rb_mjit_min_header-2.7.0.h:8729
rb_iseq_constant_body::location
rb_iseq_location_t location
Definition: vm_core.h:399
YARVINSN_trace_expandarray
@ YARVINSN_trace_expandarray
Definition: rb_mjit_min_header-2.7.0.h:12103
rb_method_entry_location
VALUE rb_method_entry_location(const rb_method_entry_t *me)
Definition: proc.c:2713
NODE_AND
@ NODE_AND
Definition: rb_mjit_min_header-2.7.0.h:8103
rb_str_subpos
char * rb_str_subpos(VALUE, long, long *)
Definition: string.c:2497
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
RMODULE_ENUM_END
@ RMODULE_ENUM_END
Definition: ruby.h:959
VM_FRAME_MAGIC_CFUNC
@ VM_FRAME_MAGIC_CFUNC
Definition: rb_mjit_min_header-2.7.0.h:10061
ruby_vm_at_exit
void ruby_vm_at_exit(void(*func)(ruby_vm_t *))
rb_code_position_struct::lineno
int lineno
Definition: node.h:131
rb_int_succ
VALUE rb_int_succ(VALUE num)
Definition: numeric.c:3321
lrint
long int lrint(double)
RIMemo::v0
VALUE v0
Definition: internal.h:1126
fread_unlocked
size_t fread_unlocked(void *__restrict, size_t _size, size_t _n, FILE *__restrict)
YARVINSN_opt_nil_p
@ YARVINSN_opt_nil_p
Definition: rb_mjit_min_header-2.7.0.h:12023
RB_DEBUG_COUNTER_mjit_frame_VM2VM
@ RB_DEBUG_COUNTER_mjit_frame_VM2VM
Definition: rb_mjit_min_header-2.7.0.h:11688
YARVINSN_trace_newhash
@ YARVINSN_trace_newhash
Definition: rb_mjit_min_header-2.7.0.h:12106
rb_id_table
Definition: id_table.c:40
id_core_hash_merge_ptr
@ id_core_hash_merge_ptr
Definition: rb_mjit_min_header-2.7.0.h:8598
ruby_stack_check
int ruby_stack_check(void)
Definition: gc.c:4671
rb_init_identtable
st_table * rb_init_identtable(void)
Definition: hash.c:4211
uintptr_t
__uintptr_t uintptr_t
Definition: rb_mjit_min_header-2.7.0.h:1191
__pthread_cond_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1351
id_core_define_singleton_method
@ id_core_define_singleton_method
Definition: rb_mjit_min_header-2.7.0.h:8596
__strcat_chk
char * __strcat_chk(char *, const char *, size_t)
rb_eql_opt
VALUE rb_eql_opt(VALUE obj1, VALUE obj2)
Definition: rb_mjit_min_header-2.7.0.h:13444
rb_gc_mark_values
void rb_gc_mark_values(long n, const VALUE *values)
Definition: gc.c:4715
rb_obj_untaint
VALUE rb_obj_untaint(VALUE)
call-seq: obj.untaint -> obj
Definition: object.c:1014
rb_iseq_constant_body::keyword
const struct rb_iseq_constant_body::@178::rb_iseq_param_keyword * keyword
YARVINSN_trace_send
@ YARVINSN_trace_send
Definition: rb_mjit_min_header-2.7.0.h:12123
rb_iseq_eval_main
VALUE rb_iseq_eval_main(const rb_iseq_t *iseq)
Definition: vm.c:2173
__ssp_real_confstr
size_t __ssp_real_confstr(int __name, char *__buf, size_t __len) __asm__("" "confstr")
pthread_getname_np
int pthread_getname_np(pthread_t, char *, size_t) __attribute__((__nonnull__(2)))
getpeereid
int getpeereid(int, uid_t *, gid_t *)
renameat
int int renameat(int, const char *, int, const char *)
_tmpfile_r
FILE * _tmpfile_r(struct _reent *)
imemo_parser_strterm
@ imemo_parser_strterm
Definition: rb_mjit_min_header-2.7.0.h:7058
rb_iseq_constant_body::local_iseq
struct rb_iseq_struct * local_iseq
Definition: vm_core.h:418
rb_big_lshift
VALUE rb_big_lshift(VALUE, VALUE)
Definition: bignum.c:6621
execve
int execve(const char *__path, char *const __argv[], char *const __envp[])
rb_execution_context_struct::tag
struct rb_vm_tag * tag
Definition: vm_core.h:849
rb_find_file_safe
VALUE rb_find_file_safe(VALUE, int)
Definition: file.c:6329
link
int link(const char *__path1, const char *__path2)
Definition: win32.c:4931
wchar_t
short unsigned int wchar_t
Definition: rb_mjit_min_header-2.7.0.h:821
rb_method_type_t
rb_method_type_t
Definition: rb_mjit_min_header-2.7.0.h:8827
rb_file_open
VALUE rb_file_open(const char *, const char *)
Definition: io.c:6259
timer_gettime
int timer_gettime(timer_t timerid, struct itimerspec *value)
asniprintf
int int int int int int int int char * asniprintf(char *, size_t *, const char *,...) __attribute__((__format__(__printf__
rb_int_divmod
VALUE rb_int_divmod(VALUE x, VALUE y)
Definition: numeric.c:3963
rb_int_and
VALUE rb_int_and(VALUE x, VALUE y)
Definition: numeric.c:4467
RCLASS_SUPER
#define RCLASS_SUPER(c)
rb_memcicmp
int rb_memcicmp(const void *, const void *, long)
Definition: re.c:80
rb_stdin
VALUE rb_stdin
Definition: ruby.h:2090
VM_METHOD_TYPE_MISSING
@ VM_METHOD_TYPE_MISSING
Definition: rb_mjit_min_header-2.7.0.h:8838
rb_struct_init_copy
VALUE rb_struct_init_copy(VALUE copy, VALUE s)
Definition: struct.c:977
rb_f_exec
VALUE rb_f_exec(int argc, const VALUE *argv)
Definition: process.c:2882
tgammal
long double tgammal(long double)
CALL_CACHE
struct rb_call_cache * CALL_CACHE
Definition: rb_mjit_min_header-2.7.0.h:10046
rb_method_definition_struct::optimize_type
enum method_optimized_type optimize_type
Definition: method.h:176
fill_values_arg::keys
VALUE * keys
Definition: vm_args.c:557
RNode::tbl
ID * tbl
Definition: node.h:155
RRegexp::ptr
struct re_pattern_buffer * ptr
Definition: ruby.h:1114
rb_to_hash_type
VALUE rb_to_hash_type(VALUE obj)
Definition: hash.c:1818
ceill
long double ceill(long double)
id_core_set_method_alias
@ id_core_set_method_alias
Definition: rb_mjit_min_header-2.7.0.h:8592
rb_thread_sleep_forever
void rb_thread_sleep_forever(void)
Definition: thread.c:1314
ruby_debug_print_value
VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v)
Definition: debug.c:96
rb_hash_stlike_foreach
int rb_hash_stlike_foreach(VALUE hash, st_foreach_callback_func *func, st_data_t arg)
Definition: hash.c:1420
ruby_current_vm_ptr
rb_vm_t * ruby_current_vm_ptr
Definition: vm.c:372
rb_eIndexError
VALUE rb_eIndexError
Definition: error.c:924
_dprintf_r
int char char int int int _dprintf_r(struct _reent *, int, const char *__restrict,...) __attribute__((__format__(__printf__
ruby_debug_counter_show_at_exit
void ruby_debug_counter_show_at_exit(int enable)
Definition: debug_counter.c:131
rb_method_definition_struct::refined
rb_method_refined_t refined
Definition: method.h:173
YARVINSN_definemethod
@ YARVINSN_definemethod
Definition: rb_mjit_min_header-2.7.0.h:12018
rb_method_iseq_struct
Definition: method.h:126
rb_thread_to_be_killed
int rb_thread_to_be_killed(VALUE thread)
Definition: thread.c:2472
rb_st_init_table_with_size
st_table * rb_st_init_table_with_size(const struct st_hash_type *, st_index_t)
RARRAY_EMBED_LEN_SHIFT
#define RARRAY_EMBED_LEN_SHIFT
l64a
char * l64a(long __input)
NODE_OP_CDECL
@ NODE_OP_CDECL
Definition: rb_mjit_min_header-2.7.0.h:8117
rb_iseq_location_struct::first_lineno
VALUE first_lineno
Definition: vm_core.h:276
rb_output_rs
VALUE rb_output_rs
Definition: intern.h:587
rb_method_visibility_t
rb_method_visibility_t
Definition: method.h:26
RHASH_TRANSIENT_FLAG
@ RHASH_TRANSIENT_FLAG
Definition: rb_mjit_min_header-2.7.0.h:6866
rb_iseq_load_iseq
const rb_iseq_t * rb_iseq_load_iseq(VALUE fname)
Definition: iseq.c:847
rb_is_attrset_sym
int rb_is_attrset_sym(VALUE sym)
Definition: symbol.c:902
_fprintf_r
int _fprintf_r(struct _reent *, FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
rb_ensure_entry::marker
VALUE marker
Definition: vm_core.h:829
YARVINSN_trace_concatarray
@ YARVINSN_trace_concatarray
Definition: rb_mjit_min_header-2.7.0.h:12104
METHOD_VISI_UNDEF
@ METHOD_VISI_UNDEF
Definition: rb_mjit_min_header-2.7.0.h:8764
builtin_binary::bin
const unsigned char * bin
Definition: builtin.h:74
_dtoa_r
char * _dtoa_r(struct _reent *, double, int, int, int *, int *, char **)
rb_stderr_tty_p
int rb_stderr_tty_p(void)
Definition: io.c:7958
exp2f
float exp2f(float)
rb_Float
VALUE rb_Float(VALUE)
Equivalent to Kernel#Float in Ruby.
Definition: object.c:3493
RB_DEBUG_COUNTER_mjit_exec_not_ready
@ RB_DEBUG_COUNTER_mjit_exec_not_ready
Definition: rb_mjit_min_header-2.7.0.h:11685
rb_hash_bulk_insert_into_st_table
void rb_hash_bulk_insert_into_st_table(long, const VALUE *, VALUE)
Definition: st.c:2380
rb_block_arity
int rb_block_arity(void)
Definition: proc.c:1144
pthread_spin_trylock
int pthread_spin_trylock(pthread_spinlock_t *)
rb_define_readonly_variable
void rb_define_readonly_variable(const char *, const VALUE *)
Definition: variable.c:505
VALUE
unsigned long VALUE
Definition: rb_mjit_min_header-2.7.0.h:3990
RB_DEBUG_COUNTER_ccf_opt_send
@ RB_DEBUG_COUNTER_ccf_opt_send
Definition: rb_mjit_min_header-2.7.0.h:11556
rb_class_detach_module_subclasses
void rb_class_detach_module_subclasses(VALUE)
Definition: class.c:145
_putchar_r
int _putchar_r(struct _reent *, int)
vm_svar::backref
const VALUE backref
Definition: internal.h:1185
idConst_missing
@ idConst_missing
Definition: rb_mjit_min_header-2.7.0.h:8691
idNUMPARAM_1
@ idNUMPARAM_1
Definition: rb_mjit_min_header-2.7.0.h:8741
RB_DEBUG_COUNTER_obj_hash_transient
@ RB_DEBUG_COUNTER_obj_hash_transient
Definition: rb_mjit_min_header-2.7.0.h:11638
idOr
@ idOr
Definition: rb_mjit_min_header-2.7.0.h:8573
rb_st_init_strcasetable
st_table * rb_st_init_strcasetable(void)
ci
rb_control_frame_t struct rb_calling_info const struct rb_call_info * ci
Definition: rb_mjit_min_header-2.7.0.h:15146
rb_thread_reset_timer_thread
void rb_thread_reset_timer_thread(void)
Definition: thread.c:4425
rb_vm_tag::prev
struct rb_vm_tag * prev
Definition: vm_core.h:803
rb_method_refined_struct::orig_me
struct rb_method_entry_struct * orig_me
Definition: method.h:147
tTo_r
@ tTo_r
Definition: rb_mjit_min_header-2.7.0.h:8643
tNUMPARAM_4
@ tNUMPARAM_4
Definition: rb_mjit_min_header-2.7.0.h:8663
YARVINSN_trace_opt_neq
@ YARVINSN_trace_opt_neq
Definition: rb_mjit_min_header-2.7.0.h:12148
RB_DEBUG_COUNTER_frame_R2R
@ RB_DEBUG_COUNTER_frame_R2R
Definition: rb_mjit_min_header-2.7.0.h:11570
RUBY_T_RATIONAL
@ RUBY_T_RATIONAL
Definition: rb_mjit_min_header-2.7.0.h:4341
putenv
int putenv(char *__string)
rb_mWaitReadable
VALUE rb_mWaitReadable
Definition: ruby.h:2006
FPE_FLTUND
#define FPE_FLTUND
Definition: rb_mjit_min_header-2.7.0.h:2200
_setenv_r
int _setenv_r(struct _reent *, const char *__string, const char *__value, int __overwrite)
fmod
double fmod(double, double)
rb_vm_rewind_cfp
void rb_vm_rewind_cfp(rb_execution_context_t *ec, rb_control_frame_t *cfp)
Definition: vm.c:604
rb_iseq_struct::index
int index
Definition: vm_core.h:467
RB_INT_PARSE_ALL
@ RB_INT_PARSE_ALL
Definition: rb_mjit_min_header-2.7.0.h:7937
__fpclassifyd
int __fpclassifyd(double x)
rb_big_le
VALUE rb_big_le(VALUE x, VALUE y)
Definition: bignum.c:5507
imemo
union @11::@13 imemo
pthread_once_t::state
int state
Definition: rb_mjit_min_header-2.7.0.h:1357
pthread_cancel
int pthread_cancel(pthread_t)
rb_mod_syserr_fail
void rb_mod_syserr_fail(VALUE mod, int e, const char *mesg)
Definition: error.c:2849
rb_iseq_ibf_load_extra_data
VALUE rb_iseq_ibf_load_extra_data(VALUE str)
Definition: compile.c:11630
_iprintf_r
int _iprintf_r(struct _reent *, const char *,...) __attribute__((__format__(__printf__
rb_str_free
void rb_str_free(VALUE)
Definition: string.c:1349
RB_DEBUG_COUNTER_artable_hint_notfound
@ RB_DEBUG_COUNTER_artable_hint_notfound
Definition: rb_mjit_min_header-2.7.0.h:11675
fseek
int fseek(FILE *, long, int)
__pthread_barrier_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1353
YARVINSN_trace_once
@ YARVINSN_trace_once
Definition: rb_mjit_min_header-2.7.0.h:12140
tTo_s
@ tTo_s
Definition: rb_mjit_min_header-2.7.0.h:8640
rb_catch_obj
VALUE rb_catch_obj(VALUE, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2330
rb_hash_clear
VALUE rb_hash_clear(VALUE)
Definition: hash.c:2696
rb_ruby_debug_ptr
VALUE * rb_ruby_debug_ptr(void)
Definition: vm.c:3379
list_node::prev
struct list_node * prev
Definition: rb_mjit_min_header-2.7.0.h:8973
rb_io_gets
VALUE rb_io_gets(VALUE)
Definition: io.c:3573
rb_int_abs
VALUE rb_int_abs(VALUE num)
Definition: numeric.c:4855
RB_DEBUG_COUNTER_mc_cme_complement
@ RB_DEBUG_COUNTER_mc_cme_complement
Definition: rb_mjit_min_header-2.7.0.h:11533
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
rb_captured_block::self
VALUE self
Definition: vm_core.h:728
rb_detach_process
VALUE rb_detach_process(pid_t pid)
tm::tm_sec
int tm_sec
Definition: rb_mjit_min_header-2.7.0.h:1934
MEMO::reserved
VALUE reserved
Definition: internal.h:1280
RB_DEBUG_COUNTER_obj_imemo_cref
@ RB_DEBUG_COUNTER_obj_imemo_cref
Definition: rb_mjit_min_header-2.7.0.h:11667
RB_DEBUG_COUNTER_gc_count
@ RB_DEBUG_COUNTER_gc_count
Definition: rb_mjit_min_header-2.7.0.h:11592
rb_ary_cat
VALUE rb_ary_cat(VALUE, const VALUE *, long)
Definition: array.c:1208
rb_big_minus
VALUE rb_big_minus(VALUE, VALUE)
Definition: bignum.c:5853
_mbstowcs_r
size_t _mbstowcs_r(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *)
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.0.h:12353
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:850
rb_find_file
VALUE rb_find_file(VALUE)
Definition: file.c:6336
rb_class_path_cached
VALUE rb_class_path_cached(VALUE)
Definition: variable.c:162
CONST_VISIBILITY_MASK
@ CONST_VISIBILITY_MASK
Definition: rb_mjit_min_header-2.7.0.h:12182
IVC
struct iseq_inline_iv_cache_entry * IVC
Definition: rb_mjit_min_header-2.7.0.h:10043
pthread_rwlockattr_init
int pthread_rwlockattr_init(pthread_rwlockattr_t *rwlockattr)
ruby_id_types
ruby_id_types
Definition: id.h:16
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
RUBY_TAG_NONE
@ RUBY_TAG_NONE
Definition: rb_mjit_min_header-2.7.0.h:9423
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
NODE_MATCH
@ NODE_MATCH
Definition: rb_mjit_min_header-2.7.0.h:8139
rb_mjit_compile_info::disable_inlining
_Bool disable_inlining
Definition: rb_mjit_min_header-2.7.0.h:11738
rb_at_exit_list
struct rb_at_exit_list rb_at_exit_list
idInitialize
@ idInitialize
Definition: rb_mjit_min_header-2.7.0.h:8709
pthread_self
pthread_t pthread_self(void)
rb_obj_copy_ivar
void rb_obj_copy_ivar(VALUE dest, VALUE obj)
Definition: object.c:247
rand
int rand(void)
getc
int getc(FILE *)
rb_big_size_m
VALUE rb_big_size_m(VALUE big)
Definition: bignum.c:6784
rb_eNameError
VALUE rb_eNameError
Definition: error.c:927
atoi
int atoi(const char *__nptr)
NOT_COMPILED_JIT_ISEQ_FUNC
@ NOT_COMPILED_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.0.h:11721
YARVINSN_trace_newarray
@ YARVINSN_trace_newarray
Definition: rb_mjit_min_header-2.7.0.h:12099
BOP_PLUS
@ BOP_PLUS
Definition: rb_mjit_min_header-2.7.0.h:9634
rb_is_class_name
int rb_is_class_name(VALUE name)
Definition: symbol.c:1056
select
int select(int __n, _types_fd_set *__readfds, _types_fd_set *__writefds, _types_fd_set *__exceptfds, struct timeval *__timeout)
rb_eIOError
VALUE rb_eIOError
Definition: ruby.h:2064
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
RB_INT_PARSE_DEFAULT
@ RB_INT_PARSE_DEFAULT
Definition: rb_mjit_min_header-2.7.0.h:7938
rb_call_cache::method_serial
uintptr_t method_serial
Definition: internal.h:2374
VM_ENV_FLAG_LOCAL
@ VM_ENV_FLAG_LOCAL
Definition: rb_mjit_min_header-2.7.0.h:10075
iseq_inline_storage_entry::cache
struct iseq_inline_cache_entry cache
Definition: vm_core.h:236
YARVINSN_opt_aref
@ YARVINSN_opt_aref
Definition: rb_mjit_min_header-2.7.0.h:12053
rb_num_coerce_relop
VALUE rb_num_coerce_relop(VALUE, VALUE, ID)
Definition: numeric.c:461
RData::data
void * data
Definition: ruby.h:1143
ruby_xfree
void void ruby_xfree(void *)
Definition: gc.c:10150
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_DEBUG_COUNTER_obj_imemo_ment
@ RB_DEBUG_COUNTER_obj_imemo_ment
Definition: rb_mjit_min_header-2.7.0.h:11662
rb_iseq_constant_body::accepts_no_kwarg
unsigned int accepts_no_kwarg
Definition: vm_core.h:361
rb_freeze_singleton_class
void rb_freeze_singleton_class(VALUE x)
Definition: class.c:1674
RString::shared
VALUE shared
Definition: ruby.h:996
YARVINSN_trace_opt_le
@ YARVINSN_trace_opt_le
Definition: rb_mjit_min_header-2.7.0.h:12150
rb_calling_info
Definition: vm_core.h:250
ttyname
char * ttyname(int __fildes)
ROBJECT_EMBED
#define ROBJECT_EMBED
ptr
struct RIMemo * ptr
Definition: debug.c:74
NODE_CONST
@ NODE_CONST
Definition: rb_mjit_min_header-2.7.0.h:8135
YARVINSN_opt_getinlinecache
@ YARVINSN_opt_getinlinecache
Definition: rb_mjit_min_header-2.7.0.h:12035
ruby_xrealloc2
void * ruby_xrealloc2(void *, size_t, size_t) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(2
rb_clear_method_cache_by_class
void rb_clear_method_cache_by_class(VALUE)
Definition: vm_method.c:93
rb_iseq_trace_set_all
void rb_iseq_trace_set_all(rb_event_flag_t turnon_events)
Definition: iseq.c:3315
NODE_CASE
@ NODE_CASE
Definition: rb_mjit_min_header-2.7.0.h:8085
lgammal
long double lgammal(long double)
rb_big_hash
VALUE rb_big_hash(VALUE)
Definition: bignum.c:6726
rb_call_cache::method_state
rb_serial_t method_state
Definition: internal.h:2357
strtoimax
intmax_t strtoimax(const char *__restrict, char **__restrict, int)
vm_ifunc
IFUNC (Internal FUNCtion)
Definition: internal.h:1215
iseq_inline_cache_entry::value
VALUE value
Definition: vm_core.h:223
intmax_t
__intmax_t intmax_t
Definition: rb_mjit_min_header-2.7.0.h:1185
SI_ASYNCIO
#define SI_ASYNCIO
Definition: rb_mjit_min_header-2.7.0.h:2183
stat::st_dev
dev_t st_dev
Definition: rb_mjit_min_header-2.7.0.h:2386
setjmp
int setjmp(jmp_buf __jmpb)
rb_obj_info
const char * rb_obj_info(VALUE obj)
Definition: gc.c:11655
rb_class_subclass_add
void rb_class_subclass_add(VALUE super, VALUE klass)
Definition: class.c:36
mjit_update_references
void mjit_update_references(const rb_iseq_t *iseq)
ISE
union iseq_inline_storage_entry * ISE
Definition: rb_mjit_min_header-2.7.0.h:10044
rb_eval_cmd
VALUE rb_eval_cmd(VALUE, VALUE, int)
Definition: vm_eval.c:1822
YARVINSN_trace_opt_getinlinecache
@ YARVINSN_trace_opt_getinlinecache
Definition: rb_mjit_min_header-2.7.0.h:12138
rb_autoload_load
VALUE rb_autoload_load(VALUE, ID)
Definition: variable.c:2222
__tzrule_struct::s
int s
Definition: rb_mjit_min_header-2.7.0.h:1981
atof
double atof(const char *__nptr)
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
flockfile
void flockfile(FILE *)
__sFILE64::_ur
int _ur
Definition: rb_mjit_min_header-2.7.0.h:1027
rb_Integer
VALUE rb_Integer(VALUE)
Equivalent to Kernel#Integer in Ruby.
Definition: object.c:3106
rb_fstring_new
VALUE rb_fstring_new(const char *ptr, long len)
Definition: string.c:396
rb_method_iseq_struct::iseqptr
rb_iseq_t * iseqptr
iseq pointer, should be separated from iseqval
Definition: method.h:127
rb_func_proc_new
VALUE rb_func_proc_new(rb_block_call_func_t func, VALUE val)
Definition: proc.c:728
cmp_opt_data::opt_inited
unsigned int opt_inited
Definition: internal.h:1324
rb_mark_tbl
void rb_mark_tbl(struct st_table *)
Definition: gc.c:5005
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:2688
__sFILE::_flags
short _flags
Definition: vsnprintf.c:175
vdprintf
int vdprintf(int, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
idCall
@ idCall
Definition: rb_mjit_min_header-2.7.0.h:8727
rb_str_sublen
long rb_str_sublen(VALUE, long)
Definition: string.c:2463
_rand48
Definition: rb_mjit_min_header-2.7.0.h:1052
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:2272
a64l
long a64l(const char *__input)
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__
DEFINED_ASGN
@ DEFINED_ASGN
Definition: rb_mjit_min_header-2.7.0.h:10893
rb_integer_float_eq
VALUE rb_integer_float_eq(VALUE x, VALUE y)
Definition: bignum.c:5386
execvpe
int execvpe(const char *__file, char *const __argv[], char *const __envp[])
rb_unblock_function_t
void rb_unblock_function_t(void *)
Definition: rb_mjit_min_header-2.7.0.h:6161
YARVINSN_trace_concatstrings
@ YARVINSN_trace_concatstrings
Definition: rb_mjit_min_header-2.7.0.h:12094
RSTRUCT_ENUM_END
@ RSTRUCT_ENUM_END
Definition: rb_mjit_min_header-2.7.0.h:6918
RB_DEBUG_COUNTER_frame_push_ifunc
@ RB_DEBUG_COUNTER_frame_push_ifunc
Definition: rb_mjit_min_header-2.7.0.h:11566
clock
clock_t clock(void)
vscanf
int int int int vscanf(const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_noobject
Definition: rb_mjit_min_header-2.7.0.h:11578
rb_str_vcatf
VALUE VALUE rb_str_vcatf(VALUE, const char *, va_list)
Definition: sprintf.c:1210
rb_execarg::unsetenv_others_given
unsigned unsetenv_others_given
Definition: internal.h:2038
rb_ary_tmp_new_from_values
VALUE rb_ary_tmp_new_from_values(VALUE, long, const VALUE *)
Definition: array.c:748
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.0.h:11499
ruby_gc_set_params
void ruby_gc_set_params(void)
Definition: gc.c:9401
rb_mod_const_at
void * rb_mod_const_at(VALUE, void *)
Definition: variable.c:2559
rb_ary_assoc
VALUE rb_ary_assoc(VALUE, VALUE)
Definition: array.c:4156
RMODULE_INCLUDED_INTO_REFINEMENT
#define RMODULE_INCLUDED_INTO_REFINEMENT
rb_num2long
long rb_num2long(VALUE)
Definition: numeric.c:2849
rb_call_end_proc
void rb_call_end_proc(VALUE data)
Definition: eval_jump.c:11
len
__inline__ const void *__restrict size_t len
Definition: rb_mjit_min_header-2.7.0.h:2836
MISSING_NONE
@ MISSING_NONE
Definition: rb_mjit_min_header-2.7.0.h:7850
rb_check_funcall
VALUE rb_check_funcall(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:505
uintptr_t
unsigned int uintptr_t
Definition: win32.h:106
CONST_PUBLIC
@ CONST_PUBLIC
Definition: rb_mjit_min_header-2.7.0.h:12183
rb_io_binmode
VALUE rb_io_binmode(VALUE)
Definition: io.c:5334
rb_rational_canonicalize
VALUE rb_rational_canonicalize(VALUE x)
Definition: rational.c:2034
RTypedData::data
void * data
Definition: ruby.h:1172
_ssize_t
long signed int _ssize_t
Definition: rb_mjit_min_header-2.7.0.h:898
OFFSET
long OFFSET
Definition: vm_exec.h:15
mjit_finish
void mjit_finish(_Bool close_handle_p)
ruby_initial_gc_stress_ptr
VALUE * ruby_initial_gc_stress_ptr
Definition: gc.c:905
RB_DEBUG_COUNTER_mjit_cancel_opt_insn
@ RB_DEBUG_COUNTER_mjit_cancel_opt_insn
Definition: rb_mjit_min_header-2.7.0.h:11695
RB_DEBUG_COUNTER_obj_hash_st
@ RB_DEBUG_COUNTER_obj_hash_st
Definition: rb_mjit_min_header-2.7.0.h:11637
RSTRUCT_TRANSIENT_FLAG
@ RSTRUCT_TRANSIENT_FLAG
Definition: rb_mjit_min_header-2.7.0.h:6917
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
RB_DEBUG_COUNTER_gc_isptr_align
@ RB_DEBUG_COUNTER_gc_isptr_align
Definition: rb_mjit_min_header-2.7.0.h:11605
rb_iseqw_to_iseq
const rb_iseq_t * rb_iseqw_to_iseq(VALUE iseqw)
Definition: iseq.c:1350
rb_iseq_ibf_dump
VALUE rb_iseq_ibf_dump(const rb_iseq_t *iseq, VALUE opt)
Definition: compile.c:11378
NODE_MASGN
@ NODE_MASGN
Definition: rb_mjit_min_header-2.7.0.h:8105
rb_define_alloc_func
void rb_define_alloc_func(VALUE, rb_alloc_func_t)
__builtin_object_size
__builtin_object_size((cc), 0) !
RHash::st
st_table * st
Definition: internal.h:890
nanf
float nanf(const char *)
rb_execarg::argv_buf
VALUE argv_buf
Definition: internal.h:2028
rb_cClass
VALUE rb_cClass
Class class.
Definition: ruby.h:2016
RObject::ary
VALUE ary[ROBJECT_EMBED_LEN_MAX]
Definition: ruby.h:930
RNode::flags
VALUE flags
Definition: node.h:150
coshl
long double coshl(long double)
ssize_t
_ssize_t ssize_t
Definition: rb_mjit_min_header-2.7.0.h:1329
rb_parser_set_context
VALUE rb_parser_set_context(VALUE, const struct rb_iseq_struct *, int)
Definition: ripper.c:19234
rb_add_method_cfunc
void rb_add_method_cfunc(VALUE klass, ID mid, VALUE(*func)(), int argc, rb_method_visibility_t visi)
rb_method_entry_struct::owner
VALUE owner
Definition: method.h:56
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
idCFUNC
@ idCFUNC
Definition: rb_mjit_min_header-2.7.0.h:8591
hypotl
long double hypotl(long double, long double)
RUBY_T_ZOMBIE
@ RUBY_T_ZOMBIE
Definition: rb_mjit_min_header-2.7.0.h:4351
RObject::as
union RObject::@92 as
THREAD_RUNNABLE
@ THREAD_RUNNABLE
Definition: rb_mjit_min_header-2.7.0.h:9811
rb_name_error
void rb_name_error(ID id, const char *fmt,...)
Definition: error.c:1513
siginfo_t::si_value
sigval_t si_value
Definition: rb_mjit_min_header-2.7.0.h:2128
_fpos_t
long _fpos_t
Definition: rb_mjit_min_header-2.7.0.h:893
fdatasync
int fdatasync(int __fd)
pthread_rwlock_timedrdlock
int pthread_rwlock_timedrdlock(pthread_rwlock_t *rwlock, const struct timespec *abstime)
rb_method_visibility_t
rb_method_visibility_t
Definition: rb_mjit_min_header-2.7.0.h:8763
__pthread_attr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1348
rb_gvar_get
VALUE rb_gvar_get(struct rb_global_entry *)
Definition: variable.c:619
BOP_LAST_
@ BOP_LAST_
Definition: rb_mjit_min_header-2.7.0.h:9663
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.0.h:1796
RUBY_ID_STATIC_SYM
@ RUBY_ID_STATIC_SYM
Definition: rb_mjit_min_header-2.7.0.h:8494
rb_refinement_module_get_refined_class
VALUE rb_refinement_module_get_refined_class(VALUE module)
Definition: eval.c:1480
RFloat::float_value
double float_value
Definition: internal.h:800
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.0.h:5425
srandom
void srandom(unsigned)
rb_method_definition_struct::alias_count
int alias_count
Definition: method.h:165
tMethod_undefined
@ tMethod_undefined
Definition: rb_mjit_min_header-2.7.0.h:8616
uint8_t
__uint8_t uint8_t
Definition: rb_mjit_min_header-2.7.0.h:1167
rb_global_vm_lock_struct::owner
const struct rb_thread_struct * owner
Definition: thread_pthread.h:50
NODE_NIL
@ NODE_NIL
Definition: rb_mjit_min_header-2.7.0.h:8174
rb_cRational
VALUE rb_cRational
Definition: ruby.h:2041
YARVINSN_definesmethod
@ YARVINSN_definesmethod
Definition: rb_mjit_min_header-2.7.0.h:12019
RUBY_Qtrue
#define RUBY_Qtrue
Definition: rb_mjit_min_header-2.7.0.h:4308
__pthread_mutex_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1346
NODE_OPCALL
@ NODE_OPCALL
Definition: rb_mjit_min_header-2.7.0.h:8119
RB_DEBUG_COUNTER_obj_hash_g8
@ RB_DEBUG_COUNTER_obj_hash_g8
Definition: rb_mjit_min_header-2.7.0.h:11634
rb_ensure_list_t
struct rb_ensure_list rb_ensure_list_t
YARVINSN_getinstancevariable
@ YARVINSN_getinstancevariable
Definition: rb_mjit_min_header-2.7.0.h:11978
NODE_OP_ASGN_OR
@ NODE_OP_ASGN_OR
Definition: rb_mjit_min_header-2.7.0.h:8116
siginfo_t::si_signo
int si_signo
Definition: rb_mjit_min_header-2.7.0.h:2114
rb_next_class_serial
rb_serial_t rb_next_class_serial(void)
Definition: vm.c:358
j0f
float j0f(float)
strlen
size_t strlen(const char *)
modfl
long double modfl(long double, long double *)
lldiv_t
Definition: rb_mjit_min_header-2.7.0.h:2555
rb_st_update
int rb_st_update(st_table *table, st_data_t key, st_update_callback_func *func, st_data_t arg)
rb_str_locktmp
VALUE rb_str_locktmp(VALUE)
tSize
@ tSize
Definition: rb_mjit_min_header-2.7.0.h:8619
rb_vm_struct::expanded_load_path
VALUE expanded_load_path
Definition: vm_core.h:618
RB_DEBUG_COUNTER_obj_str_embed
@ RB_DEBUG_COUNTER_obj_str_embed
Definition: rb_mjit_min_header-2.7.0.h:11617
rb_objspace_data_type_memsize
size_t rb_objspace_data_type_memsize(VALUE obj)
Definition: gc.c:2417
_vfiscanf_r
int char char int int int int int _vfiscanf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__scanf__
rb_st_init_table
st_table * rb_st_init_table(const struct st_hash_type *)
rb_builtin_function::index
const int index
Definition: builtin.h:12
pthread_cond_t
struct __pthread_cond_t * pthread_cond_t
NODE_COLON3
@ NODE_COLON3
Definition: rb_mjit_min_header-2.7.0.h:8168
st_hash_func
st_index_t st_hash_func(st_data_t)
Definition: rb_mjit_min_header-2.7.0.h:5369
CLD_CONTINUED
#define CLD_CONTINUED
Definition: rb_mjit_min_header-2.7.0.h:2214
DEFINED_SELF
@ DEFINED_SELF
Definition: rb_mjit_min_header-2.7.0.h:10890
rb_iseq_constant_body::parent_iseq
const struct rb_iseq_struct * parent_iseq
Definition: vm_core.h:417
u_int32_t
__uint32_t u_int32_t
Definition: rb_mjit_min_header-2.7.0.h:1159
fabs
double fabs(double)
imemo_memo
@ imemo_memo
Definition: rb_mjit_min_header-2.7.0.h:7053
rb_invcmp
VALUE rb_invcmp(VALUE, VALUE)
Definition: compar.c:47
fsfilcnt_t
__fsfilcnt_t fsfilcnt_t
Definition: rb_mjit_min_header-2.7.0.h:1311
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
ruby_check_sizeof_long
char ruby_check_sizeof_long[8==sizeof(long) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.0.h:3996
rb_cInteger
VALUE rb_cInteger
Definition: ruby.h:2031
__sFILE::_lb
struct __sbuf _lb
Definition: rb_mjit_min_header-2.7.0.h:1000
YARVINSN_invokesuper
@ YARVINSN_invokesuper
Definition: rb_mjit_min_header-2.7.0.h:12027
rb_method_iseq_t
struct rb_method_iseq_struct rb_method_iseq_t
rb_iseq_struct::aux
union rb_iseq_struct::@181 aux
_fiscanf_r
int int _fiscanf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__scanf__
pow10l
float pow10l(float)
bcopy
#define bcopy(src, dst, len)
Definition: rb_mjit_min_header-2.7.0.h:2756
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
__signbitd
int __signbitd(double x)
rb_big_or
VALUE rb_big_or(VALUE, VALUE)
Definition: bignum.c:6479
rb_hash_bulk_insert
void rb_hash_bulk_insert(long, const VALUE *, VALUE)
Definition: hash.c:4515
__suseconds_t
long __suseconds_t
Definition: rb_mjit_min_header-2.7.0.h:933
SI_USER
#define SI_USER
Definition: rb_mjit_min_header-2.7.0.h:2182
rb_obj_respond_to
int rb_obj_respond_to(VALUE, ID, int)
Definition: vm_method.c:2180
RUBY_ID_INSTANCE
@ RUBY_ID_INSTANCE
Definition: rb_mjit_min_header-2.7.0.h:8496
printf
int int int printf(const char *__restrict,...) __attribute__((__format__(__printf__
rb_big_uminus
VALUE rb_big_uminus(VALUE x)
Definition: bignum.c:5554
rb_str_change_terminator_length
void rb_str_change_terminator_length(VALUE str, const int oldtermlen, const int termlen)
Definition: string.c:2230
rb_mark_end_proc
void rb_mark_end_proc(void)
Definition: eval_jump.c:78
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.0.h:14544
rb_hash_start
st_index_t rb_hash_start(st_index_t)
Definition: random.c:1434
rb_scan_args_kw
int rb_scan_args_kw(int, int, const VALUE *, const char *,...)
Definition: class.c:2180
rb_iseq_eval
int const void const char VALUE rb_iseq_eval(const rb_iseq_t *iseq)
Definition: vm.c:2163
mjit_options::warnings
char warnings
Definition: rb_mjit_min_header-2.7.0.h:11727
RIMemo::flags
VALUE flags
Definition: internal.h:1125
ruby_finalize
void ruby_finalize(void)
Runs the VM finalization processes.
Definition: eval.c:162
SEGV_ACCERR
#define SEGV_ACCERR
Definition: rb_mjit_min_header-2.7.0.h:2205
geteuid
uid_t geteuid(void)
Definition: win32.c:2772
rb_attr_delete
VALUE rb_attr_delete(VALUE, ID)
Definition: variable.c:1126
ruby_setup
int ruby_setup(void)
Initializes the VM and builtin libraries.
Definition: eval.c:55
BOP_MATCH
@ BOP_MATCH
Definition: rb_mjit_min_header-2.7.0.h:9655
rb_ary_plus
VALUE rb_ary_plus(VALUE, VALUE)
Definition: array.c:4000
exit
void exit(int __status) __attribute__((__noreturn__))
RIMemo
Definition: internal.h:1124
rb_tainted_str_new
VALUE rb_tainted_str_new(const char *, long)
Definition: string.c:896
tm::tm_mon
int tm_mon
Definition: rb_mjit_min_header-2.7.0.h:1938
rb_thread_start_timer_thread
void rb_thread_start_timer_thread(void)
Definition: thread.c:4431
YARVINSN_reverse
@ YARVINSN_reverse
Definition: rb_mjit_min_header-2.7.0.h:12009
_asniprintf_r
int char * _asniprintf_r(struct _reent *, char *, size_t *, const char *,...) __attribute__((__format__(__printf__
ILL_ILLOPN
#define ILL_ILLOPN
Definition: rb_mjit_min_header-2.7.0.h:2189
BOP_SUCC
@ BOP_SUCC
Definition: rb_mjit_min_header-2.7.0.h:9650
iseq_catch_table_entry::CATCH_TYPE_REDO
@ CATCH_TYPE_REDO
Definition: iseq.h:231
rb_enc_set_dummy
int rb_enc_set_dummy(int index)
Definition: encoding.c:393
rb_write_error
void rb_write_error(const char *)
Definition: io.c:7930
block_type_proc
@ block_type_proc
Definition: rb_mjit_min_header-2.7.0.h:9785
fgetpos
int fgetpos(FILE *__restrict, fpos_t *__restrict)
vm_ifunc::argc
struct vm_ifunc_argc argc
Definition: internal.h:1220
rb_gvar_undef_getter
rb_gvar_getter_t rb_gvar_undef_getter
Definition: rb_mjit_min_header-2.7.0.h:5099
strftime_l
size_t strftime_l(char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t, locale_t _l)
_system_r
int _system_r(struct _reent *, const char *)
rb_hash_set_default_proc
VALUE rb_hash_set_default_proc(VALUE hash, VALUE proc)
Definition: hash.c:2169
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.0.h:5421
YARVINSN_trace_setclassvariable
@ YARVINSN_trace_setclassvariable
Definition: rb_mjit_min_header-2.7.0.h:12084
rb_complex_div
VALUE rb_complex_div(VALUE x, VALUE y)
Definition: complex.c:948
ptsname
char * ptsname(int)
_uc_fpxreg::significand
__uint16_t significand[4]
Definition: rb_mjit_min_header-2.7.0.h:2008
rb_fix2ushort
unsigned short rb_fix2ushort(VALUE)
Definition: numeric.c:3069
sync
void sync(void)
__fsblkcnt_t
unsigned long __fsblkcnt_t
Definition: rb_mjit_min_header-2.7.0.h:848
rb_args_info::first_post_arg
ID first_post_arg
Definition: node.h:438
ruby_dtrace_method_hook_args::klass
volatile VALUE klass
Definition: probes_helper.h:11
uint32_t
unsigned int uint32_t
Definition: sha2.h:101
_LOCK_T
void * _LOCK_T
Definition: rb_mjit_min_header-2.7.0.h:864
rb_math_sin
VALUE rb_math_sin(VALUE)
rb_vm_frame_block_handler
VALUE rb_vm_frame_block_handler(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.0.h:11387
rb_fdset_t::fdset
_types_fd_set * fdset
Definition: rb_mjit_min_header-2.7.0.h:5707
RB_DEBUG_COUNTER_lvar_set_slowpath
@ RB_DEBUG_COUNTER_lvar_set_slowpath
Definition: rb_mjit_min_header-2.7.0.h:11591
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:1767
strerror
char * strerror(int)
Definition: strerror.c:11
RData::dfree
void(* dfree)(void *)
Definition: ruby.h:1142
rb_ast_body_t
struct rb_ast_body_struct rb_ast_body_t
VM_FRAME_FLAG_CFRAME_KW
@ VM_FRAME_FLAG_CFRAME_KW
Definition: rb_mjit_min_header-2.7.0.h:10073
rb_get_alloc_func
rb_alloc_func_t rb_get_alloc_func(VALUE)
Definition: vm_method.c:728
st_table::entries
st_table_entry * entries
Definition: st.h:94
RAISED_EXCEPTION
@ RAISED_EXCEPTION
Definition: rb_mjit_min_header-2.7.0.h:11180
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.0.h:2185
vm_svar::others
const VALUE others
Definition: internal.h:1186
RB_DEBUG_COUNTER_mjit_exec_call_func
@ RB_DEBUG_COUNTER_mjit_exec_call_func
Definition: rb_mjit_min_header-2.7.0.h:11687
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.0.h:7662
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:862
YARVINSN_concatstrings
@ YARVINSN_concatstrings
Definition: rb_mjit_min_header-2.7.0.h:11991
sincosf
void sincosf(float, float *, float *)
putchar
int putchar(int)
NODE_IASGN
@ NODE_IASGN
Definition: rb_mjit_min_header-2.7.0.h:8110
tm::tm_mday
int tm_mday
Definition: rb_mjit_min_header-2.7.0.h:1937
_strtoull_r
unsigned long long _strtoull_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
flsll
int flsll(long long) __attribute__((__const__))
RUBY_Qnil
#define RUBY_Qnil
Definition: rb_mjit_min_header-2.7.0.h:4309
rb_execarg::cmd
struct rb_execarg::@110::@112 cmd
RNode::u2
union RNode::@123 u2
scalbln
double scalbln(double, long int)
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
__fsfilcnt_t
unsigned long __fsfilcnt_t
Definition: rb_mjit_min_header-2.7.0.h:850
erfc
double erfc(double)
Definition: erf.c:81
rb_utf8_str_new_static
VALUE rb_utf8_str_new_static(const char *, long)
Definition: string.c:884
native_thread_data_struct::gvl
struct list_node gvl
Definition: thread_pthread.h:26
rb_compile_option_struct::coverage_enabled
unsigned int coverage_enabled
Definition: iseq.h:216
NODE_XSTR
@ NODE_XSTR
Definition: rb_mjit_min_header-2.7.0.h:8145
rb_time_timespec_interval
struct timespec rb_time_timespec_interval(VALUE num)
Definition: time.c:2706
fgets
char * fgets(char *__restrict, int, FILE *__restrict)
RUBY_TAG_RAISE
@ RUBY_TAG_RAISE
Definition: rb_mjit_min_header-2.7.0.h:9429
__off
__inline__ void size_t off_t __off
Definition: rb_mjit_min_header-2.7.0.h:3602
hypot
double hypot(double, double)
Definition: hypot.c:6
rb_sourcefile
const char * rb_sourcefile(void)
Definition: vm.c:1331
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
rb_file_open_str
VALUE rb_file_open_str(VALUE, const char *)
Definition: io.c:6252
pthread_spin_lock
int pthread_spin_lock(pthread_spinlock_t *)
RB_DEBUG_COUNTER_mc_global_miss
@ RB_DEBUG_COUNTER_mc_global_miss
Definition: rb_mjit_min_header-2.7.0.h:11530
idSend
@ idSend
Definition: rb_mjit_min_header-2.7.0.h:8706
int64_t
__int64_t int64_t
Definition: rb_mjit_min_header-2.7.0.h:1180
gethostid
long gethostid(void)
idTo_str
@ idTo_str
Definition: rb_mjit_min_header-2.7.0.h:8715
tLambda
@ tLambda
Definition: rb_mjit_min_header-2.7.0.h:8624
__intmax_t
long int __intmax_t
Definition: rb_mjit_min_header-2.7.0.h:644
rb_Rational
VALUE rb_Rational(VALUE, VALUE)
Definition: rational.c:1951
rb_classext_struct::const_tbl
struct rb_id_table * const_tbl
Definition: internal.h:1026
mjit_compile
_Bool mjit_compile(FILE *f, const rb_iseq_t *iseq, const char *funcname)
rb_funcallv_public_kw
VALUE rb_funcallv_public_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:986
RUBY_T_FILE
@ RUBY_T_FILE
Definition: rb_mjit_min_header-2.7.0.h:4337
rb_str_equal
VALUE rb_str_equal(VALUE str1, VALUE str2)
Definition: string.c:3267
rb_int_plus
VALUE rb_int_plus(VALUE x, VALUE y)
Definition: numeric.c:3610
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
idObject_id
@ idObject_id
Definition: rb_mjit_min_header-2.7.0.h:8690
tNil
@ tNil
Definition: rb_mjit_min_header-2.7.0.h:8658
rb_readwrite_syserr_fail
void rb_readwrite_syserr_fail(enum rb_io_wait_readwrite writable, int n, const char *mesg)
Definition: io.c:12929
RB_DEBUG_COUNTER_frame_push_rescue
@ RB_DEBUG_COUNTER_frame_push_rescue
Definition: rb_mjit_min_header-2.7.0.h:11568
YARVINSN_trace_opt_or
@ YARVINSN_trace_opt_or
Definition: rb_mjit_min_header-2.7.0.h:12155
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
rb_big_rshift
VALUE rb_big_rshift(VALUE, VALUE)
Definition: bignum.c:6651
last
unsigned int last
Definition: nkf.c:4324
vfprintf
int int int int int int vfprintf(FILE *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
NODE_DEFINED
@ NODE_DEFINED
Definition: rb_mjit_min_header-2.7.0.h:8178
rb_reg_nth_defined
VALUE rb_reg_nth_defined(int, VALUE)
Definition: re.c:1688
_sigcommune::_si_pipe_unique_id
int64_t _si_pipe_unique_id
Definition: rb_mjit_min_header-2.7.0.h:2107
dreml
float dreml(long double, long double)
strnlen
size_t strnlen(const char *, size_t)
getline
ssize_t getline(char **, size_t *, FILE *)
_mblen_r
int _mblen_r(struct _reent *, const char *, size_t, _mbstate_t *)
int_fast64_t
long int int_fast64_t
Definition: rb_mjit_min_header-2.7.0.h:2930
pthread_cond_destroy
int pthread_cond_destroy(pthread_cond_t *)
mkstemps
int mkstemps(char *, int)
ruby_exec_prefix
const char *const char ruby_exec_prefix[]
Definition: loadpath.c:59
rb_fatal
void rb_fatal(const char *fmt,...)
Definition: error.c:2720
__time_t
long __time_t
Definition: rb_mjit_min_header-2.7.0.h:926
miss_argc
const rb_iseq_t const int miss_argc
Definition: rb_mjit_min_header-2.7.0.h:13505
NODE_DSYM
@ NODE_DSYM
Definition: rb_mjit_min_header-2.7.0.h:8180
pthread_continue
int pthread_continue(pthread_t)
rb_thread_struct::thread_invoke_type_none
@ thread_invoke_type_none
Definition: vm_core.h:976
YARVINSN_newarray
@ YARVINSN_newarray
Definition: rb_mjit_min_header-2.7.0.h:11996
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:3385
sincosl
void sincosl(long double, long double *, long double *)
ftruncate
int ftruncate(int __fd, off_t __length)
sysconf
long sysconf(int __name)
RB_DEBUG_COUNTER_mjit_exec
@ RB_DEBUG_COUNTER_mjit_exec
Definition: rb_mjit_min_header-2.7.0.h:11682
fmaxf
float fmaxf(float, float)
idRespond_to
@ idRespond_to
Definition: rb_mjit_min_header-2.7.0.h:8588
uint_fast64_t
long unsigned int uint_fast64_t
Definition: rb_mjit_min_header-2.7.0.h:2931
rb_big_mul_toom3
VALUE rb_big_mul_toom3(VALUE x, VALUE y)
Definition: bignum.c:2267
_strtoul_r
unsigned long _strtoul_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_is_junk_id
int rb_is_junk_id(ID id)
Definition: symbol.c:890
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:2055
rb_get_coverage_mode
int rb_get_coverage_mode(void)
Definition: thread.c:5483
gen_ivtbl::ivptr
VALUE ivptr[FLEX_ARY_LEN]
Definition: variable.h:6
error
const rb_iseq_t const char * error
Definition: rb_mjit_min_header-2.7.0.h:13506
RRegexp::basic
struct RBasic basic
Definition: ruby.h:1113
finitel
int finitel(long double)
id_debug_created_info
@ id_debug_created_info
Definition: rb_mjit_min_header-2.7.0.h:8601
__sFILE::_mbstate
_mbstate_t _mbstate
Definition: rb_mjit_min_header-2.7.0.h:1005
rb_str_new_static
VALUE rb_str_new_static(const char *, long)
Definition: string.c:872
rb_funcall_with_block_kw
VALUE rb_funcall_with_block_kw(VALUE, ID, int, const VALUE *, VALUE, int)
Definition: vm_eval.c:1060
YARVINSN_putobject_INT2FIX_0_
@ YARVINSN_putobject_INT2FIX_0_
Definition: rb_mjit_min_header-2.7.0.h:12071
rb_hash_delete
VALUE rb_hash_delete(VALUE, VALUE)
Definition: hash.c:2271
rb_method_alias_struct
Definition: method.h:142
rb_method_definition_struct::bmethod
rb_method_bmethod_t bmethod
Definition: method.h:174
pthread_once
int pthread_once(pthread_once_t *, void(*)(void))
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.0.h:10860
signal
_sig_func_ptr signal(int, _sig_func_ptr)
Init_File
void Init_File(void)
Definition: file.c:6435
rb_vm_exec
VALUE rb_vm_exec(rb_execution_context_t *ec, int mjit_enable_p)
tNUMPARAM_6
@ tNUMPARAM_6
Definition: rb_mjit_min_header-2.7.0.h:8665
rb_set_class_path
void rb_set_class_path(VALUE, VALUE, const char *)
Definition: variable.c:218
pthread_condattr_getclock
int pthread_condattr_getclock(const pthread_condattr_t *, clockid_t *)
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:649
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.0.h:1404
MISSING_PRIVATE
@ MISSING_PRIVATE
Definition: rb_mjit_min_header-2.7.0.h:7844
NODE_QCALL
@ NODE_QCALL
Definition: rb_mjit_min_header-2.7.0.h:8122
pthread_setcancelstate
int pthread_setcancelstate(int, int *)
strverscmp
int strverscmp(const char *, const char *)
THREAD_STOPPED_FOREVER
@ THREAD_STOPPED_FOREVER
Definition: rb_mjit_min_header-2.7.0.h:9813
rb_free_tmp_buffer
void void rb_free_tmp_buffer(volatile VALUE *store)
Definition: gc.c:10257
rb_threadptr_execute_interrupts
int rb_threadptr_execute_interrupts(rb_thread_t *, int)
Definition: thread.c:2194
rb_alloc_tmp_buffer
void * rb_alloc_tmp_buffer(volatile VALUE *store, long len) __attribute__((alloc_size(2)))
Definition: gc.c:10245
YARVINSN_opt_str_freeze
@ YARVINSN_opt_str_freeze
Definition: rb_mjit_min_header-2.7.0.h:12022
rb_global_vm_lock_struct::need_yield
int need_yield
Definition: thread_pthread.h:71
strcoll
int strcoll(const char *, const char *)
_drand48_r
double _drand48_r(struct _reent *)
rb_xmalloc_mul_add
void * rb_xmalloc_mul_add(size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10156
_sigcommune
Definition: rb_mjit_min_header-2.7.0.h:2095
rb_str_modify
void rb_str_modify(VALUE)
Definition: string.c:2114
native_thread_data_struct::ubf
struct list_node ubf
Definition: thread_pthread.h:25
rb_gvar_undef_marker
rb_gvar_marker_t rb_gvar_undef_marker
Definition: rb_mjit_min_header-2.7.0.h:5101
__sFILE64::_seek
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
Definition: rb_mjit_min_header-2.7.0.h:1023
idSingleton_method_added
@ idSingleton_method_added
Definition: rb_mjit_min_header-2.7.0.h:8694
rb_trace_arg_struct::cfp
const rb_control_frame_t * cfp
Definition: vm_core.h:1877
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
rb_fiber_start
void rb_fiber_start(void)
Definition: cont.c:1790
tFdiv
@ tFdiv
Definition: rb_mjit_min_header-2.7.0.h:8655
__ssp_real_getcwd
char * __ssp_real_getcwd(char *__buf, size_t __len) __asm__("" "getcwd")
atexit
int atexit(void(*__func)(void))
ILL_PRVOPC
#define ILL_PRVOPC
Definition: rb_mjit_min_header-2.7.0.h:2192
rb_call_info::orig_argc
int orig_argc
Definition: internal.h:2391
rb_fiber_current
VALUE rb_fiber_current(void)
Definition: cont.c:1942
u_int64_t
__uint64_t u_int64_t
Definition: rb_mjit_min_header-2.7.0.h:1160
__cleanup_routine_type
void(* __cleanup_routine_type)(void *)
Definition: rb_mjit_min_header-2.7.0.h:9242
NODE_NEXT
@ NODE_NEXT
Definition: rb_mjit_min_header-2.7.0.h:8096
YARVINSN_opt_ge
@ YARVINSN_opt_ge
Definition: rb_mjit_min_header-2.7.0.h:12049
rb_num_coerce_bit
VALUE rb_num_coerce_bit(VALUE, VALUE, ID)
Definition: numeric.c:4426
YARVINSN_once
@ YARVINSN_once
Definition: rb_mjit_min_header-2.7.0.h:12037
RMODULE_IS_OVERLAID
#define RMODULE_IS_OVERLAID
rb_const_entry_struct::flag
rb_const_flag_t flag
Definition: constant.h:32
rb_autoloading_value
int rb_autoloading_value(VALUE mod, ID id, VALUE *value, rb_const_flag_t *flag)
Definition: variable.c:2074
_raise_r
int _raise_r(struct _reent *, int)
tPRESERVED_ID_END
@ tPRESERVED_ID_END
Definition: rb_mjit_min_header-2.7.0.h:8602
rb_iseq_constant_body
Definition: vm_core.h:311
y1
double y1(double)
strncmp
int strncmp(const char *, const char *, size_t)
rb_iseq_constant_body::opt_table
const VALUE * opt_table
Definition: vm_core.h:374
rb_args_info::kw_args
NODE * kw_args
Definition: node.h:443
block_type_iseq
@ block_type_iseq
Definition: rb_mjit_min_header-2.7.0.h:9782
native_thread_data_struct::node
union native_thread_data_struct::@161 node
bp
#define bp()
Definition: rb_mjit_min_header-2.7.0.h:7235
BOP_LE
@ BOP_LE
Definition: rb_mjit_min_header-2.7.0.h:9642
id_core_raise
@ id_core_raise
Definition: rb_mjit_min_header-2.7.0.h:8600
rb_ast_struct::node_buffer
node_buffer_t * node_buffer
Definition: node.h:401
ruby_set_inplace_mode
void ruby_set_inplace_mode(const char *)
Definition: io.c:12857
ruby_safe_level_2_error
int ruby_safe_level_2_error(void) __attribute__((error("$SAFE
rb_iseq_local_variables
VALUE rb_iseq_local_variables(const rb_iseq_t *iseq)
Definition: vm.c:849
rb_vm_struct::debug
VALUE debug
Definition: vm_core.h:645
localtime_r
struct tm * localtime_r(const time_t *__restrict, struct tm *__restrict)
Definition: win32.c:7862
pthread_mutexattr_t
struct __pthread_mutexattr_t * pthread_mutexattr_t
rb_execution_context_update
void rb_execution_context_update(const rb_execution_context_t *ec)
Definition: vm.c:2472
rb_obj_instance_exec
VALUE rb_obj_instance_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2027
RString::ary
char ary[RSTRING_EMBED_LEN_MAX+1]
Definition: ruby.h:999
tm::tm_hour
int tm_hour
Definition: rb_mjit_min_header-2.7.0.h:1936
tAND
@ tAND
Definition: rb_mjit_min_header-2.7.0.h:8651
fmodl
long double fmodl(long double, long double)
unlinkat
int unlinkat(int, const char *, int)
rb_find_file_ext
int rb_find_file_ext(VALUE *, const char *const *)
Definition: file.c:6270
siginterrupt
int siginterrupt(int, int)
RB_DEBUG_COUNTER_ivar_set_ic_miss_unset
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_unset
Definition: rb_mjit_min_header-2.7.0.h:11582
_fgetc_r
int _fgetc_r(struct _reent *, FILE *)
wctomb
int wctomb(char *, wchar_t)
tTOKEN_INSTANCE_END
@ tTOKEN_INSTANCE_END
Definition: rb_mjit_min_header-2.7.0.h:8671
rb_frame_method_id_and_class
int rb_frame_method_id_and_class(ID *idp, VALUE *klassp)
Definition: vm.c:2206
rb_ary_join
VALUE rb_ary_join(VALUE, VALUE)
Definition: array.c:2347
YARVINSN_trace_putobject_INT2FIX_0_
@ YARVINSN_trace_putobject_INT2FIX_0_
Definition: rb_mjit_min_header-2.7.0.h:12174
rb_dir_getwd
VALUE rb_dir_getwd(void)
Definition: dir.c:1141
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.0.h:15146
rb_str_dup
VALUE rb_str_dup(VALUE)
Definition: string.c:1516
rb_file_directory_p
VALUE rb_file_directory_p(VALUE, VALUE)
Definition: file.c:1577
iseq_compile_data_storage
Definition: iseq.h:274
rb_trace_arg_struct::called_id
ID called_id
Definition: vm_core.h:1880
rb_backtrace_to_location_ary
VALUE rb_backtrace_to_location_ary(VALUE obj)
Definition: vm_backtrace.c:686
iseq_compile_data::insn
struct iseq_compile_data::@117 insn
THREAD_KILLED
@ THREAD_KILLED
Definition: rb_mjit_min_header-2.7.0.h:9814
rb_method_boundp
int rb_method_boundp(VALUE, ID, int)
Definition: vm_method.c:1102
rb_define_alias
void rb_define_alias(VALUE, const char *, const char *)
Defines an alias of a method.
Definition: class.c:1800
RB_DEBUG_COUNTER_obj_struct_transient
@ RB_DEBUG_COUNTER_obj_struct_transient
Definition: rb_mjit_min_header-2.7.0.h:11641
rb_eEncodingError
VALUE rb_eEncodingError
Definition: error.c:928
L
#define L(x)
Definition: asm.h:125
rpmatch
int rpmatch(const char *response)
clock_getenable_attr
int clock_getenable_attr(clockid_t clock_id, int *attr)
rb_big_odd_p
VALUE rb_big_odd_p(VALUE)
Definition: bignum.c:6831
RUBY_T_FIXNUM
@ RUBY_T_FIXNUM
Definition: rb_mjit_min_header-2.7.0.h:4346
rb_st_copy
st_table * rb_st_copy(st_table *)
uint_least8_t
__uint_least8_t uint_least8_t
Definition: rb_mjit_min_header-2.7.0.h:2910
rb_env_clear
VALUE rb_env_clear(void)
Definition: hash.c:5553
__ssp_real_wcstombs
size_t __ssp_real_wcstombs(char *__buf, const wchar_t *__src, size_t __len) __asm__("" "wcstombs")
CALL_PUBLIC
@ CALL_PUBLIC
Definition: rb_mjit_min_header-2.7.0.h:17161
MEMO
MEMO.
Definition: internal.h:1278
rb_backref_set
void rb_backref_set(VALUE)
Definition: vm.c:1310
YARVINSN_swap
@ YARVINSN_swap
Definition: rb_mjit_min_header-2.7.0.h:12008
_sigcommune::_si_process_handle
void * _si_process_handle
Definition: rb_mjit_min_header-2.7.0.h:2100
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
gmtime
struct tm * gmtime(const time_t *_timer)
rb_gc_mark_maybe
void rb_gc_mark_maybe(VALUE)
Definition: gc.c:5044
rb_data_type_struct::wrap_struct_name
const char * wrap_struct_name
Definition: ruby.h:1149
METHOD_VISI_MASK
@ METHOD_VISI_MASK
Definition: rb_mjit_min_header-2.7.0.h:8768
rb_snum_t
signed long rb_snum_t
Definition: vm_core.h:182
RHASH_ST_TABLE_FLAG
@ RHASH_ST_TABLE_FLAG
Definition: rb_mjit_min_header-2.7.0.h:6859
RB_DEBUG_COUNTER_ivar_get_ic_miss_serial
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_serial
Definition: rb_mjit_min_header-2.7.0.h:11576
rb_str_times
VALUE rb_str_times(VALUE, VALUE)
Definition: string.c:1966
__src
__inline__ const char * __src
Definition: rb_mjit_min_header-2.7.0.h:2712
gamma
double gamma(double)
__cygwin_lock_lock
void __cygwin_lock_lock(_LOCK_T *)
rb_parser_compile_string_path
rb_ast_t * rb_parser_compile_string_path(VALUE vparser, VALUE fname, VALUE src, int line)
Definition: ripper.c:12897
rb_define_finalizer
VALUE rb_define_finalizer(VALUE, VALUE)
Definition: gc.c:3287
rb_gc_latest_gc_info
VALUE rb_gc_latest_gc_info(VALUE)
Definition: gc.c:8816
rb_external_str_new_cstr
#define rb_external_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6123
RB_DEBUG_COUNTER_obj_hash_null
@ RB_DEBUG_COUNTER_obj_hash_null
Definition: rb_mjit_min_header-2.7.0.h:11635
RB_DEBUG_COUNTER_mjit_cancel_send_inline
@ RB_DEBUG_COUNTER_mjit_cancel_send_inline
Definition: rb_mjit_min_header-2.7.0.h:11694
ruby_cleanup
int ruby_cleanup(volatile int)
Destructs the VM.
Definition: eval.c:180
rb_protect
VALUE rb_protect(VALUE(*)(VALUE), VALUE, int *)
Protects a function call from potential global escapes from the function.
Definition: eval.c:1071
rb_undef_method
void rb_undef_method(VALUE, const char *)
Definition: class.c:1575
CALL_FCALL_KW
@ CALL_FCALL_KW
Definition: rb_mjit_min_header-2.7.0.h:17165
rb_eNoMatchingPatternError
VALUE rb_eNoMatchingPatternError
Definition: error.c:935
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
rb_thread_struct::thread_invoke_type_func
@ thread_invoke_type_func
Definition: vm_core.h:978
gammaf
float gammaf(float)
__ssp_real_explicit_bzero
void __ssp_real_explicit_bzero(void *__buf, size_t __len) __asm__("" "explicit_bzero")
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__
tLASTLINE
@ tLASTLINE
Definition: rb_mjit_min_header-2.7.0.h:8673
_reent::_stderr
__FILE * _stderr
Definition: rb_mjit_min_header-2.7.0.h:1063
_rand48::_add
unsigned short _add
Definition: rb_mjit_min_header-2.7.0.h:1055
rb_file_dirname
VALUE rb_file_dirname(VALUE fname)
Definition: file.c:4645
access
int access(const char *__path, int __amode)
rb_signal_exec
int rb_signal_exec(rb_thread_t *th, int sig)
Definition: signal.c:1082
rb_obj_taint
VALUE rb_obj_taint(VALUE)
call-seq: obj.taint -> obj
Definition: object.c:999
arc4random
__uint32_t arc4random(void)
RB_DEBUG_COUNTER_mjit_length_stale_units
@ RB_DEBUG_COUNTER_mjit_length_stale_units
Definition: rb_mjit_min_header-2.7.0.h:11700
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
_mkostemps_r
int _mkostemps_r(struct _reent *, char *, int, int)
_reent::_l64a_buf
char _l64a_buf[8]
Definition: rb_mjit_min_header-2.7.0.h:1090
rb_cloexec_fcntl_dupfd
int rb_cloexec_fcntl_dupfd(int fd, int minfd)
Definition: io.c:419
rb_vm_struct::load_path
VALUE load_path
Definition: vm_core.h:615
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
RUBY_T_UNDEF
@ RUBY_T_UNDEF
Definition: rb_mjit_min_header-2.7.0.h:4347
pc
rb_control_frame_t const VALUE * pc
Definition: rb_mjit_min_header-2.7.0.h:16923
debug
#define debug(lvl, x...)
Definition: ffi.c:52
rb_ary_delete
VALUE rb_ary_delete(VALUE, VALUE)
Definition: array.c:3365
RB_DEBUG_COUNTER_gc_minor_malloc
@ RB_DEBUG_COUNTER_gc_minor_malloc
Definition: rb_mjit_min_header-2.7.0.h:11594
YARVINSN_pop
@ YARVINSN_pop
Definition: rb_mjit_min_header-2.7.0.h:12005
strsignal
char * strsignal(int __signo)
__pthread_rwlockattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1362
sigaction::sa_flags
int sa_flags
Definition: rb_mjit_min_header-2.7.0.h:2233
waitpid_state
Definition: process.c:943
v
int VALUE v
Definition: rb_mjit_min_header-2.7.0.h:12332
YARVINSN_trace_opt_length
@ YARVINSN_trace_opt_length
Definition: rb_mjit_min_header-2.7.0.h:12160
rb_cRange
VALUE rb_cRange
Definition: ruby.h:2040
_uc_xmmreg
Definition: rb_mjit_min_header-2.7.0.h:2012
iseq_inline_storage_entry::running_thread
struct rb_thread_struct * running_thread
Definition: vm_core.h:233
rb_thread_sleep_deadly
void rb_thread_sleep_deadly(void)
Definition: thread.c:1321
fchownat
int fchownat(int __dirfd, const char *__path, uid_t __owner, gid_t __group, int __flags)
rb_args_info::pre_init
NODE * pre_init
Definition: node.h:432
ruby_enable_coredump
int ruby_enable_coredump
Definition: signal.c:1481
rb_error_frozen
void rb_error_frozen(const char *what)
Definition: error.c:2974
rb_gc_mark
void rb_gc_mark(VALUE)
Definition: gc.c:5212
__uintptr_t
long unsigned int __uintptr_t
Definition: rb_mjit_min_header-2.7.0.h:647
sigevent::sigev_value
sigval_t sigev_value
Definition: rb_mjit_min_header-2.7.0.h:2088
_reent::_strtok_last
char * _strtok_last
Definition: rb_mjit_min_header-2.7.0.h:1081
vm_check_match_type
vm_check_match_type
Definition: vm_core.h:1076
rb_thread_current
VALUE rb_thread_current(void)
Definition: thread.c:2676
sched_getparam
int sched_getparam(pid_t __pid, struct sched_param *__param)
rb_encdb_set_unicode
void rb_encdb_set_unicode(int index)
Definition: encoding.c:576
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_thread_sleep
void rb_thread_sleep(int)
Definition: thread.c:1385
rb_funcall_passing_block
VALUE rb_funcall_passing_block(VALUE, ID, int, const VALUE *)
Definition: vm_eval.c:1032
sigismember
int sigismember(const sigset_t *, int)
ruby_null_device
const char ruby_null_device[]
Definition: file.c:6389
sigignore
int sigignore(int)
args_info
Definition: vm_args.c:22
rb_funcallv
#define rb_funcallv(recv, mid, argc, argv)
Definition: rb_mjit_min_header-2.7.0.h:7899
__ssp_real_getdomainname
int __ssp_real_getdomainname(char *__buf, size_t __len) __asm__("" "getdomainname")
rb_obj_untrust
VALUE rb_obj_untrust(VALUE)
call-seq: obj.untrust -> obj
Definition: object.c:1042
__uint_least32_t
unsigned int __uint_least32_t
Definition: rb_mjit_min_header-2.7.0.h:639
rb_exec_recursive
VALUE rb_exec_recursive(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE)
Definition: thread.c:5075
rb_gc_writebarrier
void rb_gc_writebarrier(VALUE a, VALUE b)
Definition: gc.c:6817
nexttowardf
float nexttowardf(float, long double)
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_remove_method_id
void rb_remove_method_id(VALUE, ID)
Definition: vm_method.c:1026
RData::dmark
void(* dmark)(void *)
Definition: ruby.h:1141
OFFSET
long OFFSET
Definition: rb_mjit_min_header-2.7.0.h:11940
rb_kwarg_call_data::ci_kw
struct rb_call_info_with_kwarg ci_kw
Definition: vm_core.h:259
RUBY_TAG_BREAK
@ RUBY_TAG_BREAK
Definition: rb_mjit_min_header-2.7.0.h:9425
rb_control_frame_struct::sp
VALUE * sp
Definition: vm_core.h:762
rb_ast_body_struct::compile_option
VALUE compile_option
Definition: node.h:396
rb_exit
void rb_exit(int status)
Definition: process.c:4190
cc
const struct rb_call_cache * cc
Definition: rb_mjit_min_header-2.7.0.h:13228
RB_DEBUG_COUNTER_frame_push_block
@ RB_DEBUG_COUNTER_frame_push_block
Definition: rb_mjit_min_header-2.7.0.h:11562
ldiv
ldiv_t ldiv(long __numer, long __denom)
NODE_LAMBDA
@ NODE_LAMBDA
Definition: rb_mjit_min_header-2.7.0.h:8182
rb_method_definition_struct::complemented_count
int complemented_count
Definition: method.h:166
rb_fdset_t
Definition: rb_mjit_min_header-2.7.0.h:5705
VM_CALL_KWARG_bit
@ VM_CALL_KWARG_bit
Definition: rb_mjit_min_header-2.7.0.h:10011
YARVINSN_trace_defineclass
@ YARVINSN_trace_defineclass
Definition: rb_mjit_min_header-2.7.0.h:12120
YARVINSN_toregexp
@ YARVINSN_toregexp
Definition: rb_mjit_min_header-2.7.0.h:11994
memrchr
void * memrchr(const void *, int, size_t)
rb_st_init_numtable
st_table * rb_st_init_numtable(void)
__sigset_t
unsigned long __sigset_t
Definition: rb_mjit_min_header-2.7.0.h:1232
rb_call_info_kw_arg
Definition: vm_core.h:240
VM_ENV_FLAG_WB_REQUIRED
@ VM_ENV_FLAG_WB_REQUIRED
Definition: rb_mjit_min_header-2.7.0.h:10077
_iscanf_r
int int _iscanf_r(struct _reent *, const char *,...) __attribute__((__format__(__scanf__
rb_str_append
VALUE rb_str_append(VALUE, VALUE)
Definition: string.c:2965
rb_current_realfilepath
VALUE rb_current_realfilepath(void)
Definition: vm_eval.c:2460
rb_vm_insn_addr2insn
int rb_vm_insn_addr2insn(const void *)
Definition: iseq.c:3111
rb_call_cache::index
unsigned int index
Definition: internal.h:2382
rb_generic_ivar_memsize
size_t rb_generic_ivar_memsize(VALUE)
Definition: variable.c:1010
RBignum::as
union RBignum::@103 as
NODE_OP_ASGN_AND
@ NODE_OP_ASGN_AND
Definition: rb_mjit_min_header-2.7.0.h:8115
CLD_EXITED
#define CLD_EXITED
Definition: rb_mjit_min_header-2.7.0.h:2209
rb_iseq_parameters
VALUE rb_iseq_parameters(const rb_iseq_t *iseq, int is_proc)
Definition: iseq.c:2939
rb_int2str
VALUE rb_int2str(VALUE num, int base)
Definition: numeric.c:3562
rb_default_rs
VALUE rb_default_rs
Definition: intern.h:586
CONST_PRIVATE
@ CONST_PRIVATE
Definition: rb_mjit_min_header-2.7.0.h:12184
RB_DEBUG_COUNTER_ivar_set_ic_miss_serial
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_serial
Definition: rb_mjit_min_header-2.7.0.h:11581
rb_big_fdiv_double
double rb_big_fdiv_double(VALUE x, VALUE y)
Definition: bignum.c:6209
_vfiprintf_r
int char char int int int int _vfiprintf_r(struct _reent *, FILE *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
NODE_ONCE
@ NODE_ONCE
Definition: rb_mjit_min_header-2.7.0.h:8149
ruby_init
void ruby_init(void)
Calls ruby_setup() and check error.
Definition: eval.c:93
FPE_FLTOVF
#define FPE_FLTOVF
Definition: rb_mjit_min_header-2.7.0.h:2199
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_random_real
double rb_random_real(VALUE rnd)
Definition: random.c:870
fmemopen
int FILE * fmemopen(void *__restrict, size_t, const char *__restrict)
scalbnl
long double scalbnl(long double, int)
logbl
long double logbl(long double)
rb_ec_stack_check
int rb_ec_stack_check(rb_execution_context_t *ec)
Definition: gc.c:4665
rb_cref_t
struct rb_cref_struct rb_cref_t
if
if((__builtin_expect(!!(!me), 0)))
Definition: rb_mjit_min_header-2.7.0.h:13229
tMax
@ tMax
Definition: rb_mjit_min_header-2.7.0.h:8604
idMesg
@ idMesg
Definition: rb_mjit_min_header-2.7.0.h:8728
RB_DEBUG_COUNTER_obj_promote
@ RB_DEBUG_COUNTER_obj_promote
Definition: rb_mjit_min_header-2.7.0.h:11611
rb_check_funcall_default
VALUE rb_check_funcall_default(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:533
NODE_SCLASS
@ NODE_SCLASS
Definition: rb_mjit_min_header-2.7.0.h:8166
rb_iseq_constant_body::ISEQ_TYPE_METHOD
@ ISEQ_TYPE_METHOD
Definition: vm_core.h:314
rb_calling_info::argc
int argc
Definition: vm_core.h:253
rb_raise
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:2669
stime
int stime(const time_t *)
__tzrule_type
struct __tzrule_struct __tzrule_type
rb_trace_arg_struct::klass_solved
int klass_solved
Definition: vm_core.h:1884
RB_DEBUG_COUNTER_obj_hash_2
@ RB_DEBUG_COUNTER_obj_hash_2
Definition: rb_mjit_min_header-2.7.0.h:11630
rb_vm_cbase
VALUE rb_vm_cbase(void)
Definition: vm.c:1425
rb_proc_call_kw
VALUE rb_proc_call_kw(VALUE, VALUE, int)
Definition: proc.c:948
NODE_UNLESS
@ NODE_UNLESS
Definition: rb_mjit_min_header-2.7.0.h:8084
mkstemp
int mkstemp(char *)
_sscanf_r
int int int int int int int _sscanf_r(struct _reent *, const char *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
RB_DEBUG_COUNTER_mc_inline_hit
@ RB_DEBUG_COUNTER_mc_inline_hit
Definition: rb_mjit_min_header-2.7.0.h:11527
_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__
const
#define const
Definition: strftime.c:103
rb_vm_struct::main_altstack
void * main_altstack
Definition: rb_mjit_min_header-2.7.0.h:9688
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
NODE_FLIP2
@ NODE_FLIP2
Definition: rb_mjit_min_header-2.7.0.h:8171
RB_DEBUG_COUNTER_frame_push_eval
@ RB_DEBUG_COUNTER_frame_push_eval
Definition: rb_mjit_min_header-2.7.0.h:11567
rb_method_definition_struct::cfunc
rb_method_cfunc_t cfunc
Definition: method.h:170
MEMO::u3
union MEMO::@109 u3
RClass::super
VALUE super
Definition: internal.h:1050
rb_call_cache
Definition: internal.h:2355
rb_big_and
VALUE rb_big_and(VALUE, VALUE)
Definition: bignum.c:6360
rb_notimplement
void rb_notimplement(void)
Definition: error.c:2712
tGets
@ tGets
Definition: rb_mjit_min_header-2.7.0.h:8620
idInitialize_clone
@ idInitialize_clone
Definition: rb_mjit_min_header-2.7.0.h:8711
rb_struct_alloc
VALUE rb_struct_alloc(VALUE, VALUE)
Definition: struct.c:727
rb_get_values_at
VALUE rb_get_values_at(VALUE, long, int, const VALUE *, VALUE(*)(VALUE, long))
Definition: array.c:3106
pthread_mutex_trylock
int pthread_mutex_trylock(pthread_mutex_t *)
_fscanf_r
int _fscanf_r(struct _reent *, FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
rb_cstr2inum
VALUE rb_cstr2inum(const char *, int)
Definition: bignum.c:4538
rb_marshal_load
VALUE rb_marshal_load(VALUE)
Definition: marshal.c:2316
reallocf
void void * reallocf(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
rb_execarg::fd_open
VALUE fd_open
Definition: internal.h:2058
rb_yield_1
VALUE rb_yield_1(VALUE val)
Definition: vm_eval.c:1231
rb_execution_context_struct::cfp
rb_control_frame_t * cfp
Definition: vm_core.h:847
RB_DEBUG_COUNTER_mjit_compile_failures
@ RB_DEBUG_COUNTER_mjit_compile_failures
Definition: rb_mjit_min_header-2.7.0.h:11701
native_thread_data_struct::gvlq
rb_nativethread_cond_t gvlq
Definition: thread_pthread.h:39
pthread_rwlock_t
struct __pthread_rwlock_t * pthread_rwlock_t
rb_eRangeError
VALUE rb_eRangeError
Definition: error.c:926
infinity
double infinity(void)
rb_iseq_constant_body::local_table
const ID * local_table
Definition: vm_core.h:411
rb_each
VALUE rb_each(VALUE)
Definition: vm_eval.c:1542
ruby_xcalloc
void void * ruby_xcalloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__returns_nonnull__)) __attribute__((alloc_size(1
RB_DEBUG_COUNTER_obj_match_ge8
@ RB_DEBUG_COUNTER_obj_match_ge8
Definition: rb_mjit_min_header-2.7.0.h:11649
sqrt
double sqrt(double)
__tm::__tm_isdst
int __tm_isdst
Definition: rb_mjit_min_header-2.7.0.h:957
pthread_create
int pthread_create(pthread_t *, const pthread_attr_t *, void *(*)(void *), void *)
_strtold_r
long double _strtold_r(struct _reent *, const char *__restrict, char **__restrict)
utimensat
int utimensat(int, const char *, const struct timespec *, int)
st_table_entry
Definition: st.c:136
n_trail
const VALUE int int int n_trail
Definition: rb_mjit_min_header-2.7.0.h:6462
rb_dbl_complex_new_polar_pi
VALUE rb_dbl_complex_new_polar_pi(double abs, double ang)
Definition: complex.c:667
rb_global_vm_lock_struct::waitq
struct list_head waitq
Definition: thread_pthread.h:64
rb_st_free_table
void rb_st_free_table(st_table *)
funlockfile
void funlockfile(FILE *)
rb_reg_match
VALUE rb_reg_match(VALUE, VALUE)
Definition: re.c:3179
rb_vm_struct::ensure_rollback_table
struct st_table * ensure_rollback_table
Definition: vm_core.h:633
RUBY_FL_PROMOTED0
@ RUBY_FL_PROMOTED0
Definition: ruby.h:843
rb_callable_method_entry_struct::called_id
ID called_id
Definition: method.h:63
_fflush_r
int _fflush_r(struct _reent *, FILE *)
RUBY_ID_LOCAL
@ RUBY_ID_LOCAL
Definition: rb_mjit_min_header-2.7.0.h:8495
RUBY_T_FALSE
@ RUBY_T_FALSE
Definition: rb_mjit_min_header-2.7.0.h:4344
BOP_EQQ
@ BOP_EQQ
Definition: rb_mjit_min_header-2.7.0.h:9640
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
rb_gcd_normal
VALUE rb_gcd_normal(VALUE self, VALUE other)
Definition: rational.c:344
rb_local_defined
int rb_local_defined(ID, const struct rb_iseq_struct *)
rb_yield_block
VALUE rb_yield_block(VALUE yielded_arg, VALUE callback_arg, int argc, const VALUE *argv, VALUE blockarg)
rb_ull2inum
VALUE rb_ull2inum(unsigned long long)
t__send__
@ t__send__
Definition: rb_mjit_min_header-2.7.0.h:8626
sqrtl
long double sqrtl(long double)
_on_exit_args::_dso_handle
void * _dso_handle[32]
Definition: rb_mjit_min_header-2.7.0.h:962
uid_t
__uid_t uid_t
Definition: rb_mjit_min_header-2.7.0.h:1321
rb_cMatch
VALUE rb_cMatch
Definition: ruby.h:2032
rb_hash_uint
#define rb_hash_uint(h, i)
Definition: rb_mjit_min_header-2.7.0.h:6093
_pthread_cleanup_handler
Definition: rb_mjit_min_header-2.7.0.h:9243
rb_str_convert_to_inum
VALUE rb_str_convert_to_inum(VALUE str, int base, int badcheck, int raise_exception)
Definition: bignum.c:4246
_freopen_r
FILE * _freopen_r(struct _reent *, const char *__restrict, const char *__restrict, FILE *__restrict)
rb_exc_new_cstr
#define rb_exc_new_cstr(klass, ptr)
Definition: rb_mjit_min_header-2.7.0.h:6127
obj
const VALUE VALUE obj
Definition: rb_mjit_min_header-2.7.0.h:5742
idNil
@ idNil
Definition: rb_mjit_min_header-2.7.0.h:8739
getdomainname
int getdomainname(char *__name, size_t __len)
rb_load_file
void * rb_load_file(const char *)
Definition: ruby.c:2180
rb_global_vm_lock_struct::timer_err
int timer_err
Definition: thread_pthread.h:66
rb_threadptr_pending_interrupt_enque
void rb_threadptr_pending_interrupt_enque(rb_thread_t *th, VALUE v)
Definition: thread.c:1757
idPLUS
@ idPLUS
Definition: rb_mjit_min_header-2.7.0.h:8557
fminl
long double fminl(long double, long double)
YARVINSN_trace_opt_send_without_block
@ YARVINSN_trace_opt_send_without_block
Definition: rb_mjit_min_header-2.7.0.h:12124
NODE_DASGN_CURR
@ NODE_DASGN_CURR
Definition: rb_mjit_min_header-2.7.0.h:8108
sigevent
Definition: rb_mjit_min_header-2.7.0.h:2086
rb_imemo_tmpbuf_t
struct rb_imemo_tmpbuf_struct rb_imemo_tmpbuf_t
rb_load
void rb_load(VALUE, int)
Definition: load.c:649
RStruct::ptr
const VALUE * ptr
Definition: internal.h:947
rb_compile_option_struct::specialized_instruction
unsigned int specialized_instruction
Definition: iseq.h:210
rb_ident_hash_new
VALUE rb_ident_hash_new(void)
Definition: hash.c:4203
YARVINSN_setinstancevariable
@ YARVINSN_setinstancevariable
Definition: rb_mjit_min_header-2.7.0.h:11979
ST_STOP
@ ST_STOP
Definition: rb_mjit_min_header-2.7.0.h:5390
RB_DEBUG_COUNTER_gc_isptr_trial
@ RB_DEBUG_COUNTER_gc_isptr_trial
Definition: rb_mjit_min_header-2.7.0.h:11603
rb_method_call
VALUE rb_method_call(int, const VALUE *, VALUE)
Definition: proc.c:2261
RB_DEBUG_COUNTER_frame_push
@ RB_DEBUG_COUNTER_frame_push
Definition: rb_mjit_min_header-2.7.0.h:11560
__ssize_t
_ssize_t __ssize_t
Definition: rb_mjit_min_header-2.7.0.h:900
rb_vm_defineclass_type_t
rb_vm_defineclass_type_t
Definition: vm_core.h:993
rb_time_nano_new
VALUE rb_time_nano_new(time_t, long)
Definition: time.c:2519
ruserok
int ruserok(const char *rhost, int superuser, const char *ruser, const char *luser)
pthread_atfork
int pthread_atfork(void(*)(void), void(*)(void), void(*)(void))
rb_obj_class
VALUE rb_obj_class(VALUE)
Equivalent to Object#class in Ruby.
Definition: object.c:217
uint_least16_t
__uint_least16_t uint_least16_t
Definition: rb_mjit_min_header-2.7.0.h:2913
iseq_compile_data::node
struct iseq_compile_data::@116 node
read
_ssize_t read(int __fd, void *__buf, size_t __nbyte)
rb_method_definition_struct::body
union rb_method_definition_struct::@118 body
__sa_family_t
__uint16_t __sa_family_t
Definition: rb_mjit_min_header-2.7.0.h:860
RB_DEBUG_COUNTER_ccf_opt_call
@ RB_DEBUG_COUNTER_ccf_opt_call
Definition: rb_mjit_min_header-2.7.0.h:11557
rename
int rename(const char *, const char *)
arc4random_buf
void arc4random_buf(void *, size_t)
fchmodat
int fchmodat(int, const char *, mode_t, int)
rb_obj_remove_instance_variable
VALUE rb_obj_remove_instance_variable(VALUE, VALUE)
Definition: variable.c:1634
cosh
double cosh(double)
Definition: math.c:228
RB_DEBUG_COUNTER_obj_ary_ptr
@ RB_DEBUG_COUNTER_obj_ary_ptr
Definition: rb_mjit_min_header-2.7.0.h:11623
YARVINSN_dupn
@ YARVINSN_dupn
Definition: rb_mjit_min_header-2.7.0.h:12007
remquol
long double remquol(long double, long double, int *)
rb_block_lambda
VALUE rb_block_lambda(void)
Definition: proc.c:856
RUBY_T_STRUCT
@ RUBY_T_STRUCT
Definition: rb_mjit_min_header-2.7.0.h:4335
memcpy
#define memcpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2847
rb_thread_local_aref
VALUE rb_thread_local_aref(VALUE, ID)
Definition: thread.c:3216
VM_DEFINECLASS_TYPE_SINGLETON_CLASS
@ VM_DEFINECLASS_TYPE_SINGLETON_CLASS
Definition: rb_mjit_min_header-2.7.0.h:9933
rb_special_singleton_class
VALUE rb_special_singleton_class(VALUE)
Definition: class.c:1621
mjit_mark
void mjit_mark(void)
stat::st_atim
timestruc_t st_atim
Definition: rb_mjit_min_header-2.7.0.h:2394
ftell
long ftell(FILE *)
pread
ssize_t pread(int __fd, void *__buf, size_t __nbytes, off_t __offset)
ctime_r
char * ctime_r(const time_t *, char *)
sched_param
Definition: rb_mjit_min_header-2.7.0.h:9165
fill_values_arg::argc
int argc
Definition: vm_args.c:559
_on_exit_args::_is_cxa
__ULong _is_cxa
Definition: rb_mjit_min_header-2.7.0.h:964
acosf
float acosf(float)
rb_match_nth_defined
int rb_match_nth_defined(int nth, VALUE match)
Definition: re.c:1309
CDHASH
VALUE CDHASH
Definition: rb_mjit_min_header-2.7.0.h:10048
rb_rational_den
VALUE rb_rational_den(VALUE rat)
Definition: rational.c:1966
rb_public_const_defined_from
int rb_public_const_defined_from(VALUE klass, ID id)
Definition: variable.c:2694
rb_fstring_cstr
#define rb_fstring_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:7718
vm_size_t
unsigned long vm_size_t
Definition: rb_mjit_min_header-2.7.0.h:1412
rb_str_export_locale
VALUE rb_str_export_locale(VALUE)
Definition: string.c:1129
__sFILE64::_r
int _r
Definition: rb_mjit_min_header-2.7.0.h:1010
BOP_AREF
@ BOP_AREF
Definition: rb_mjit_min_header-2.7.0.h:9644
rb_dvar_defined
int rb_dvar_defined(ID, const struct rb_iseq_struct *)
clock_settime
int clock_settime(clockid_t clock_id, const struct timespec *tp)
RUBY_SPECIAL_SHIFT
@ RUBY_SPECIAL_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:4305
rb_obj_method_arity
int rb_obj_method_arity(VALUE, ID)
Definition: proc.c:2640
realloc
void * realloc(void *, size_t) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(2)))
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.0.h:17086
rb_ec_reset_raised
int rb_ec_reset_raised(rb_execution_context_t *ec)
Definition: thread.c:2354
rb_vm_tag::retval
VALUE retval
Definition: vm_core.h:801
rb_define_class_id
VALUE rb_define_class_id(ID, VALUE)
Defines a new class.
Definition: class.c:602
rb_classext_struct::includer
const VALUE includer
Definition: internal.h:1042
YARVINSN_trace_opt_nil_p
@ YARVINSN_trace_opt_nil_p
Definition: rb_mjit_min_header-2.7.0.h:12126
NODE_MODULE
@ NODE_MODULE
Definition: rb_mjit_min_header-2.7.0.h:8165
rb_io_fdopen
VALUE rb_io_fdopen(int, int, const char *)
Definition: io.c:8004
rb_data_typed_object_zalloc
VALUE rb_data_typed_object_zalloc(VALUE klass, size_t size, const rb_data_type_t *type)
tanh
double tanh(double)
Definition: math.c:284
rb_str_intern
VALUE rb_str_intern(VALUE)
Definition: symbol.c:710
rb_eSysStackError
VALUE rb_eSysStackError
Definition: eval.c:34
ruby_prog_init
void ruby_prog_init(void)
Defines built-in variables.
Definition: ruby.c:2341
mjit_options::wait
unsigned int wait
Definition: rb_mjit_min_header-2.7.0.h:11730
rb_global_entry::id
ID id
Definition: internal.h:1352
locale_t
struct __locale_t * locale_t
Definition: rb_mjit_min_header-2.7.0.h:1930
rb_file_load_ok
int rb_file_load_ok(const char *)
Definition: file.c:6222
ruby_static_id_status
ID ruby_static_id_status
Definition: rb_mjit_min_header-2.7.0.h:7330
strtosigno
int strtosigno(const char *__name)
st_compare_func
int st_compare_func(st_data_t, st_data_t)
Definition: rb_mjit_min_header-2.7.0.h:5368
rb_vraise
void rb_vraise(VALUE exc, const char *fmt, va_list ap)
Definition: error.c:2663
rb_load_fail
void rb_load_fail(VALUE path, const char *err)
Definition: error.c:2965
getsubopt
int getsubopt(char **, char *const *, char **)
rb_objspace_call_finalizer
void rb_objspace_call_finalizer(struct rb_objspace *)
Definition: gc.c:3441
lseek
off_t lseek(int __fildes, off_t __offset, int __whence)
rb_block::type
enum rb_block_type type
Definition: vm_core.h:757
_mrand48_r
long _mrand48_r(struct _reent *)
idDivmod
@ idDivmod
Definition: rb_mjit_min_header-2.7.0.h:8735
imemo_ast
@ imemo_ast
Definition: rb_mjit_min_header-2.7.0.h:7057
ruby_incpush
void ruby_incpush(const char *)
Definition: ruby.c:426
rb_scope_visi_struct::module_func
unsigned int module_func
Definition: method.h:37
tm::tm_isdst
int tm_isdst
Definition: rb_mjit_min_header-2.7.0.h:1942
YARVINSN_trace_opt_aref_with
@ YARVINSN_trace_opt_aref_with
Definition: rb_mjit_min_header-2.7.0.h:12159
RB_DEBUG_COUNTER_obj_ary_shared_create
@ RB_DEBUG_COUNTER_obj_ary_shared_create
Definition: rb_mjit_min_header-2.7.0.h:11625
rb_iseq_constant_body::param
struct rb_iseq_constant_body::@178 param
parameter information
rb_const_entry_t
struct rb_const_entry_struct rb_const_entry_t
_fpstate::mxcsr
__uint32_t mxcsr
Definition: rb_mjit_min_header-2.7.0.h:2023
rb_set_safe_level
#define rb_set_safe_level(level)
_l64a_r
char * _l64a_r(struct _reent *, long __input)
rb_ast_struct
Definition: node.h:399
rb_obj_instance_variables
VALUE rb_obj_instance_variables(VALUE)
Definition: variable.c:1579
mkdirat
int mkdirat(int, const char *, mode_t)
pthread_getcpuclockid
int pthread_getcpuclockid(pthread_t, clockid_t *)
imemo_type
imemo_type
Definition: internal.h:1132
rb_postponed_job_struct
Definition: vm_trace.c:1531
sigaddset
int sigaddset(sigset_t *, const int)
rb_time_new
VALUE rb_time_new(time_t, long)
Definition: time.c:2492
vm_throw_data::throw_obj
const VALUE throw_obj
Definition: internal.h:1196
rb_safe_level
int rb_safe_level(void)
Definition: safe.c:31
rb_rational_abs
VALUE rb_rational_abs(VALUE self)
Definition: rational.c:1255
rb_fd_term
void rb_fd_term(rb_fdset_t *)
BOP_GT
@ BOP_GT
Definition: rb_mjit_min_header-2.7.0.h:9651
rb_num_coerce_cmp
VALUE rb_num_coerce_cmp(VALUE, VALUE, ID)
Definition: numeric.c:453
rb_cNilClass
VALUE rb_cNilClass
NilClass class.
Definition: ruby.h:2036
rb_big_lt
VALUE rb_big_lt(VALUE x, VALUE y)
Definition: bignum.c:5501
rb_get_path_check_convert
VALUE rb_get_path_check_convert(VALUE)
Definition: file.c:211
_reent::_mbtowc_state
_mbstate_t _mbtowc_state
Definition: rb_mjit_min_header-2.7.0.h:1088
RB_DEBUG_COUNTER_mjit_cancel_invalidate_all
@ RB_DEBUG_COUNTER_mjit_cancel_invalidate_all
Definition: rb_mjit_min_header-2.7.0.h:11696
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.0.h:2395
rb_deprecate_constant
void rb_deprecate_constant(VALUE mod, const char *name)
Definition: variable.c:2947
YARVINSN_trace_setn
@ YARVINSN_trace_setn
Definition: rb_mjit_min_header-2.7.0.h:12114
rb_args_info::opt_args
NODE * opt_args
Definition: node.h:446
ILL_BADSTK
#define ILL_BADSTK
Definition: rb_mjit_min_header-2.7.0.h:2195
rb_iseq_constant_body::ISEQ_TYPE_BLOCK
@ ISEQ_TYPE_BLOCK
Definition: vm_core.h:315
vm_svar
SVAR (Special VARiable)
Definition: internal.h:1181
rb_id_quote_unprintable
VALUE rb_id_quote_unprintable(ID)
Definition: string.c:10735
rb_syserr_fail
void rb_syserr_fail(int e, const char *mesg)
Definition: error.c:2781
uint16_t
__uint16_t uint16_t
Definition: rb_mjit_min_header-2.7.0.h:1172
YARVINSN_trace_opt_not
@ YARVINSN_trace_opt_not
Definition: rb_mjit_min_header-2.7.0.h:12164
rb_float_eql
VALUE rb_float_eql(VALUE x, VALUE y)
Definition: numeric.c:1654
rb_id_encoding
ID rb_id_encoding(void)
Definition: encoding.c:759
rb_execarg::command_abspath
VALUE command_abspath
Definition: internal.h:2026
NODE_LAST
@ NODE_LAST
Definition: rb_mjit_min_header-2.7.0.h:8185
rb_ary_to_ary
VALUE rb_ary_to_ary(VALUE)
Definition: array.c:1853
rb_mark_set
void rb_mark_set(struct st_table *)
Definition: gc.c:4798
RUBY_FL_EXIVAR
@ RUBY_FL_EXIVAR
Definition: ruby.h:850
BOP_EQ
@ BOP_EQ
Definition: rb_mjit_min_header-2.7.0.h:9639
__assert_func
void __assert_func(const char *, int, const char *, const char *) __attribute__((__noreturn__))
RArray::shared_root
const VALUE shared_root
Definition: ruby.h:1060
rb_struct_alloc_noinit
VALUE rb_struct_alloc_noinit(VALUE)
Definition: struct.c:352
argc
int argc
Definition: rb_mjit_min_header-2.7.0.h:15420
RB_DEBUG_COUNTER_obj_complex
@ RB_DEBUG_COUNTER_obj_complex
Definition: rb_mjit_min_header-2.7.0.h:11657
RUBY_T_TRUE
@ RUBY_T_TRUE
Definition: rb_mjit_min_header-2.7.0.h:4343
calloc
void * calloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__)) __attribute__((__alloc_size__(1
rb_execarg::gid
gid_t gid
Definition: rb_mjit_min_header-2.7.0.h:7663
idGE
@ idGE
Definition: rb_mjit_min_header-2.7.0.h:8567
rb_lastline_set
void rb_lastline_set(VALUE)
Definition: vm.c:1322
tmpfile
FILE * tmpfile(void)
rb_global_vm_lock_struct::wait_yield
int wait_yield
Definition: thread_pthread.h:72
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.0.h:14544
rb_warning_category_t
rb_warning_category_t
Definition: rb_mjit_min_header-2.7.0.h:7312
rb_iseq_constant_body::lead_num
int lead_num
Definition: vm_core.h:367
rb_obj_is_method
VALUE rb_obj_is_method(VALUE)
Definition: proc.c:1459
rb_execarg::fd_dup2
VALUE fd_dup2
Definition: internal.h:2056
RFile::fptr
struct rb_io_t * fptr
Definition: ruby.h:1136
imaxdiv
imaxdiv_t imaxdiv(intmax_t numer, intmax_t denomer)
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_DEBUG_COUNTER_obj_hash_1
@ RB_DEBUG_COUNTER_obj_hash_1
Definition: rb_mjit_min_header-2.7.0.h:11629
rb_iseq_location_struct
Definition: vm_core.h:272
rb_gc_copy_finalizer
void rb_gc_copy_finalizer(VALUE, VALUE)
Definition: gc.c:3295
RARRAY_ENUM_END
@ RARRAY_ENUM_END
Definition: ruby.h:1041
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_file_s_absolute_path
VALUE rb_file_s_absolute_path(int, const VALUE *)
Definition: file.c:4079
rb_vm_struct::coverages
VALUE coverages
Definition: vm_core.h:646
siprintf
int int int int int int int int char char int int int int int int siprintf(char *, const char *,...) __attribute__((__format__(__printf__
rb_deprecated_classext_struct
Definition: classext.h:10
rb_random_int
VALUE rb_random_int(VALUE rnd, VALUE max)
rb_vm_pop_cfunc_frame
MJIT_STATIC void rb_vm_pop_cfunc_frame(void)
Definition: rb_mjit_min_header-2.7.0.h:17268
rb_gc_unregister_address
void rb_gc_unregister_address(VALUE *)
Definition: gc.c:7089
fprintf
int fprintf(FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
ruby_basic_operators
ruby_basic_operators
Definition: vm_core.h:515
imemo_throw_data
@ imemo_throw_data
Definition: rb_mjit_min_header-2.7.0.h:7051
getgroups
int getgroups(int __gidsetsize, gid_t __grouplist[])
rb_nativethread_lock_unlock
void rb_nativethread_lock_unlock(rb_nativethread_lock_t *lock)
Definition: thread.c:451
__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")
strtold_l
long double strtold_l(const char *__restrict, char **__restrict, locale_t)
rb_syserr_new
VALUE rb_syserr_new(int, const char *)
Definition: error.c:2767
RUBY_NUM_ROUND_HALF_EVEN
@ RUBY_NUM_ROUND_HALF_EVEN
Definition: rb_mjit_min_header-2.7.0.h:7443
rb_execarg_get
struct rb_execarg * rb_execarg_get(VALUE execarg_obj)
Definition: process.c:2608
rb_require_internal
int rb_require_internal(VALUE fname)
Definition: load.c:1067
pthread_barrier_init
int pthread_barrier_init(pthread_barrier_t *, const pthread_barrierattr_t *, unsigned)
RB_DEBUG_COUNTER_gc_isptr_maybe
@ RB_DEBUG_COUNTER_gc_isptr_maybe
Definition: rb_mjit_min_header-2.7.0.h:11606
rb_numeric_quo
VALUE rb_numeric_quo(VALUE x, VALUE y)
Definition: rational.c:2014
ferror
#define ferror(p)
Definition: rb_mjit_min_header-2.7.0.h:1830
pthread_mutexattr_settype
int pthread_mutexattr_settype(pthread_mutexattr_t *, int)
rb_args_info
Definition: node.h:431
mjit_cont_new
struct mjit_cont * mjit_cont_new(rb_execution_context_t *ec)
args_info::rest_dupped
int rest_dupped
Definition: vm_args.c:29
RB_DEBUG_COUNTER_obj_ary_embed
@ RB_DEBUG_COUNTER_obj_ary_embed
Definition: rb_mjit_min_header-2.7.0.h:11621
rb_hook_list_struct::events
rb_event_flag_t events
Definition: vm_core.h:567
rb_math_sinh
VALUE rb_math_sinh(VALUE)
__pthread_mutex_t
Definition: rb_mjit_min_header-2.7.0.h:1346
RUBY_T_SYMBOL
@ RUBY_T_SYMBOL
Definition: rb_mjit_min_header-2.7.0.h:4345
tNUMPARAM_2
@ tNUMPARAM_2
Definition: rb_mjit_min_header-2.7.0.h:8661
timingsafe_memcmp
int timingsafe_memcmp(const void *, const void *, size_t)
rb_vm_protect_tag
Definition: vm_core.h:812
rb_float_mul
VALUE rb_float_mul(VALUE x, VALUE y)
Definition: numeric.c:1072
ruby_process_options
void * ruby_process_options(int, char **)
Definition: ruby.c:2387
tMethod_removed
@ tMethod_removed
Definition: rb_mjit_min_header-2.7.0.h:8614
rb_undef_methods_from
void rb_undef_methods_from(VALUE klass, VALUE super)
Definition: class.c:1589
timespec::tv_sec
time_t tv_sec
Definition: missing.h:61
_pthread_cleanup_push
void _pthread_cleanup_push(__pthread_cleanup_handler *handler)
rb_gc_verify_internal_consistency
void rb_gc_verify_internal_consistency(void)
Definition: gc.c:6202
rb_imemo_tmpbuf_struct::ptr
VALUE * ptr
Definition: internal.h:1234
rb_str_catf
VALUE rb_str_catf(VALUE, const char *,...) __attribute__((format(printf
RB_DEBUG_COUNTER_theap_alloc_fail
@ RB_DEBUG_COUNTER_theap_alloc_fail
Definition: rb_mjit_min_header-2.7.0.h:11680
YARVINSN_trace_opt_minus
@ YARVINSN_trace_opt_minus
Definition: rb_mjit_min_header-2.7.0.h:12143
rb_vm_struct::sleeper
int sleeper
Definition: vm_core.h:607
rb_str_subseq
VALUE rb_str_subseq(VALUE, long, long)
Definition: string.c:2474
sprintf
#define sprintf(str,...)
Definition: rb_mjit_min_header-2.7.0.h:1886
rb_calling_info::kw_splat
int kw_splat
Definition: vm_core.h:254
rb_reg_match_post
VALUE rb_reg_match_post(VALUE)
Definition: re.c:1775
rb_cBasicObject
VALUE rb_cBasicObject
BasicObject class.
Definition: ruby.h:2009
rb_enc_set_base
void rb_enc_set_base(const char *name, const char *orig)
Definition: encoding.c:382
rb_ary_pattern_info::post_args
NODE * post_args
Definition: node.h:456
ruby_check_sizeof_voidp
char ruby_check_sizeof_voidp[8==sizeof(void *) ? 1 :-1]
Definition: rb_mjit_min_header-2.7.0.h:3998
ruby
The main namespace.
Definition: cxxanyargs.hpp:17
rb_gc_enable
VALUE rb_gc_enable(void)
Definition: gc.c:9209
rb_gc_location
VALUE rb_gc_location(VALUE)
Definition: gc.c:8111
strtoull_l
unsigned long long strtoull_l(const char *__restrict, char **__restrict, int, locale_t __loc)
rb_int_positive_pow
VALUE rb_int_positive_pow(long x, unsigned long y)
Definition: numeric.c:4033
intptr_t
__intptr_t intptr_t
Definition: rb_mjit_min_header-2.7.0.h:1189
__int_least32_t
int __int_least32_t
Definition: rb_mjit_min_header-2.7.0.h:638
VM_CALL_TAILCALL_bit
@ VM_CALL_TAILCALL_bit
Definition: rb_mjit_min_header-2.7.0.h:10013
clock_gettime
int clock_gettime(clockid_t clock_id, struct timespec *tp)
Definition: win32.c:4612
ST_DELETE
@ ST_DELETE
Definition: rb_mjit_min_header-2.7.0.h:5390
RB_DEBUG_COUNTER_gc_minor_newobj
@ RB_DEBUG_COUNTER_gc_minor_newobj
Definition: rb_mjit_min_header-2.7.0.h:11593
rb_execarg::umask_mask
mode_t umask_mask
Definition: internal.h:2052
rb_f_untrace_var
VALUE rb_f_untrace_var(int, const VALUE *)
Definition: variable.c:574
pthread_attr_setstacksize
int pthread_attr_setstacksize(pthread_attr_t *, size_t)
__uid_t
__uint32_t __uid_t
Definition: rb_mjit_min_header-2.7.0.h:852
rb_ary_behead
VALUE rb_ary_behead(VALUE, long)
Definition: array.c:1369
vsscanf
int int int int int vsscanf(const char *__restrict, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__scanf__
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
ceilf
float ceilf(float)
rb_dir_getwd_ospath
void VALUE rb_dir_getwd_ospath(void)
Definition: dir.c:1117
rb_thread_atfork_before_exec
void rb_thread_atfork_before_exec(void)
Definition: thread.c:4553
VM_FRAME_MAGIC_DUMMY
@ VM_FRAME_MAGIC_DUMMY
Definition: rb_mjit_min_header-2.7.0.h:10065
rb_str_export
VALUE rb_str_export(VALUE)
Definition: string.c:1123
mjit_gc_exit_hook
void mjit_gc_exit_hook(void)
rb_proc_get_iseq
const rb_iseq_t * rb_proc_get_iseq(VALUE proc, int *is_proc)
Definition: proc.c:1194
ruby_register_rollback_func_for_ensure
void ruby_register_rollback_func_for_ensure(VALUE(*ensure_func)(VALUE), VALUE(*rollback_func)(VALUE))
rb_reg_new_str
VALUE rb_reg_new_str(VALUE, int)
Definition: re.c:2894
YARVINSN_trace_getclassvariable
@ YARVINSN_trace_getclassvariable
Definition: rb_mjit_min_header-2.7.0.h:12083
rb_yield_force_blockarg
VALUE rb_yield_force_blockarg(VALUE values)
Definition: vm_eval.c:1309
__pthread_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1345
pthread_rwlock_tryrdlock
int pthread_rwlock_tryrdlock(pthread_rwlock_t *rwlock)
rb_debug_counter_type
rb_debug_counter_type
Definition: debug_counter.h:348
NODE_ZLIST
@ NODE_ZLIST
Definition: rb_mjit_min_header-2.7.0.h:8126
rb_captured_block::ep
const VALUE * ep
Definition: vm_core.h:729
RB_DEBUG_COUNTER_obj_ary_extracapa
@ RB_DEBUG_COUNTER_obj_ary_extracapa
Definition: rb_mjit_min_header-2.7.0.h:11624
rb_callable_method_entry_struct::defined_class
const VALUE defined_class
Definition: method.h:61
RHASH_AR_TABLE_BOUND_MASK
#define RHASH_AR_TABLE_BOUND_MASK
Definition: rb_mjit_min_header-2.7.0.h:6882
scalblnl
long double scalblnl(long double, long)
sinhl
long double sinhl(long double)
__nlink_t
unsigned short __nlink_t
Definition: rb_mjit_min_header-2.7.0.h:932
RB_DEBUG_COUNTER_obj_regexp_ptr
@ RB_DEBUG_COUNTER_obj_regexp_ptr
Definition: rb_mjit_min_header-2.7.0.h:11659
rb_fdset_t::maxfd
int maxfd
Definition: rb_mjit_min_header-2.7.0.h:5706
rb_parser_set_options
void rb_parser_set_options(VALUE, int, int, int, int)
Definition: ripper.c:19036
rb_thread_fd_writable
int rb_thread_fd_writable(int)
Definition: thread.c:4048
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_binding_alloc
VALUE rb_binding_alloc(VALUE klass)
Definition: proc.c:331
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:9249
TIMER_INTERRUPT_MASK
@ TIMER_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.0.h:10567
VM_FRAME_FLAG_CFRAME_EMPTY_KW
@ VM_FRAME_FLAG_CFRAME_EMPTY_KW
Definition: rb_mjit_min_header-2.7.0.h:10074
__pthread_mutexattr_t
Definition: rb_mjit_min_header-2.7.0.h:1349
RB_DEBUG_COUNTER_ccf_opt_block_call
@ RB_DEBUG_COUNTER_ccf_opt_block_call
Definition: rb_mjit_min_header-2.7.0.h:11558
rb_obj_info_dump_loc
void rb_obj_info_dump_loc(VALUE obj, const char *file, int line, const char *func)
Definition: gc.c:11668
crit
int crit
Definition: rb_mjit_min_header-2.7.0.h:12246
asin
double asin(double)
sighandler_t
_sig_func_ptr sighandler_t
Definition: rb_mjit_min_header-2.7.0.h:2339
siginfo_t::si_stime
clock_t si_stime
Definition: rb_mjit_min_header-2.7.0.h:2140
RHASH_AR_TABLE_SIZE_MASK
#define RHASH_AR_TABLE_SIZE_MASK
Definition: rb_mjit_min_header-2.7.0.h:6880
RUBY_T_MOVED
@ RUBY_T_MOVED
Definition: rb_mjit_min_header-2.7.0.h:4352
rb_str_length
VALUE rb_str_length(VALUE)
Definition: string.c:1843
rb_clear_coverages
void rb_clear_coverages(void)
Definition: thread.c:4468
rb_mutex_owned_p
VALUE rb_mutex_owned_p(VALUE self)
Definition: thread_sync.c:345
VM_METHOD_TYPE_REFINED
@ VM_METHOD_TYPE_REFINED
Definition: rb_mjit_min_header-2.7.0.h:8839
sigaltstack::ss_flags
int ss_flags
Definition: rb_mjit_min_header-2.7.0.h:2302
rb_block_proc
VALUE rb_block_proc(void)
Definition: proc.c:837
mknod
int mknod(const char *__path, mode_t __mode, dev_t __dev)
vm_svar::lastline
const VALUE lastline
Definition: internal.h:1184
rb_ary_store
void rb_ary_store(VALUE, long, VALUE)
Definition: array.c:1079
rb_method_definition_struct::alias
rb_method_alias_t alias
Definition: method.h:172
rb_execarg::new_pgroup_flag
unsigned new_pgroup_flag
Definition: internal.h:2044
rb_set_end_proc
void rb_set_end_proc(void(*)(VALUE), VALUE)
Definition: eval_jump.c:59
rb_big_aref
VALUE rb_big_aref(VALUE x, VALUE y)
Definition: bignum.c:6681
RB_DEBUG_COUNTER_mjit_frame_VM2JT
@ RB_DEBUG_COUNTER_mjit_frame_VM2JT
Definition: rb_mjit_min_header-2.7.0.h:11689
stat::st_rdev
dev_t st_rdev
Definition: rb_mjit_min_header-2.7.0.h:2392
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.0.h:947
itimerspec
Definition: rb_mjit_min_header-2.7.0.h:1257
memcmp
int memcmp(const void *, const void *, size_t)
Definition: memcmp.c:7
BUS_OBJERR
#define BUS_OBJERR
Definition: rb_mjit_min_header-2.7.0.h:2208
RB_DEBUG_COUNTER_frame_push_class
@ RB_DEBUG_COUNTER_frame_push_class
Definition: rb_mjit_min_header-2.7.0.h:11563
rb_fix_plus
VALUE rb_fix_plus(VALUE x, VALUE y)
Definition: numeric.c:3604
block_handler_type_ifunc
@ block_handler_type_ifunc
Definition: rb_mjit_min_header-2.7.0.h:9777
sched_get_priority_max
int sched_get_priority_max(int __policy)
fabsf
float fabsf(float)
rb_iseq_constant_body_alloc
struct rb_iseq_constant_body * rb_iseq_constant_body_alloc(void)
Definition: iseq.c:433
pthread_attr_destroy
int pthread_attr_destroy(pthread_attr_t *)
on_exit
int on_exit(void(*__func)(int, void *), void *__arg)
cmp_opt_Fixnum
@ cmp_opt_Fixnum
Definition: rb_mjit_min_header-2.7.0.h:7177
rb_parser_dump_tree
VALUE rb_parser_dump_tree(const NODE *node, int comment)
Definition: node.c:1076
Init_ext
void Init_ext(void)
Definition: dmyext.c:2
rb_thread_terminate_all
void rb_thread_terminate_all(void)
Definition: thread.c:559
rb_define_private_method
void rb_define_private_method(VALUE, const char *, VALUE(*)(), int)
rb_gvar_set
VALUE rb_gvar_set(struct rb_global_entry *, VALUE)
Definition: variable.c:654
rb_sourceline
int rb_sourceline(void)
Definition: vm.c:1346
rb_vm_struct::main_thread
struct rb_thread_struct * main_thread
Definition: vm_core.h:581
strftime
size_t strftime(char *__restrict _s, size_t _maxsize, const char *__restrict _fmt, const struct tm *__restrict _t)
RB_DEBUG_COUNTER_obj_match_ge4
@ RB_DEBUG_COUNTER_obj_match_ge4
Definition: rb_mjit_min_header-2.7.0.h:11648
RB_DEBUG_COUNTER_obj_data_imm_free
@ RB_DEBUG_COUNTER_obj_data_imm_free
Definition: rb_mjit_min_header-2.7.0.h:11645
iseq_compile_data::node_level
int node_level
Definition: iseq.h:114
rb_Array
VALUE rb_Array(VALUE)
Equivalent to Kernel#Array in Ruby.
Definition: object.c:3684
BOP_LTLT
@ BOP_LTLT
Definition: rb_mjit_min_header-2.7.0.h:9643
__sFILE64::_flags
short _flags
Definition: rb_mjit_min_header-2.7.0.h:1012
rb_iseqw_new
VALUE rb_iseqw_new(const rb_iseq_t *iseq)
Definition: iseq.c:1157
_reent::_emergency
char _emergency[25]
Definition: rb_mjit_min_header-2.7.0.h:1065
__sFILE::_close
int(* _close)(struct _reent *, void *)
Definition: rb_mjit_min_header-2.7.0.h:994
ctime
char * ctime(const time_t *_time)
idLT
@ idLT
Definition: rb_mjit_min_header-2.7.0.h:8564
rb_ary_pattern_info::rest_arg
NODE * rest_arg
Definition: node.h:455
memmove
#define memmove(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2848
rb_nomethod_err_new
VALUE rb_nomethod_err_new(VALUE mesg, VALUE recv, VALUE method, VALUE args, int priv)
Definition: error.c:1673
rb_obj_protected_methods
VALUE rb_obj_protected_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1380
remove
int int remove(const char *)
METHOD_VISI_PROTECTED
@ METHOD_VISI_PROTECTED
Definition: rb_mjit_min_header-2.7.0.h:8767
RB_DEBUG_COUNTER_ivar_get_ic_miss_unset
@ RB_DEBUG_COUNTER_ivar_get_ic_miss_unset
Definition: rb_mjit_min_header-2.7.0.h:11577
u_long
unsigned long u_long
Definition: rb_mjit_min_header-2.7.0.h:1293
rb_time_num_new
VALUE rb_time_num_new(VALUE, VALUE)
Definition: time.c:2553
rb_objspace_data_type_name
const char * rb_objspace_data_type_name(VALUE obj)
Definition: gc.c:2430
rb_iseq_base_label
VALUE rb_iseq_base_label(const rb_iseq_t *iseq)
Definition: iseq.c:1051
RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject
@ RB_DEBUG_COUNTER_ivar_set_ic_miss_noobject
Definition: rb_mjit_min_header-2.7.0.h:11584
ruby_dtrace_method_hook_args::line_no
int line_no
Definition: probes_helper.h:10
imemo_ment
@ imemo_ment
Definition: rb_mjit_min_header-2.7.0.h:7054
rb_iv_get
VALUE rb_iv_get(VALUE, const char *)
Definition: variable.c:3294
rb_str_to_inum
VALUE rb_str_to_inum(VALUE, int, int)
Definition: bignum.c:4268
Init_enc
void Init_enc(void)
Definition: dmyenc.c:5
pthread_mutex_lock
int pthread_mutex_lock(pthread_mutex_t *)
rb_gcd
VALUE rb_gcd(VALUE x, VALUE y)
Definition: rational.c:1894
rb_struct_members
VALUE rb_struct_members(VALUE)
Definition: struct.c:72
RRegexp
Definition: ruby.h:1112
RSTRING_EMBED_LEN_MAX
#define RSTRING_EMBED_LEN_MAX
isnanl
int isnanl(long double)
rb_vm_gvl_destroy
void rb_vm_gvl_destroy(rb_vm_t *vm)
Definition: thread.c:421
iseq_inline_storage_entry::iv_cache
struct iseq_inline_iv_cache_entry iv_cache
Definition: vm_core.h:237
_reent::_r48
struct _rand48 _r48
Definition: rb_mjit_min_header-2.7.0.h:1086
__sFILE::_lbfsize
int _lbfsize
Definition: rb_mjit_min_header-2.7.0.h:986
rb_parser_malloc
void * rb_parser_malloc(struct parser_params *, size_t)
Definition: ripper.c:19378
rb_obj_dig
VALUE rb_obj_dig(int argc, VALUE *argv, VALUE self, VALUE notfound)
Definition: object.c:3791
imemo_iseq
@ imemo_iseq
Definition: rb_mjit_min_header-2.7.0.h:7055
sigemptyset
int sigemptyset(sigset_t *)
id_core_undef_method
@ id_core_undef_method
Definition: rb_mjit_min_header-2.7.0.h:8594
RB_DEBUG_COUNTER_gc_major_force
@ RB_DEBUG_COUNTER_gc_major_force
Definition: rb_mjit_min_header-2.7.0.h:11601
rb_backtrace_print_as_bugreport
void rb_backtrace_print_as_bugreport(void)
Definition: vm_backtrace.c:813
list_head
Definition: rb_mjit_min_header-2.7.0.h:8975
rb_hash_aref
VALUE rb_hash_aref(VALUE, VALUE)
Definition: hash.c:1964
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.0.h:6328
rindex
char * rindex(const char *, int) __attribute__((__pure__))
tDivmod
@ tDivmod
Definition: rb_mjit_min_header-2.7.0.h:8654
RB_DEBUG_COUNTER_obj_match_ptr
@ RB_DEBUG_COUNTER_obj_match_ptr
Definition: rb_mjit_min_header-2.7.0.h:11650
rb_thread_struct::blocking_region_buffer
void * blocking_region_buffer
Definition: vm_core.h:941
atol
long atol(const char *__nptr)
rb_iseq_location_struct::label
VALUE label
Definition: vm_core.h:275
YARVINSN_setlocal
@ YARVINSN_setlocal
Definition: rb_mjit_min_header-2.7.0.h:11972
rb_args_info::imemo
VALUE imemo
Definition: node.h:450
arg_setup_type
arg_setup_type
Definition: vm_args.c:35
rb_ast_update_references
void rb_ast_update_references(rb_ast_t *)
Definition: node.c:1332
idNUMPARAM_8
@ idNUMPARAM_8
Definition: rb_mjit_min_header-2.7.0.h:8748
rb_mRubyVMFrozenCore
VALUE rb_mRubyVMFrozenCore
Definition: vm.c:367
rb_ast_new
rb_ast_t * rb_ast_new(void)
Definition: node.c:1219
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
rb_thread_wait_for
void rb_thread_wait_for(struct timeval)
Definition: thread.c:1347
rb_frame_this_func
ID rb_frame_this_func(void)
The original name of the current method.
Definition: eval.c:1182
rb_binding_new
VALUE rb_binding_new(void)
Definition: proc.c:364
rb_str_opt_plus
VALUE rb_str_opt_plus(VALUE, VALUE)
Definition: string.c:1925
float_t
float float_t
Definition: rb_mjit_min_header-2.7.0.h:3650
rb_execarg::dup2_tmpbuf
VALUE dup2_tmpbuf
Definition: internal.h:2034
rb_iseq_constant_body::local_table_size
unsigned int local_table_size
Definition: vm_core.h:435
__pthread_spinlock_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1360
rb_tainted_str_new_cstr
#define rb_tainted_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6120
rb_iseq_constant_body::is_entries
union iseq_inline_storage_entry * is_entries
Definition: vm_core.h:420
rb_reg_last_match
VALUE rb_reg_last_match(VALUE)
Definition: re.c:1731
RB_DEBUG_COUNTER_obj_imemo_ifunc
@ RB_DEBUG_COUNTER_obj_imemo_ifunc
Definition: rb_mjit_min_header-2.7.0.h:11670
rb_data_type_struct::dfree
void(* dfree)(void *)
Definition: ruby.h:1152
ILL_ILLTRP
#define ILL_ILLTRP
Definition: rb_mjit_min_header-2.7.0.h:2191
rb_mjit_add_iseq_to_process
void rb_mjit_add_iseq_to_process(const rb_iseq_t *iseq)
rb_io_ungetbyte
VALUE rb_io_ungetbyte(VALUE, VALUE)
Definition: io.c:4276
rb_const_get_from
VALUE rb_const_get_from(VALUE, ID)
Definition: variable.c:2381
RSTRUCT_EMBED_LEN_MAX
#define RSTRUCT_EMBED_LEN_MAX
Definition: rb_mjit_min_header-2.7.0.h:6910
strcasecmp_l
int strcasecmp_l(const char *, const char *, locale_t)
rb_error_untrusted
void rb_error_untrusted(VALUE)
Definition: error.c:3034
rb_compile_option_struct::frozen_string_literal
unsigned int frozen_string_literal
Definition: iseq.h:214
__swbuf_r
int __swbuf_r(struct _reent *, int, FILE *)
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
NODE_SELF
@ NODE_SELF
Definition: rb_mjit_min_header-2.7.0.h:8173
rb_thread_schedule
void rb_thread_schedule(void)
Definition: thread.c:1408
mrand48
long mrand48(void)
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_args_info::ruby2_keywords
unsigned int ruby2_keywords
Definition: node.h:448
rb_ary_new_capa
VALUE rb_ary_new_capa(long capa)
Definition: array.c:717
idGT
@ idGT
Definition: rb_mjit_min_header-2.7.0.h:8566
rb_thread_struct::status
enum rb_thread_status status
Definition: rb_mjit_min_header-2.7.0.h:9892
tTo_ary
@ tTo_ary
Definition: rb_mjit_min_header-2.7.0.h:8633
rb_st_init_strtable_with_size
st_table * rb_st_init_strtable_with_size(st_index_t)
_remove_r
int _remove_r(struct _reent *, const char *)
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
strndup
char * strndup(const char *, size_t) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
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
llrintl
long long int llrintl(long double)
rb_gc_stat
size_t rb_gc_stat(VALUE)
Definition: gc.c:9174
rb_remove_method
const VALUE const VALUE *void rb_remove_method(VALUE, const char *)
Definition: vm_method.c:1032
NODE_LIST
@ NODE_LIST
Definition: rb_mjit_min_header-2.7.0.h:8125
rb_update_max_fd
void rb_update_max_fd(int fd)
Definition: io.c:218
rb_st_delete_safe
int rb_st_delete_safe(st_table *, st_data_t *, st_data_t *, st_data_t)
rb_insecure_operation
void rb_insecure_operation(void)
Definition: safe.c:122
rb_serial_t
unsigned long rb_serial_t
Definition: internal.h:1014
__fp
__inline__ int FILE * __fp
Definition: rb_mjit_min_header-2.7.0.h:1892
i
uint32_t i
Definition: rb_mjit_min_header-2.7.0.h:5464
system
int system(const char *__string)
RB_DEBUG_COUNTER_lvar_set_dynamic
@ RB_DEBUG_COUNTER_lvar_set_dynamic
Definition: rb_mjit_min_header-2.7.0.h:11590
rb_ibf_load_iseq_complete
void rb_ibf_load_iseq_complete(rb_iseq_t *iseq)
Definition: compile.c:11436
rb_execution_context_struct::thread_ptr
struct rb_thread_struct * thread_ptr
Definition: vm_core.h:857
ruby_init_setproctitle
void ruby_init_setproctitle(int argc, char *argv[])
rb_provided
int rb_provided(const char *)
Definition: load.c:513
rb_singleton_class_attached
void rb_singleton_class_attached(VALUE, VALUE)
Attach a object to a singleton class.
Definition: class.c:426
u_char
unsigned char u_char
Definition: rb_mjit_min_header-2.7.0.h:1287
rb_thread_struct::thgroup
VALUE thgroup
Definition: vm_core.h:943
_longjmp
void _longjmp(jmp_buf, int) __attribute__((__noreturn__))
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_int_mul
VALUE rb_int_mul(VALUE x, VALUE y)
Definition: numeric.c:3699
rb_vm_top_self
VALUE rb_vm_top_self(void)
Definition: vm.c:3345
YARVINSN_trace_duphash
@ YARVINSN_trace_duphash
Definition: rb_mjit_min_header-2.7.0.h:12102
_uc_xmmreg::element
__uint32_t element[4]
Definition: rb_mjit_min_header-2.7.0.h:2013
rb_ensure_entry::data2
VALUE data2
Definition: vm_core.h:831
rb_bigzero_p
int rb_bigzero_p(VALUE x)
Definition: bignum.c:2919
ruby_reset_leap_second_info
void ruby_reset_leap_second_info(void)
Definition: time.c:1193
rb_eRegexpError
VALUE rb_eRegexpError
Definition: ruby.h:2078
rb_proc_lambda_p
VALUE rb_proc_lambda_p(VALUE)
Definition: proc.c:275
timer_getoverrun
int timer_getoverrun(timer_t timerid)
pthread_join
int pthread_join(pthread_t, void **)
idLocals
@ idLocals
Definition: rb_mjit_min_header-2.7.0.h:8730
rb_rational_uminus
VALUE rb_rational_uminus(VALUE self)
Definition: rational.c:624
rb_gc_writebarrier_remember
void rb_gc_writebarrier_remember(VALUE obj)
Definition: gc.c:6875
roundf
float roundf(float)
__int64_t
long int __int64_t
Definition: rb_mjit_min_header-2.7.0.h:629
YARVINSN_trace_jump
@ YARVINSN_trace_jump
Definition: rb_mjit_min_header-2.7.0.h:12134
clock_nanosleep
int clock_nanosleep(clockid_t clock_id, int flags, const struct timespec *rqtp, struct timespec *rmtp)
YARVINSN_trace_intern
@ YARVINSN_trace_intern
Definition: rb_mjit_min_header-2.7.0.h:12098
RB_DEBUG_COUNTER_obj_data_empty
@ RB_DEBUG_COUNTER_obj_data_empty
Definition: rb_mjit_min_header-2.7.0.h:11643
rb_vm_struct::orig_progname
VALUE orig_progname
Definition: vm_core.h:645
RB_INT_PARSE_SIGN
@ RB_INT_PARSE_SIGN
Definition: rb_mjit_min_header-2.7.0.h:7934
rb_mod_public_constant
VALUE rb_mod_public_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2985
sigset_t
__sigset_t sigset_t
Definition: rb_mjit_min_header-2.7.0.h:1262
pthread_attr_setschedparam
int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param *)
NODE_LASGN
@ NODE_LASGN
Definition: rb_mjit_min_header-2.7.0.h:8106
rb_check_trusted
void rb_check_trusted(VALUE)
Definition: error.c:3041
pthread_setschedprio
int pthread_setschedprio(pthread_t, int)
RHASH_LEV_MAX
@ RHASH_LEV_MAX
Definition: rb_mjit_min_header-2.7.0.h:6868
lockf
int lockf(int __fd, int __cmd, off_t __len)
rb_cSymbol
VALUE rb_cSymbol
Definition: ruby.h:2046
rb_str2big_gmp
VALUE rb_str2big_gmp(VALUE arg, int base, int badcheck)
getc_unlocked
int getc_unlocked(FILE *)
rb_math_exp
VALUE rb_math_exp(VALUE)
rb_trace_arg_struct
Definition: vm_core.h:1874
__tm::__tm_wday
int __tm_wday
Definition: rb_mjit_min_header-2.7.0.h:955
RARRAY_TRANSIENT_FLAG
#define RARRAY_TRANSIENT_FLAG
rb_jump_tag
void rb_jump_tag(int tag)
Continues the exception caught by rb_protect() and rb_eval_string_protect().
Definition: eval.c:883
pthread_spin_destroy
int pthread_spin_destroy(pthread_spinlock_t *)
__sFILE::_offset
_off_t _offset
Definition: rb_mjit_min_header-2.7.0.h:1002
rb_execarg_setenv
void rb_execarg_setenv(VALUE execarg_obj, VALUE env)
Definition: process.c:2646
ruby_debug_gc_check_func
void ruby_debug_gc_check_func(void)
setprogname
void setprogname(const char *)
__attribute__
rb_control_frame_t * __attribute__((__fastcall__)) *rb_insn_func_t)(rb_execution_context_t *
Definition: rb_mjit_min_header-2.7.0.h:10050
rb_vm_defineclass_type_t
rb_vm_defineclass_type_t
Definition: rb_mjit_min_header-2.7.0.h:9931
RFile
Definition: ruby.h:1134
rb_st_init_numtable_with_size
st_table * rb_st_init_numtable_with_size(st_index_t)
puts
int puts(const char *)
rb_insns_name_array
VALUE rb_insns_name_array(void)
Definition: compile.c:8767
rb_st_foreach
int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t)
pthread_condattr_setclock
int pthread_condattr_setclock(pthread_condattr_t *, clockid_t)
rb_check_safe_str
void rb_check_safe_str(VALUE) __attribute__((error("rb_check_safe_str() and Check_SafeStr() are obsolete
rb_hash_free
void rb_hash_free(VALUE)
YARVINSN_send
@ YARVINSN_send
Definition: rb_mjit_min_header-2.7.0.h:12020
rb_eFloatDomainError
VALUE rb_eFloatDomainError
Definition: ruby.h:2075
sym
#define sym(x)
Definition: date_core.c:3716
rb_eEOFError
VALUE rb_eEOFError
Definition: ruby.h:2059
rb_check_to_integer
VALUE rb_check_to_integer(VALUE, const char *)
Tries to convert val into Integer.
Definition: object.c:2999
rb_arithmetic_sequence_extract
int rb_arithmetic_sequence_extract(VALUE, rb_arithmetic_sequence_components_t *)
Definition: enumerator.c:3374
rb_yield_splat
VALUE rb_yield_splat(VALUE)
Definition: vm_eval.c:1283
Init_eval_method
void Init_eval_method(void)
Definition: vm_method.c:2281
NODE_VALUES
@ NODE_VALUES
Definition: rb_mjit_min_header-2.7.0.h:8127
tcgetpgrp
pid_t tcgetpgrp(int __fildes)
rb_class_private_instance_methods
VALUE rb_class_private_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1310
lgamma_r
double lgamma_r(double, int *)
Definition: lgamma_r.c:63
__sFILE::_ubuf
unsigned char _ubuf[3]
Definition: rb_mjit_min_header-2.7.0.h:998
rb_compile_option_struct
Definition: iseq.h:206
_Noreturn
#define _Noreturn
Definition: ripper.c:1304
__key_t
long long __key_t
Definition: rb_mjit_min_header-2.7.0.h:858
VM_FRAME_MAGIC_TOP
@ VM_FRAME_MAGIC_TOP
Definition: rb_mjit_min_header-2.7.0.h:10060
setreuid
int setreuid(uid_t __ruid, uid_t __euid)
rb_iseq_line_no
unsigned int rb_iseq_line_no(const rb_iseq_t *iseq, size_t pos)
Definition: iseq.c:1761
lroundl
long lroundl(long double)
rb_builtin_type_name
const char * rb_builtin_type_name(int t)
Definition: error.c:761
FPE_FLTINV
#define FPE_FLTINV
Definition: rb_mjit_min_header-2.7.0.h:2202
rb_objspace_alloc
struct rb_objspace * rb_objspace_alloc(void)
Definition: gc.c:1586
rb_iseq_constant_body::has_post
unsigned int has_post
Definition: vm_core.h:355
rb_thread_execute_interrupts
void rb_thread_execute_interrupts(VALUE th)
Definition: thread.c:2284
rb_encdb_declare
void rb_encdb_declare(const char *name)
Definition: encoding.c:350
mask
enum @11::@13::@14 mask
ruby_debug_counter_reset
void ruby_debug_counter_reset(void)
Definition: debug_counter.c:126
tTOKEN_CONST_BEGIN
@ tTOKEN_CONST_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8677
rb_cvar_get
VALUE rb_cvar_get(VALUE, ID)
Definition: variable.c:3096
rb_vm_struct::gvl
rb_global_vm_lock_t gvl
Definition: vm_core.h:579
rb_fd_clr
void rb_fd_clr(int, rb_fdset_t *)
rb_to_id
ID rb_to_id(VALUE)
Definition: string.c:11146
rb_ary_rotate
VALUE rb_ary_rotate(VALUE, long)
Definition: array.c:2617
YARVINSN_splatarray
@ YARVINSN_splatarray
Definition: rb_mjit_min_header-2.7.0.h:12002
pclose
int pclose(FILE *)
_reent::_atexit0
struct _atexit _atexit0
Definition: rb_mjit_min_header-2.7.0.h:1108
__sFILE::_seek
_fpos_t(* _seek)(struct _reent *, void *, _fpos_t, int)
Definition: rb_mjit_min_header-2.7.0.h:993
YARVINSN_duparray
@ YARVINSN_duparray
Definition: rb_mjit_min_header-2.7.0.h:11998
usleep
int usleep(useconds_t __useconds)
rb_int_equal
VALUE rb_int_equal(VALUE x, VALUE y)
Definition: numeric.c:4163
RMoved::flags
VALUE flags
Definition: internal.h:909
tTOKEN_ATTRSET_BEGIN
@ tTOKEN_ATTRSET_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8681
rb_string_value_cstr
char * rb_string_value_cstr(volatile VALUE *)
Definition: string.c:2291
rb_execution_context_struct::errinfo
VALUE errinfo
Definition: vm_core.h:875
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
RB_DEBUG_COUNTER_lvar_get_dynamic
@ RB_DEBUG_COUNTER_lvar_get_dynamic
Definition: rb_mjit_min_header-2.7.0.h:11588
rb_absint_singlebit_p
int rb_absint_singlebit_p(VALUE val)
Definition: bignum.c:3446
YARVINSN_opt_aset_with
@ YARVINSN_opt_aset_with
Definition: rb_mjit_min_header-2.7.0.h:12055
rb_iseq_constant_body::ci_size
unsigned int ci_size
Definition: vm_core.h:437
NODE_BLOCK_PASS
@ NODE_BLOCK_PASS
Definition: rb_mjit_min_header-2.7.0.h:8158
__sFILE::_file
short _file
Definition: vsnprintf.c:176
Init_native_thread
void Init_native_thread(rb_thread_t *th)
NODE_ATTRASGN
@ NODE_ATTRASGN
Definition: rb_mjit_min_header-2.7.0.h:8181
rb_method_attr_t
struct rb_method_attr_struct rb_method_attr_t
tInitialize
@ tInitialize
Definition: rb_mjit_min_header-2.7.0.h:8628
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
ruby_strtoul
unsigned long ruby_strtoul(const char *str, char **endptr, int base)
Definition: util.c:130
rb_free_method_entry
void rb_free_method_entry(const rb_method_entry_t *me)
Definition: vm_method.c:174
rb_xcalloc_mul_add_mul
void * rb_xcalloc_mul_add_mul(size_t, size_t, size_t, size_t) __attribute__((__malloc__))
Definition: gc.c:10177
rb_imemo_new
VALUE rb_imemo_new(enum imemo_type type, VALUE v1, VALUE v2, VALUE v3, VALUE v0)
Definition: gc.c:2306
rb_hash_new_with_size
VALUE rb_hash_new_with_size(st_index_t size)
Definition: hash.c:1507
_reent::_stdin
__FILE * _stdin
Definition: rb_mjit_min_header-2.7.0.h:1063
tProc
@ tProc
Definition: rb_mjit_min_header-2.7.0.h:8623
rb_iseq_constant_body::variable
struct rb_iseq_constant_body::@179 variable
rb_time_timeval
struct timeval rb_time_timeval(VALUE time)
Definition: time.c:2675
__tzrule_struct::d
int d
Definition: rb_mjit_min_header-2.7.0.h:1980
rb_execution_context_struct::interrupt_flag
rb_atomic_t interrupt_flag
Definition: vm_core.h:853
__buf
__inline__ char * __buf
Definition: rb_mjit_min_header-2.7.0.h:3592
long
#define long
Definition: rb_mjit_min_header-2.7.0.h:2880
rb_fix2int
long rb_fix2int(VALUE val)
Definition: numeric.c:3003
__srget_r
int __srget_r(struct _reent *, FILE *)
_sigcommune::_si_write_handle
void * _si_write_handle
Definition: rb_mjit_min_header-2.7.0.h:2099
rb_reg_match2
VALUE rb_reg_match2(VALUE)
Definition: re.c:3238
NODE_FOR_MASGN
@ NODE_FOR_MASGN
Definition: rb_mjit_min_header-2.7.0.h:8094
rb_get_expanded_load_path
VALUE rb_get_expanded_load_path(void)
Definition: load.c:92
rb_fiber_reset_root_local_storage
void rb_fiber_reset_root_local_storage(struct rb_thread_struct *)
Definition: cont.c:2120
vm_svar::cref_or_me
const VALUE cref_or_me
class reference or rb_method_entry_t
Definition: internal.h:1183
rb_obj_call_init_kw
void rb_obj_call_init_kw(VALUE, int, const VALUE *, int)
Definition: eval.c:1687
iseq_inline_cache_entry
Definition: vm_core.h:220
rb_iseq_disasm
VALUE rb_iseq_disasm(const rb_iseq_t *iseq)
Definition: iseq.c:2278
rb_gc_writebarrier_unprotect
void rb_gc_writebarrier_unprotect(VALUE obj)
Definition: gc.c:6838
lindex_t
unsigned long lindex_t
Definition: rb_mjit_min_header-2.7.0.h:11941
llrintf
long long int llrintf(float)
_fputs_unlocked_r
int _fputs_unlocked_r(struct _reent *, const char *__restrict, FILE *__restrict)
rb_big_clone
VALUE rb_big_clone(VALUE)
Definition: bignum.c:3020
rb_execarg::shell_script
VALUE shell_script
Definition: internal.h:2022
rb_ary_sort_bang
VALUE rb_ary_sort_bang(VALUE)
Definition: array.c:2777
VM_METHOD_TYPE_UNDEF
@ VM_METHOD_TYPE_UNDEF
Definition: rb_mjit_min_header-2.7.0.h:8835
mjit_options::debug_flags
char * debug_flags
Definition: rb_mjit_min_header-2.7.0.h:11729
rb_p
void rb_p(VALUE)
Definition: io.c:7798
rb_data_object_get
#define rb_data_object_get
Definition: rb_mjit_min_header-2.7.0.h:4946
rb_str_modify_expand
void rb_str_modify_expand(VALUE, long)
Definition: string.c:2122
__ULong
unsigned int __ULong
Definition: rb_mjit_min_header-2.7.0.h:938
rb_write_error_str
void rb_write_error_str(VALUE mesg)
Definition: io.c:7936
rb_struct_aset
VALUE rb_struct_aset(VALUE, VALUE, VALUE)
Definition: struct.c:1091
block_type_symbol
@ block_type_symbol
Definition: rb_mjit_min_header-2.7.0.h:9784
uintmax_t
__uintmax_t uintmax_t
Definition: rb_mjit_min_header-2.7.0.h:1187
rb_time_succ
VALUE rb_time_succ(VALUE)
Definition: time.c:4229
rb_ensure_entry_t
struct rb_ensure_entry rb_ensure_entry_t
idEmptyP
@ idEmptyP
Definition: rb_mjit_min_header-2.7.0.h:8586
rb_mjit_compile_info
Definition: rb_mjit_min_header-2.7.0.h:11735
rb_float_gt
VALUE rb_float_gt(VALUE x, VALUE y)
Definition: numeric.c:1503
rb_f_sprintf
VALUE rb_f_sprintf(int, const VALUE *)
Definition: sprintf.c:198
TRAP_INTERRUPT_MASK
@ TRAP_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.0.h:10570
labs
long labs(long)
rb_iseq_constant_body::size
unsigned int size
Definition: vm_core.h:365
tTo_proc
@ tTo_proc
Definition: rb_mjit_min_header-2.7.0.h:8637
rb_execution_context_struct::passed_block_handler
VALUE passed_block_handler
Definition: vm_core.h:876
rb_unblock_callback
Definition: vm_core.h:816
rb_str_to_cstr
char * rb_str_to_cstr(VALUE str)
Definition: string.c:2284
rb_parser_printf
void rb_parser_printf(struct parser_params *parser, const char *fmt,...) __attribute__((format(printf
rb_iseq_original_iseq
VALUE * rb_iseq_original_iseq(const rb_iseq_t *iseq)
Definition: compile.c:778
__pthread_barrierattr_t
Definition: rb_mjit_min_header-2.7.0.h:1352
rb_cref_struct
CREF (Class REFerence)
Definition: method.h:41
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:1273
rb_global_entry
struct rb_global_entry * rb_global_entry(ID)
Definition: variable.c:326
call_type
call_type
Definition: vm_eval.c:31
rb_float_cmp
int rb_float_cmp(VALUE x, VALUE y)
Definition: numeric.c:1487
rb_int_gt
VALUE rb_int_gt(VALUE x, VALUE y)
Definition: numeric.c:4252
seed48
unsigned short * seed48(unsigned short[3])
BOP_LENGTH
@ BOP_LENGTH
Definition: rb_mjit_min_header-2.7.0.h:9646
_reent::_h_errno
int _h_errno
Definition: rb_mjit_min_header-2.7.0.h:1098
tTOKEN_ATTRSET_END
@ tTOKEN_ATTRSET_END
Definition: rb_mjit_min_header-2.7.0.h:8682
_siprintf_r
int int _siprintf_r(struct _reent *, char *, const char *,...) __attribute__((__format__(__printf__
pthread_rwlockattr_getpshared
int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *attr, int *pshared)
rb_reg_backref_number
int rb_reg_backref_number(VALUE match, VALUE backref)
Definition: re.c:1173
RARRAY_EMBED_FLAG
#define RARRAY_EMBED_FLAG
YARVINSN_opt_length
@ YARVINSN_opt_length
Definition: rb_mjit_min_header-2.7.0.h:12057
sigqueue
int sigqueue(pid_t, int, const union sigval)
id__send__
@ id__send__
Definition: rb_mjit_min_header-2.7.0.h:8707
ruby_disable_gc
int ruby_disable_gc
Definition: gc.c:1001
rb_resolve_refined_method_callable
const MJIT_FUNC_EXPORTED rb_callable_method_entry_t * rb_resolve_refined_method_callable(VALUE refinements, const rb_callable_method_entry_t *me)
Definition: vm_method.c:979
NODE_DOT2
@ NODE_DOT2
Definition: rb_mjit_min_header-2.7.0.h:8169
RBasicRaw::klass
VALUE klass
Definition: internal.h:1978
_lcong48_r
void _lcong48_r(struct _reent *, unsigned short[7])
rb_errinfo
VALUE rb_errinfo(void)
The current exception in the current thread.
Definition: eval.c:1881
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)
rb_calling_info::block_handler
VALUE block_handler
Definition: vm_core.h:251
strchrnul
char * strchrnul(const char *, int)
rb_encdb_alias
int rb_encdb_alias(const char *alias, const char *orig)
Definition: encoding.c:565
rb_ary_ptr_use_start
VALUE * rb_ary_ptr_use_start(VALUE ary)
Definition: array.c:226
rb_hash_fetch
VALUE rb_hash_fetch(VALUE, VALUE)
Definition: hash.c:2061
rb_call_info_with_kwarg::kw_arg
struct rb_call_info_kw_arg * kw_arg
Definition: vm_core.h:247
rb_str_tmp_frozen_release
void rb_str_tmp_frozen_release(VALUE str, VALUE tmp)
Definition: string.c:1217
rb_int2inum
VALUE rb_int2inum(intptr_t)
Definition: bignum.c:3208
acoshl
long double acoshl(long double)
__sFILE64::_blksize
int _blksize
Definition: rb_mjit_min_header-2.7.0.h:1031
rb_code_position_struct::column
int column
Definition: node.h:132
RB_DEBUG_COUNTER_obj_class_ptr
@ RB_DEBUG_COUNTER_obj_class_ptr
Definition: rb_mjit_min_header-2.7.0.h:11652
idBackquote
@ idBackquote
Definition: rb_mjit_min_header-2.7.0.h:8574
rb_ary_to_s
VALUE rb_ary_to_s(VALUE)
Definition: array.c:2453
siginfo_t::si_pid
pid_t si_pid
Definition: rb_mjit_min_header-2.7.0.h:2116
rb_big_divrem_normal
VALUE rb_big_divrem_normal(VALUE x, VALUE y)
Definition: bignum.c:2714
YARVINSN_trace_freezestring
@ YARVINSN_trace_freezestring
Definition: rb_mjit_min_header-2.7.0.h:12096
rb_execarg::uid_given
unsigned uid_given
Definition: internal.h:2045
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.0.h:11726
OPTIMIZED_METHOD_TYPE_SEND
@ OPTIMIZED_METHOD_TYPE_SEND
Definition: rb_mjit_min_header-2.7.0.h:8871
NODE_CDECL
@ NODE_CDECL
Definition: rb_mjit_min_header-2.7.0.h:8111
rb_to_array_type
VALUE rb_to_array_type(VALUE obj)
Definition: array.c:902
__tzinfo_struct
Definition: rb_mjit_min_header-2.7.0.h:1985
YARVINSN_getclassvariable
@ YARVINSN_getclassvariable
Definition: rb_mjit_min_header-2.7.0.h:11980
rb_iseq_method_name
VALUE rb_iseq_method_name(const rb_iseq_t *iseq)
Definition: iseq.c:1063
rb_struct_define
VALUE rb_struct_define(const char *,...)
Definition: struct.c:434
fmal
long double fmal(long double, long double, long double)
getlogin_r
int getlogin_r(char *name, size_t namesize)
st_index_t
st_data_t st_index_t
Definition: st.h:50
rb_float_pow
VALUE rb_float_pow(VALUE x, VALUE y)
Definition: numeric.c:1298
rb_compile_option_struct::tailcall_optimization
unsigned int tailcall_optimization
Definition: iseq.h:209
YARVINSN_nop
@ YARVINSN_nop
Definition: rb_mjit_min_header-2.7.0.h:11970
rb_rational_cmp
VALUE rb_rational_cmp(VALUE self, VALUE other)
Definition: rational.c:1097
RComplex::real
VALUE real
Definition: internal.h:807
rb_complex_real
VALUE rb_complex_real(VALUE z)
Definition: complex.c:726
exp10f
float exp10f(float)
mbtowc
int mbtowc(wchar_t *__restrict, const char *__restrict, size_t)
idDot2
@ idDot2
Definition: rb_mjit_min_header-2.7.0.h:8551
sigwaitinfo
int sigwaitinfo(const sigset_t *, siginfo_t *)
rb_st_lookup
int rb_st_lookup(st_table *, st_data_t, st_data_t *)
rb_include_class_new
VALUE rb_include_class_new(VALUE, VALUE)
Definition: class.c:825
rb_obj_public_methods
VALUE rb_obj_public_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1410
rb_vm_struct::load_path_check_cache
VALUE load_path_check_cache
Definition: vm_core.h:617
idInspect
@ idInspect
Definition: rb_mjit_min_header-2.7.0.h:8688
__sFILE::_up
unsigned char * _up
Definition: rb_mjit_min_header-2.7.0.h:996
YARVINSN_setn
@ YARVINSN_setn
Definition: rb_mjit_min_header-2.7.0.h:12011
rb_get_path_check_to_string
VALUE rb_get_path_check_to_string(VALUE)
Definition: file.c:196
rb_compile_warning
const char *void void rb_compile_warning(const char *, int, const char *,...) __attribute__((format(printf
st_hash_type
Definition: st.h:61
__pthread_condattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1350
RNode::state
long state
Definition: node.h:166
vm_throw_data
THROW_DATA.
Definition: internal.h:1193
YARVINSN_putself
@ YARVINSN_putself
Definition: rb_mjit_min_header-2.7.0.h:11987
tTo_a
@ tTo_a
Definition: rb_mjit_min_header-2.7.0.h:8639
vm_throw_data::flags
VALUE flags
Definition: internal.h:1194
rb_block::as
union rb_block::@187 as
rb_iseq_constant_body::catch_table
struct iseq_catch_table * catch_table
Definition: vm_core.h:414
rresvport
int rresvport(int *__alport)
strxfrm_l
size_t strxfrm_l(char *__restrict, const char *__restrict, size_t, locale_t)
rb_io_flush_raw
VALUE rb_io_flush_raw(VALUE, int)
Definition: io.c:1864
rb_warn_deprecated
void rb_warn_deprecated(const char *fmt, const char *suggest,...) __attribute__((format(printf
rb_method_call_kw
VALUE rb_method_call_kw(int, const VALUE *, VALUE, int)
Definition: proc.c:2254
strtold
long double strtold(const char *__restrict, char **__restrict)
rb_threadptr_signal_exit
void rb_threadptr_signal_exit(rb_thread_t *th)
Definition: thread.c:2334
snprintf
#define snprintf(str, len,...)
Definition: rb_mjit_min_header-2.7.0.h:6589
rb_hash_add_new_element
int rb_hash_add_new_element(VALUE hash, VALUE key, VALUE val)
Definition: hash.c:4472
rb_num2ulong
unsigned long rb_num2ulong(VALUE)
Definition: numeric.c:2918
random
long random(void)
RB_DEBUG_COUNTER_ivar_get_base
@ RB_DEBUG_COUNTER_ivar_get_base
Definition: rb_mjit_min_header-2.7.0.h:11585
frexpf
float frexpf(float, int *)
YARVINSN_leave
@ YARVINSN_leave
Definition: rb_mjit_min_header-2.7.0.h:12029
rb_env_t
Definition: vm_core.h:1055
VM_FRAME_FLAG_LAMBDA
@ VM_FRAME_FLAG_LAMBDA
Definition: rb_mjit_min_header-2.7.0.h:10071
rb_vm_struct::special_exceptions
const VALUE special_exceptions[ruby_special_error_count]
Definition: vm_core.h:611
iseq_compile_data::redo_label
struct iseq_label_data * redo_label
Definition: iseq.h:100
rb_st_insert2
int rb_st_insert2(st_table *, st_data_t, st_data_t, st_data_t(*)(st_data_t))
RMoved::next
VALUE next
Definition: internal.h:911
rb_ary_modify
void rb_ary_modify(VALUE)
Definition: array.c:548
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
fread
size_t fread(void *__restrict, size_t _size, size_t _n, FILE *__restrict)
rb_range_values
int rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp)
Definition: range.c:1243
rb_eZeroDivError
VALUE rb_eZeroDivError
Definition: ruby.h:2071
RB_DEBUG_COUNTER_obj_data_zombie
@ RB_DEBUG_COUNTER_obj_data_zombie
Definition: rb_mjit_min_header-2.7.0.h:11646
cnt
rb_atomic_t cnt[RUBY_NSIG]
Definition: signal.c:503
rb_vrescue2
VALUE rb_vrescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE, va_list)
An equivalent of rescue clause.
Definition: eval.c:976
NODE_HASH
@ NODE_HASH
Definition: rb_mjit_min_header-2.7.0.h:8128
rb_vm_at_exit_func
void rb_vm_at_exit_func(struct rb_vm_struct *)
Definition: rb_mjit_min_header-2.7.0.h:9667
sched_getscheduler
int sched_getscheduler(pid_t __pid)
ROBJECT_EMBED_LEN_MAX
#define ROBJECT_EMBED_LEN_MAX
idSingleton_method_removed
@ idSingleton_method_removed
Definition: rb_mjit_min_header-2.7.0.h:8696
RString::len
long len
Definition: ruby.h:992
RUBY_ID_JUNK
@ RUBY_ID_JUNK
Definition: rb_mjit_min_header-2.7.0.h:8501
rb_obj_freeze
VALUE rb_obj_freeze(VALUE)
Make the object unmodifiable.
Definition: object.c:1080
rb_check_funcall_hook
void rb_check_funcall_hook(int, VALUE, ID, int, const VALUE *, VALUE)
Definition: rb_mjit_min_header-2.7.0.h:7826
imemo_cref
@ imemo_cref
Definition: rb_mjit_min_header-2.7.0.h:7049
rb_mod_sys_fail
void rb_mod_sys_fail(VALUE mod, const char *mesg)
Definition: error.c:2833
RB_DEBUG_COUNTER_ccf_cfunc
@ RB_DEBUG_COUNTER_ccf_cfunc
Definition: rb_mjit_min_header-2.7.0.h:11550
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
rb_thread_shield_new
VALUE rb_thread_shield_new(void)
Definition: thread.c:4790
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)
idSize
@ idSize
Definition: rb_mjit_min_header-2.7.0.h:8700
RAISED_NOMEMORY
@ RAISED_NOMEMORY
Definition: rb_mjit_min_header-2.7.0.h:11182
_global_impure_ptr
struct _reent *const _global_impure_ptr
rb_global_vm_lock_struct::switch_cond
rb_nativethread_cond_t switch_cond
Definition: thread_pthread.h:69
rb_int_pow
VALUE rb_int_pow(VALUE x, VALUE y)
Definition: numeric.c:4106
loff_t
__loff_t loff_t
Definition: rb_mjit_min_header-2.7.0.h:1400
ruby_vm_event_flags
rb_event_flag_t ruby_vm_event_flags
Definition: vm.c:375
RArray::ary
const VALUE ary[RARRAY_EMBED_LEN_MAX]
Definition: ruby.h:1064
YARVINSN_trace_opt_invokebuiltin_delegate_leave
@ YARVINSN_trace_opt_invokebuiltin_delegate_leave
Definition: rb_mjit_min_header-2.7.0.h:12169
idOR
@ idOR
Definition: rb_mjit_min_header-2.7.0.h:8733
strtoumax_l
uintmax_t strtoumax_l(const char *__restrict, char **_restrict, int, locale_t)
RIMemo::v2
VALUE v2
Definition: internal.h:1128
rb_define_class_variable
void rb_define_class_variable(VALUE, const char *, VALUE)
Definition: variable.c:3145
rb_cvar_defined
VALUE rb_cvar_defined(VALUE, ID)
Definition: variable.c:3112
YARVINSN_trace_opt_plus
@ YARVINSN_trace_opt_plus
Definition: rb_mjit_min_header-2.7.0.h:12142
cmp_opt_Float
@ cmp_opt_Float
Definition: rb_mjit_min_header-2.7.0.h:7179
_reent::_wcsrtombs_state
_mbstate_t _wcsrtombs_state
Definition: rb_mjit_min_header-2.7.0.h:1097
YARVINSN_trace_branchnil
@ YARVINSN_trace_branchnil
Definition: rb_mjit_min_header-2.7.0.h:12137
NODE_ITER
@ NODE_ITER
Definition: rb_mjit_min_header-2.7.0.h:8092
ruby_show_copyright
void ruby_show_copyright(void)
Prints the copyright notice of the CRuby interpreter to stdout.
Definition: version.c:138
rb_classext_struct::refined_class
const VALUE refined_class
Definition: internal.h:1040
rb_const_list
VALUE rb_const_list(void *)
Definition: variable.c:2594
caddr_t
char * caddr_t
Definition: rb_mjit_min_header-2.7.0.h:1308
strtok
char * strtok(char *__restrict, const char *__restrict)
rb_hash_proc
st_index_t rb_hash_proc(st_index_t hash, VALUE proc)
Definition: proc.c:1302
strnstr
char * strnstr(const char *, const char *, size_t) __attribute__((__pure__))
RB_DEBUG_COUNTER_obj_hash_ar
@ RB_DEBUG_COUNTER_obj_hash_ar
Definition: rb_mjit_min_header-2.7.0.h:11636
rb_secure
#define rb_secure(level)
ulong
unsigned long ulong
Definition: rb_mjit_min_header-2.7.0.h:1298
YARVINSN_trace_setspecial
@ YARVINSN_trace_setspecial
Definition: rb_mjit_min_header-2.7.0.h:12080
ruby_script
void ruby_script(const char *name)
Sets the current script name to this value.
Definition: ruby.c:2277
rb_dbl2big
VALUE rb_dbl2big(double)
Definition: bignum.c:5249
rb_flt_rationalize
VALUE rb_flt_rationalize(VALUE)
Definition: rational.c:2242
iseq_inline_storage_entry::value
VALUE value
Definition: vm_core.h:234
strtof_l
float strtof_l(const char *__restrict, char **__restrict, locale_t)
rb_struct_lookup
VALUE rb_struct_lookup(VALUE s, VALUE idx)
Definition: struct.c:1104
rb_mod_class_variables
VALUE rb_mod_class_variables(int, const VALUE *, VALUE)
Definition: variable.c:3237
remquof
float remquof(float, float, int *)
YARVINSN_putnil
@ YARVINSN_putnil
Definition: rb_mjit_min_header-2.7.0.h:11986
DEFINED_METHOD
@ DEFINED_METHOD
Definition: rb_mjit_min_header-2.7.0.h:10887
YARVINSN_getglobal
@ YARVINSN_getglobal
Definition: rb_mjit_min_header-2.7.0.h:11984
pthread_mutexattr_gettype
int pthread_mutexattr_gettype(const pthread_mutexattr_t *, int *)
fflush
int fflush(FILE *)
st_hash_type::compare
int(* compare)(st_data_t, st_data_t)
Definition: st.h:62
CALL_INFO
struct rb_call_info * CALL_INFO
Definition: rb_mjit_min_header-2.7.0.h:10045
YARVINSN_trace_checktype
@ YARVINSN_trace_checktype
Definition: rb_mjit_min_header-2.7.0.h:12119
RB_DEBUG_COUNTER_obj_struct_ptr
@ RB_DEBUG_COUNTER_obj_struct_ptr
Definition: rb_mjit_min_header-2.7.0.h:11642
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
tQuo
@ tQuo
Definition: rb_mjit_min_header-2.7.0.h:8656
min_argc
const rb_iseq_t const int const int min_argc
Definition: rb_mjit_min_header-2.7.0.h:13505
RB_DEBUG_COUNTER_frame_push_top
@ RB_DEBUG_COUNTER_frame_push_top
Definition: rb_mjit_min_header-2.7.0.h:11564
RB_DEBUG_COUNTER_obj_float
@ RB_DEBUG_COUNTER_obj_float
Definition: rb_mjit_min_header-2.7.0.h:11656
rb_iseq_constant_body::type
enum rb_iseq_constant_body::iseq_type type
YARVINSN_trace_invokebuiltin
@ YARVINSN_trace_invokebuiltin
Definition: rb_mjit_min_header-2.7.0.h:12167
rb_reg_new_ary
VALUE rb_reg_new_ary(VALUE ary, int options)
Definition: re.c:2926
VM_SVAR_BACKREF
@ VM_SVAR_BACKREF
Definition: rb_mjit_min_header-2.7.0.h:10038
rb_error_frozen_object
void rb_error_frozen_object(VALUE frozen_obj)
Definition: error.c:3006
ruby_rarray_flags
ruby_rarray_flags
Definition: ruby.h:1027
__ssp_real_read
_ssize_t __ssp_real_read(int __fd, void *__buf, size_t __len) __asm__("" "read")
RHASH_ENUM_END
@ RHASH_ENUM_END
Definition: rb_mjit_min_header-2.7.0.h:6869
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
rb_sys_fail
void rb_sys_fail(const char *mesg)
Definition: error.c:2793
RB_DEBUG_COUNTER_gc_isptr_range
@ RB_DEBUG_COUNTER_gc_isptr_range
Definition: rb_mjit_min_header-2.7.0.h:11604
rb_call_data::cc
struct rb_call_cache cc
Definition: internal.h:2394
rb_rs
VALUE rb_rs
Definition: intern.h:585
faccessat
int faccessat(int __dirfd, const char *__path, int __mode, int __flags)
rb_register_sigaltstack
void * rb_register_sigaltstack(void)
y1f
float y1f(float)
RB_INT_PARSE_UNDERSCORE
@ RB_INT_PARSE_UNDERSCORE
Definition: rb_mjit_min_header-2.7.0.h:7935
rb_fiber_resume_kw
VALUE rb_fiber_resume_kw(VALUE fib, int argc, const VALUE *argv, int kw_splat)
Definition: cont.c:2082
rb_ary_pop
VALUE rb_ary_pop(VALUE)
Definition: array.c:1241
VM_METHOD_TYPE_ALIAS
@ VM_METHOD_TYPE_ALIAS
Definition: rb_mjit_min_header-2.7.0.h:8834
BOP_GE
@ BOP_GE
Definition: rb_mjit_min_header-2.7.0.h:9652
rb_eTypeError
VALUE rb_eTypeError
Definition: error.c:922
rb_require
VALUE rb_require(const char *)
Definition: load.c:1118
NODE_VALIAS
@ NODE_VALIAS
Definition: rb_mjit_min_header-2.7.0.h:8162
__sFILE64::_ub
struct __sbuf _ub
Definition: rb_mjit_min_header-2.7.0.h:1025
ROBJECT_ENUM_END
@ ROBJECT_ENUM_END
Definition: ruby.h:919
VM_CALL__END
@ VM_CALL__END
Definition: rb_mjit_min_header-2.7.0.h:10017
ruby_hexdigits
const char ruby_hexdigits[]
Definition: escape.c:5
_fgets_unlocked_r
char * _fgets_unlocked_r(struct _reent *, char *__restrict, int, FILE *__restrict)
rint
double rint(double)
rb_mod_name
VALUE rb_mod_name(VALUE)
Definition: variable.c:102
rb_num_to_uint
int rb_num_to_uint(VALUE val, unsigned int *ret)
Definition: numeric.c:244
RRational::den
VALUE den
Definition: internal.h:791
__tzinfo_struct::__tzrule
__tzrule_type __tzrule[2]
Definition: rb_mjit_min_header-2.7.0.h:1989
strncat
#define strncat(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2856
rb_iseq_location
VALUE rb_iseq_location(const rb_iseq_t *iseq)
Definition: proc.c:1242
rb_fdset_t
fd_set rb_fdset_t
Definition: intern.h:403
VM_CALL_SUPER_bit
@ VM_CALL_SUPER_bit
Definition: rb_mjit_min_header-2.7.0.h:10014
rb_hook_list_struct::need_clean
unsigned int need_clean
Definition: vm_core.h:568
rb_obj_gc_flags
size_t rb_obj_gc_flags(VALUE, ID[], size_t)
rb_method_entry_struct::flags
VALUE flags
Definition: method.h:52
rb_cFalseClass
VALUE rb_cFalseClass
FalseClass class.
Definition: ruby.h:2022
YARVINSN_throw
@ YARVINSN_throw
Definition: rb_mjit_min_header-2.7.0.h:12030
NODE_SCOPE
@ NODE_SCOPE
Definition: rb_mjit_min_header-2.7.0.h:8081
rb_print_inaccessible
void rb_print_inaccessible(VALUE klass, ID id, rb_method_visibility_t visi)
Definition: eval_error.c:407
rb_execution_context_struct::vm_stack
VALUE * vm_stack
Definition: vm_core.h:845
idNUMPARAM_9
@ idNUMPARAM_9
Definition: rb_mjit_min_header-2.7.0.h:8749
_strndup_r
char * _strndup_r(struct _reent *, const char *, size_t)
rb_execution_context_struct::trace_arg
struct rb_trace_arg_struct * trace_arg
Definition: vm_core.h:872
rb_big_ge
VALUE rb_big_ge(VALUE x, VALUE y)
Definition: bignum.c:5495
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.0.h:1786
rb_warning_string
VALUE rb_warning_string(const char *fmt,...) __attribute__((format(printf
rb_interrupt
void rb_interrupt(void)
Raises an Interrupt exception.
Definition: eval.c:696
rb_int_parse_flags
rb_int_parse_flags
Definition: internal.h:2457
node_type
node_type
Definition: node.h:22
_mbstate_t::__wch
wint_t __wch
Definition: rb_mjit_min_header-2.7.0.h:917
rb_ary_tmp_new_fill
VALUE rb_ary_tmp_new_fill(long capa)
Definition: array.c:776
NODE
struct RNode NODE
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_reg_new
VALUE rb_reg_new(const char *, long, int)
Definition: re.c:2946
YARVINSN_branchif
@ YARVINSN_branchif
Definition: rb_mjit_min_header-2.7.0.h:12032
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_hook_list_t
struct rb_hook_list_struct rb_hook_list_t
pthread_rwlock_wrlock
int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock)
rb_call_info::mid
ID mid
Definition: internal.h:2389
rb_cstr_to_inum
VALUE rb_cstr_to_inum(const char *, int, int)
Definition: bignum.c:4012
entries
struct iseq_catch_table_entry entries[]
Definition: rb_mjit_min_header-2.7.0.h:10827
rb_vm_struct::fiber_vm_stack_size
size_t fiber_vm_stack_size
Definition: vm_core.h:665
VM_CHECKMATCH_TYPE_RESCUE
@ VM_CHECKMATCH_TYPE_RESCUE
Definition: rb_mjit_min_header-2.7.0.h:10000
RUBY_T_BIGNUM
@ RUBY_T_BIGNUM
Definition: rb_mjit_min_header-2.7.0.h:4336
rb_is_global_id
int rb_is_global_id(ID id)
Definition: symbol.c:866
rb_hash_new
VALUE rb_hash_new(void)
Definition: hash.c:1501
fpos_t
_fpos64_t fpos_t
Definition: rb_mjit_min_header-2.7.0.h:1443
rb_str_dump
VALUE rb_str_dump(VALUE)
Definition: string.c:6042
rb_big2ull
unsigned long long rb_big2ull(VALUE)
lgammaf
float lgammaf(float)
RString::aux
union RString::@94::@95::@96 aux
strerror_r
char * strerror_r(int, char *, size_t)
YARVINSN_opt_send_without_block
@ YARVINSN_opt_send_without_block
Definition: rb_mjit_min_header-2.7.0.h:12021
rb_method_alias_struct::original_me
struct rb_method_entry_struct * original_me
Definition: method.h:143
YARVINSN_opt_lt
@ YARVINSN_opt_lt
Definition: rb_mjit_min_header-2.7.0.h:12046
rb_size_mul_or_raise
size_t rb_size_mul_or_raise(size_t, size_t, VALUE)
Definition: gc.c:192
setegid
int setegid(gid_t __gid)
YARVINSN_trace_throw
@ YARVINSN_trace_throw
Definition: rb_mjit_min_header-2.7.0.h:12133
rb_big_plus
VALUE rb_big_plus(VALUE, VALUE)
Definition: bignum.c:5824
mknodat
int mknodat(int, const char *, mode_t, dev_t)
YARVINSN_trace_setconstant
@ YARVINSN_trace_setconstant
Definition: rb_mjit_min_header-2.7.0.h:12086
gethostname
int gethostname(char *__name, size_t __len)
RUBY_ID_GLOBAL
@ RUBY_ID_GLOBAL
Definition: rb_mjit_min_header-2.7.0.h:8497
sinl
long double sinl(long double)
SI_MESGQ
#define SI_MESGQ
Definition: rb_mjit_min_header-2.7.0.h:2184
rb_must_asciicompat
void rb_must_asciicompat(VALUE)
Definition: string.c:2166
_glue::_next
struct _glue * _next
Definition: rb_mjit_min_header-2.7.0.h:1041
rb_method_entry_at
const rb_method_entry_t * rb_method_entry_at(VALUE obj, ID id)
Definition: vm_method.c:756
__assert
void __assert(const char *, int, const char *) __attribute__((__noreturn__))
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.0.h:5424
rb_str_setter
rb_gvar_setter_t rb_str_setter
Definition: rb_mjit_min_header-2.7.0.h:6106
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
__pthread_rwlock_t
Definition: rb_mjit_min_header-2.7.0.h:1361
OPTIMIZED_METHOD_TYPE_BLOCK_CALL
@ OPTIMIZED_METHOD_TYPE_BLOCK_CALL
Definition: rb_mjit_min_header-2.7.0.h:8873
VM_DEFINECLASS_TYPE_MODULE
@ VM_DEFINECLASS_TYPE_MODULE
Definition: rb_mjit_min_header-2.7.0.h:9934
rb_eRuntimeError
VALUE rb_eRuntimeError
Definition: error.c:920
input
unsigned int input
Definition: nkf.c:4325
rb_big_mul_gmp
VALUE rb_big_mul_gmp(VALUE x, VALUE y)
__sFILE64::_ubuf
unsigned char _ubuf[3]
Definition: rb_mjit_min_header-2.7.0.h:1028
RNode::args
struct rb_args_info * args
Definition: node.h:168
rb_vm_struct::verbose
VALUE verbose
Definition: vm_core.h:645
mjit_gc_start_hook
void mjit_gc_start_hook(void)
rb_fiber_struct
Definition: cont.c:226
rb_marshal_define_compat
void rb_marshal_define_compat(VALUE newclass, VALUE oldclass, VALUE(*dumper)(VALUE), VALUE(*loader)(VALUE, VALUE))
Definition: marshal.c:133
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
NODE_DOT3
@ NODE_DOT3
Definition: rb_mjit_min_header-2.7.0.h:8170
YARVINSN_trace_swap
@ YARVINSN_trace_swap
Definition: rb_mjit_min_header-2.7.0.h:12111
rb_obj_frozen_p
VALUE rb_obj_frozen_p(VALUE obj)
Determines if the object is frozen.
Definition: object.c:1099
RClass::basic
struct RBasic basic
Definition: internal.h:1049
rb_str_comparable
int rb_str_comparable(VALUE, VALUE)
Definition: string.c:3203
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.0.h:9246
mjit_opts
struct mjit_options mjit_opts
Definition: mjit_worker.c:174
MEMO::cnt
long cnt
Definition: internal.h:1284
ruby_digitmap
const char ruby_digitmap[]
Definition: bignum.c:38
cookie_io_functions_t
Definition: rb_mjit_min_header-2.7.0.h:1791
rb_vm_cref
rb_cref_t * rb_vm_cref(void)
Definition: vm.c:1384
rb_str_offset
long rb_str_offset(VALUE, long)
Definition: string.c:2416
rb_autoload_p
VALUE rb_autoload_p(VALUE, ID)
Definition: variable.c:2281
sigval::sival_int
int sival_int
Definition: rb_mjit_min_header-2.7.0.h:2083
rb_iseq_load
VALUE rb_iseq_load(VALUE data, VALUE parent, VALUE opt)
Definition: iseq.c:972
fmin
double fmin(double, double)
rb_insns_name
const char * rb_insns_name(int i)
Definition: compile.c:8761
_types_fd_set
Definition: rb_mjit_min_header-2.7.0.h:1268
mjit_free_iseq
void mjit_free_iseq(const rb_iseq_t *iseq)
_fclose_r
int char char int int int int _fclose_r(struct _reent *, FILE *)
rb_execarg::envp_str
VALUE envp_str
Definition: internal.h:2032
_wcstoumax_r
uintmax_t _wcstoumax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int)
rb_objspace_garbage_object_p
int rb_objspace_garbage_object_p(VALUE obj)
Definition: gc.c:3605
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
idEqq
@ idEqq
Definition: rb_mjit_min_header-2.7.0.h:8569
rb_cArithSeq
VALUE rb_cArithSeq
Definition: enumerator.c:180
pthread_mutexattr_setpshared
int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int)
BOP_ASET
@ BOP_ASET
Definition: rb_mjit_min_header-2.7.0.h:9645
rb_control_frame_struct
Definition: vm_core.h:760
YARVINSN_trace_opt_and
@ YARVINSN_trace_opt_and
Definition: rb_mjit_min_header-2.7.0.h:12154
_fdopen_r
FILE * _fdopen_r(struct _reent *, int, const char *)
siginfo_t::si_addr
void * si_addr
Definition: rb_mjit_min_header-2.7.0.h:2142
rb_struct_getmember
VALUE rb_struct_getmember(VALUE, ID)
Definition: struct.c:211
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:2370
rb_last_status_get
VALUE rb_last_status_get(void)
Definition: process.c:518
rb_sym_intern_ascii
VALUE rb_sym_intern_ascii(const char *ptr, long len)
Definition: symbol.c:1032
rb_num2int
long rb_num2int(VALUE val)
Definition: numeric.c:2997
pthread_mutex_t
struct __pthread_mutex_t * pthread_mutex_t
rb_newobj_of
VALUE rb_newobj_of(VALUE klass, VALUE flags)
Definition: gc.c:2294
lgamma
double lgamma(double)
_reent::_sig_func
void _sig_func(int)
ruby_api_version
const int ruby_api_version[]
Definition: iseq.h:15
rb_hash_end
#define rb_hash_end(h)
Definition: rb_mjit_min_header-2.7.0.h:6094
rb_gvar_setter_function_of
rb_gvar_setter_t * rb_gvar_setter_function_of(const struct rb_global_entry *)
Definition: variable.c:708
RUBY_T_MATCH
@ RUBY_T_MATCH
Definition: rb_mjit_min_header-2.7.0.h:4339
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
rb_iseq_ibf_load
const rb_iseq_t * rb_iseq_ibf_load(VALUE str)
Definition: compile.c:11602
rb_async_bug_errno
void rb_async_bug_errno(const char *mesg, int errno_arg)
Definition: error.c:688
NODE_SUPER
@ NODE_SUPER
Definition: rb_mjit_min_header-2.7.0.h:8123
_atoi_r
int _atoi_r(struct _reent *, const char *__nptr)
rb_define_method
void rb_define_method(VALUE, const char *, VALUE(*)(), int)
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
VM_METHOD_TYPE_IVAR
@ VM_METHOD_TYPE_IVAR
Definition: rb_mjit_min_header-2.7.0.h:8831
rb_check_frozen
#define rb_check_frozen(obj)
Definition: rb_mjit_min_header-2.7.0.h:5688
rb_gvar_val_getter
rb_gvar_getter_t rb_gvar_val_getter
Definition: rb_mjit_min_header-2.7.0.h:5102
idQuo
@ idQuo
Definition: rb_mjit_min_header-2.7.0.h:8737
idIFUNC
@ idIFUNC
Definition: rb_mjit_min_header-2.7.0.h:8590
rb_at_exit_list
Definition: vm_core.h:555
__tm::__tm_sec
int __tm_sec
Definition: rb_mjit_min_header-2.7.0.h:949
rb_mod_included_modules
VALUE rb_mod_included_modules(VALUE)
Definition: class.c:1031
rb_unnamed_parameters
VALUE rb_unnamed_parameters(int arity)
Definition: proc.c:1262
lindex_t
unsigned long lindex_t
Definition: vm_exec.h:16
stat::st_ino
ino_t st_ino
Definition: rb_mjit_min_header-2.7.0.h:2387
rb_execution_context_struct::method_missing_reason
enum method_missing_reason method_missing_reason
Definition: rb_mjit_min_header-2.7.0.h:9869
idAnd
@ idAnd
Definition: rb_mjit_min_header-2.7.0.h:8572
ldexpl
long double ldexpl(long double, int)
ruby_special_exceptions
ruby_special_exceptions
Definition: vm_core.h:506
pthread_setconcurrency
int pthread_setconcurrency(int)
__ssp_real_readlink
ssize_t __ssp_real_readlink(const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__("" "readlink")
rb_mutex_struct
Definition: thread_sync.c:44
rb_iseq_constant_body::block_start
int block_start
Definition: vm_core.h:372
RUBY_TAG_FATAL
@ RUBY_TAG_FATAL
Definition: rb_mjit_min_header-2.7.0.h:9431
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__
rb_syserr_new_str
VALUE rb_syserr_new_str(int n, VALUE arg)
Definition: error.c:2775
max_align_t
Definition: rb_mjit_min_header-2.7.0.h:828
YARVINSN_opt_not
@ YARVINSN_opt_not
Definition: rb_mjit_min_header-2.7.0.h:12061
ruby_set_argv
void ruby_set_argv(int, char **)
Definition: ruby.c:2366
vsprintf
#define vsprintf(str, fmt, ap)
Definition: rb_mjit_min_header-2.7.0.h:1887
RUBY_ID_CONST
@ RUBY_ID_CONST
Definition: rb_mjit_min_header-2.7.0.h:8499
rb_reserved_word
const struct kwtable * rb_reserved_word(const char *, unsigned int)
Definition: ripper.c:19218
YARVINSN_tostring
@ YARVINSN_tostring
Definition: rb_mjit_min_header-2.7.0.h:11992
RB_DEBUG_COUNTER_gc_major_nofree
@ RB_DEBUG_COUNTER_gc_major_nofree
Definition: rb_mjit_min_header-2.7.0.h:11598
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
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
rb_reg_init_str
VALUE rb_reg_init_str(VALUE re, VALUE s, int options)
Definition: re.c:2900
n_opt
const VALUE int int n_opt
Definition: rb_mjit_min_header-2.7.0.h:6462
isinf
#define isinf(__x)
Definition: rb_mjit_min_header-2.7.0.h:3673
_reent::_p5s
struct _Bigint * _p5s
Definition: rb_mjit_min_header-2.7.0.h:1072
RUBY_ID_INTERNAL
@ RUBY_ID_INTERNAL
Definition: rb_mjit_min_header-2.7.0.h:8502
rb_iv_tbl_copy
void rb_iv_tbl_copy(VALUE dst, VALUE src)
Definition: variable.c:3332
rb_str_inspect
VALUE rb_str_inspect(VALUE)
Definition: string.c:5930
_strtoimax_r
intmax_t _strtoimax_r(struct _reent *, const char *__restrict, char **__restrict, int)
rb_iseq_constant_body::iseq_insn_info::body
const struct iseq_insn_info_entry * body
Definition: vm_core.h:403
rb_thread_struct::root_fiber
rb_fiber_t * root_fiber
Definition: vm_core.h:985
rb_execarg_parent_start
void rb_execarg_parent_start(VALUE execarg_obj)
Definition: process.c:2816
pthread_attr_getscope
int pthread_attr_getscope(const pthread_attr_t *, int *)
RB_DEBUG_COUNTER_obj_hash_3
@ RB_DEBUG_COUNTER_obj_hash_3
Definition: rb_mjit_min_header-2.7.0.h:11631
tTOKEN_LOCAL_END
@ tTOKEN_LOCAL_END
Definition: rb_mjit_min_header-2.7.0.h:8669
idUScore
@ idUScore
Definition: rb_mjit_min_header-2.7.0.h:8740
mkdir
int mkdir(const char *_path, mode_t __mode)
__tzinfo_type
struct __tzinfo_struct __tzinfo_type
rb_fiber_alive_p
VALUE rb_fiber_alive_p(VALUE)
Definition: cont.c:2137
rb_iseq_mark_insn_storage
void rb_iseq_mark_insn_storage(struct iseq_compile_data_storage *arena)
Definition: compile.c:9197
RString
Definition: ruby.h:988
RArray::len
long len
Definition: ruby.h:1052
YARVINSN_trace_getlocal_WC_0
@ YARVINSN_trace_getlocal_WC_0
Definition: rb_mjit_min_header-2.7.0.h:12170
sbrk
void * sbrk(ptrdiff_t __incr)
imaxdiv_t::rem
intmax_t rem
Definition: rb_mjit_min_header-2.7.0.h:3188
tTo_hash
@ tTo_hash
Definition: rb_mjit_min_header-2.7.0.h:8636
ruby_debug_print_id
ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id)
Definition: debug.c:115
RB_DEBUG_COUNTER_theap_evacuate
@ RB_DEBUG_COUNTER_theap_evacuate
Definition: rb_mjit_min_header-2.7.0.h:11681
rb_eEWOULDBLOCK
VALUE rb_eEWOULDBLOCK
Definition: error.c:55
siginfo_t::si_sigval
sigval_t si_sigval
Definition: rb_mjit_min_header-2.7.0.h:2127
rb_nativethread_id_t
pthread_t rb_nativethread_id_t
Definition: rb_mjit_min_header-2.7.0.h:9343
pthread_getattr_np
int pthread_getattr_np(pthread_t, pthread_attr_t *)
getcwd
char * getcwd(char *__buf, size_t __size)
rb_usascii_str_new_cstr
#define rb_usascii_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6121
RB_DEBUG_COUNTER_ccf_iseq_setup_0start
@ RB_DEBUG_COUNTER_ccf_iseq_setup_0start
Definition: rb_mjit_min_header-2.7.0.h:11544
rb_vm_struct::builtin_inline_index
int builtin_inline_index
Definition: vm_core.h:659
rb_attr_get
VALUE rb_attr_get(VALUE, ID)
Definition: variable.c:1084
rb_to_int
VALUE rb_to_int(VALUE)
Converts val into Integer.
Definition: object.c:3021
iseq_inline_cache_entry::ic_cref
const rb_cref_t * ic_cref
Definition: vm_core.h:222
floor
double floor(double)
rb_vm_struct::builtin_function_table
const struct rb_builtin_function * builtin_function_table
Definition: vm_core.h:658
rb_big_cmp
VALUE rb_big_cmp(VALUE, VALUE)
Definition: bignum.c:5419
pthread_rwlock_init
int pthread_rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr)
rb_st_init_strcasetable_with_size
st_table * rb_st_init_strcasetable_with_size(st_index_t)
chmod
int chmod(const char *__path, mode_t __mode)
tMethod_added
@ tMethod_added
Definition: rb_mjit_min_header-2.7.0.h:8612
__sFILE64
Definition: rb_mjit_min_header-2.7.0.h:1008
YARVINSN_trace_putspecialobject
@ YARVINSN_trace_putspecialobject
Definition: rb_mjit_min_header-2.7.0.h:12092
YARVINSN_opt_call_c_function
@ YARVINSN_opt_call_c_function
Definition: rb_mjit_min_header-2.7.0.h:12063
_reent::_mblen_state
_mbstate_t _mblen_state
Definition: rb_mjit_min_header-2.7.0.h:1087
_jrand48_r
long _jrand48_r(struct _reent *, unsigned short[3])
RClass::ptr
rb_classext_t * ptr
Definition: internal.h:1051
pow
double pow(double, double)
rb_classext_struct::allocator
rb_alloc_func_t allocator
Definition: internal.h:1041
getdtablesize
int getdtablesize(void)
gen_ivtbl::numiv
uint32_t numiv
Definition: variable.h:5
rb_iseq_init_trace
void rb_iseq_init_trace(rb_iseq_t *iseq)
Definition: iseq.c:623
sigaltstack
int sigaltstack(const stack_t *__restrict, stack_t *__restrict)
cmp_opt_data
Definition: internal.h:1322
rb_block_param_proxy
VALUE rb_block_param_proxy
Definition: vm.c:368
rb_ivar_lookup
VALUE rb_ivar_lookup(VALUE obj, ID id, VALUE undef)
Definition: variable.c:1035
YARVINSN_trace_pop
@ YARVINSN_trace_pop
Definition: rb_mjit_min_header-2.7.0.h:12108
ruby_debug_print_node
NODE * ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node)
Definition: debug.c:125
RB_DEBUG_COUNTER_obj_bignum_embed
@ RB_DEBUG_COUNTER_obj_bignum_embed
Definition: rb_mjit_min_header-2.7.0.h:11655
_reent::_cvtbuf
char * _cvtbuf
Definition: rb_mjit_min_header-2.7.0.h:1075
RARRAY_EMBED_LEN_MAX
#define RARRAY_EMBED_LEN_MAX
rb_vm_struct::cmd
VALUE cmd[RUBY_NSIG]
Definition: vm_core.h:626
__int_least8_t
signed char __int_least8_t
Definition: rb_mjit_min_header-2.7.0.h:632
NODE_POSTEXE
@ NODE_POSTEXE
Definition: rb_mjit_min_header-2.7.0.h:8179
Init_vm_objects
void Init_vm_objects(void)
Definition: vm.c:3324
rb_block_call_func_t
rb_block_call_func * rb_block_call_func_t
Definition: rb_mjit_min_header-2.7.0.h:5215
YARVINSN_trace_duparray
@ YARVINSN_trace_duparray
Definition: rb_mjit_min_header-2.7.0.h:12101
pthread_cond_timedwait
int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *, const struct timespec *)
YARVINSN_opt_neq
@ YARVINSN_opt_neq
Definition: rb_mjit_min_header-2.7.0.h:12045
_Exit
void _Exit(int __status) __attribute__((__noreturn__))
VM_FRAME_MAGIC_METHOD
@ VM_FRAME_MAGIC_METHOD
Definition: rb_mjit_min_header-2.7.0.h:10057
ruby_thread_has_gvl_p
int ruby_thread_has_gvl_p(void)
Definition: thread.c:1705
rb_ary_aref1
VALUE rb_ary_aref1(VALUE ary, VALUE i)
Definition: array.c:1595
rb_frozen_error_raise
void rb_frozen_error_raise(VALUE frozen_obj, const char *fmt,...)
Definition: error.c:2980
rb_parser_compile_string
rb_ast_t * rb_parser_compile_string(VALUE, const char *, VALUE, int)
Definition: ripper.c:12891
rb_f_kill
VALUE rb_f_kill(int, const VALUE *)
Definition: signal.c:418
size
unsigned int size
Definition: rb_mjit_min_header-2.7.0.h:10827
rb_flt_rationalize_with_prec
VALUE rb_flt_rationalize_with_prec(VALUE, VALUE)
Definition: rational.c:2226
VM_METHOD_TYPE_BMETHOD
@ VM_METHOD_TYPE_BMETHOD
Definition: rb_mjit_min_header-2.7.0.h:8832
__isnanf
int __isnanf(float x)
YARVINSN_opt_ltlt
@ YARVINSN_opt_ltlt
Definition: rb_mjit_min_header-2.7.0.h:12050
u_register_t
__uintptr_t u_register_t
Definition: rb_mjit_min_header-2.7.0.h:1286
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_iseq_constant_body::flags
struct rb_iseq_constant_body::@178::@180 flags
_fputc_r
int _fputc_r(struct _reent *, int, FILE *)
args_info::kw_arg
const struct rb_call_info_kw_arg * kw_arg
Definition: vm_args.c:30
tSend
@ tSend
Definition: rb_mjit_min_header-2.7.0.h:8625
__ssp_real_readlinkat
ssize_t __ssp_real_readlinkat(int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __len) __asm__("" "readlinkat")
atan2l
long double atan2l(long double, long double)
list
struct rb_encoding_entry * list
Definition: encoding.c:56
rb_class2name
const char * rb_class2name(VALUE)
Definition: variable.c:280
rmdir
int rmdir(const char *__path)
NOT_ADDED_JIT_ISEQ_FUNC
@ NOT_ADDED_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.0.h:11719
imemo_type
imemo_type
Definition: rb_mjit_min_header-2.7.0.h:7047
rb_check_to_int
VALUE rb_check_to_int(VALUE)
Tries to convert val into Integer.
Definition: object.c:3036
rb_objspace_free
void rb_objspace_free(struct rb_objspace *)
Definition: gc.c:1600
__tzrule_struct::offset
long offset
Definition: rb_mjit_min_header-2.7.0.h:1983
rb_feature_provided
int rb_feature_provided(const char *, const char **)
Definition: load.c:519
rb_atomic_t
unsigned int rb_atomic_t
Definition: rb_mjit_min_header-2.7.0.h:8928
args_info::rest_index
int rest_index
Definition: vm_args.c:28
YARVINSN_opt_regexpmatch2
@ YARVINSN_opt_regexpmatch2
Definition: rb_mjit_min_header-2.7.0.h:12062
LAST_JIT_ISEQ_FUNC
@ LAST_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.0.h:11722
RB_DEBUG_COUNTER_obj_str_ptr
@ RB_DEBUG_COUNTER_obj_str_ptr
Definition: rb_mjit_min_header-2.7.0.h:11616
srand
void srand(unsigned __seed)
rb_ast_struct::flags
VALUE flags
Definition: node.h:400
mbstowcs
size_t mbstowcs(wchar_t *__restrict, const char *__restrict, size_t)
RHash::as
union RHash::@105 as
RB_DEBUG_COUNTER_mjit_cancel
@ RB_DEBUG_COUNTER_mjit_cancel
Definition: rb_mjit_min_header-2.7.0.h:11692
VM_FRAME_MAGIC_EVAL
@ VM_FRAME_MAGIC_EVAL
Definition: rb_mjit_min_header-2.7.0.h:10063
_vdprintf_r
int char char int int int _vdprintf_r(struct _reent *, int, const char *__restrict, __gnuc_va_list) __attribute__((__format__(__printf__
__tm::__tm_hour
int __tm_hour
Definition: rb_mjit_min_header-2.7.0.h:951
rb_iter_break
void rb_iter_break(void)
Definition: vm.c:1546
getpass
char * getpass(const char *__prompt)
ruby_num_rounding_mode
ruby_num_rounding_mode
Definition: internal.h:1782
rb_file_expand_path_fast
VALUE rb_file_expand_path_fast(VALUE, VALUE)
Definition: file.c:4025
YARVINSN_trace_putnil
@ YARVINSN_trace_putnil
Definition: rb_mjit_min_header-2.7.0.h:12089
RBasicRaw::flags
VALUE flags
Definition: internal.h:1977
rb_yield_refine_block
VALUE rb_yield_refine_block(VALUE refinement, VALUE refinements)
Definition: vm_eval.c:1883
rb_gc_register_address
void rb_gc_register_address(VALUE *)
Definition: gc.c:7077
RHash::basic
struct RBasic basic
Definition: internal.h:888
_flock_t
_LOCK_T _flock_t
Definition: rb_mjit_min_header-2.7.0.h:921
rb_str_succ
VALUE rb_str_succ(VALUE)
Definition: string.c:4090
rb_thread_atfork
void rb_thread_atfork(void)
Definition: thread.c:4548
RBignum::heap
struct RBignum::@103::@104 heap
pthread_getspecific
void * pthread_getspecific(pthread_key_t)
rb_str_plus
VALUE rb_str_plus(VALUE, VALUE)
Definition: string.c:1894
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
RB_WARN_CATEGORY_NONE
@ RB_WARN_CATEGORY_NONE
Definition: rb_mjit_min_header-2.7.0.h:7313
rb_str_tmp_new
VALUE rb_str_tmp_new(long)
Definition: string.c:1343
stat::st_mode
mode_t st_mode
Definition: rb_mjit_min_header-2.7.0.h:2388
RB_DEBUG_COUNTER_MAX
@ RB_DEBUG_COUNTER_MAX
Definition: rb_mjit_min_header-2.7.0.h:11702
rb_execarg::use_shell
unsigned use_shell
Definition: internal.h:2035
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_str_new_cstr
#define rb_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6117
__sFILE64::_data
struct _reent * _data
Definition: rb_mjit_min_header-2.7.0.h:1016
rb_hash_rehash
VALUE rb_hash_rehash(VALUE hash)
Definition: hash.c:1885
imaxdiv_t
Definition: rb_mjit_min_header-2.7.0.h:3186
rb_vm_struct::thread_abort_on_exception
unsigned int thread_abort_on_exception
Definition: vm_core.h:603
ruby_error_sysstack
@ ruby_error_sysstack
Definition: rb_mjit_min_header-2.7.0.h:9628
RB_DEBUG_COUNTER_obj_obj_transient
@ RB_DEBUG_COUNTER_obj_obj_transient
Definition: rb_mjit_min_header-2.7.0.h:11614
RUBY_T_DATA
@ RUBY_T_DATA
Definition: rb_mjit_min_header-2.7.0.h:4338
YARVINSN_trace_opt_aset
@ YARVINSN_trace_opt_aset
Definition: rb_mjit_min_header-2.7.0.h:12157
RB_DEBUG_COUNTER_ccf_iseq_kw1
@ RB_DEBUG_COUNTER_ccf_iseq_kw1
Definition: rb_mjit_min_header-2.7.0.h:11548
rb_sym_to_proc
VALUE rb_sym_to_proc(VALUE sym)
Definition: proc.c:1312
_pthread_cleanup_handler::next
struct _pthread_cleanup_handler * next
Definition: rb_mjit_min_header-2.7.0.h:9247
iseq_catch_table_entry::type
enum iseq_catch_table_entry::catch_type type
rb_big_mul_balance
VALUE rb_big_mul_balance(VALUE x, VALUE y)
Definition: bignum.c:1689
rb_thread_kill
VALUE rb_thread_kill(VALUE)
Definition: thread.c:2446
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.0.h:954
rb_error_arity
MJIT_STATIC void rb_error_arity(int argc, int min, int max)
Definition: vm_insnhelper.c:387
tanhf
float tanhf(float)
rb_ary_reverse
VALUE rb_ary_reverse(VALUE)
Definition: array.c:2544
j1f
float j1f(float)
rb_invalid_str
void rb_invalid_str(const char *str, const char *type)
Definition: error.c:1865
_mbtowc_r
int _mbtowc_r(struct _reent *, wchar_t *__restrict, const char *__restrict, size_t, _mbstate_t *)
rb_str_replace
VALUE rb_str_replace(VALUE, VALUE)
Definition: string.c:5363
rb_define_variable
void rb_define_variable(const char *, VALUE *)
Definition: variable.c:499
imemo_env
@ imemo_env
Definition: rb_mjit_min_header-2.7.0.h:7048
ruby_init_loadpath
void ruby_init_loadpath(void)
Definition: ruby.c:582
log1pl
long double log1pl(long double)
hypotf
float hypotf(float, float)
YARVINSN_opt_div
@ YARVINSN_opt_div
Definition: rb_mjit_min_header-2.7.0.h:12042
getpid
pid_t getpid(void)
rb_iseq_location_struct::pathobj
VALUE pathobj
Definition: vm_core.h:273
builtin_binary
Definition: builtin.h:72
rb_cEncoding
VALUE rb_cEncoding
Definition: encoding.c:46
rb_str_substr
VALUE rb_str_substr(VALUE, long, long)
Definition: string.c:2584
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:2909
rb_vm_get_insns_address_table
const void ** rb_vm_get_insns_address_table(void)
Definition: vm_exec.c:126
ferror_unlocked
#define ferror_unlocked(p)
Definition: rb_mjit_min_header-2.7.0.h:1833
RArray
Definition: ruby.h:1048
rb_env_path_tainted
int rb_env_path_tainted(void)
Definition: hash.c:4829
local_var_list::tbl
VALUE tbl
Definition: vm_eval.c:26
ruby_dtrace_method_hook_args
Definition: probes_helper.h:6
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.0.h:9487
rb_method_refined_struct
Definition: method.h:146
rb_cCont
VALUE rb_cCont
Definition: ruby.h:2017
_seed48_r
unsigned short * _seed48_r(struct _reent *, unsigned short[3])
rb_trace_arg_struct::self
VALUE self
Definition: vm_core.h:1878
floorf
float floorf(float)
RB_DEBUG_COUNTER_mc_inline_miss
@ RB_DEBUG_COUNTER_mc_inline_miss
Definition: rb_mjit_min_header-2.7.0.h:11528
rb_maygvl_fd_fix_cloexec
void rb_maygvl_fd_fix_cloexec(int fd)
Definition: io.c:245
ruby_snprintf
int ruby_snprintf(char *str, size_t n, char const *fmt,...) __attribute__((format(printf
rb_big2long
long rb_big2long(VALUE)
Definition: bignum.c:5140
RArray::capa
long capa
Definition: ruby.h:1054
__clockid_t
unsigned long __clockid_t
Definition: rb_mjit_min_header-2.7.0.h:928
calling
rb_control_frame_t struct rb_calling_info * calling
Definition: rb_mjit_min_header-2.7.0.h:14544
rb_obj_dup
VALUE rb_obj_dup(VALUE)
Equivalent to Object#dup in Ruby.
Definition: object.c:420
rb_args_info::post_args_num
int post_args_num
Definition: node.h:436
fchdir
int fchdir(int __fildes)
RB_DEBUG_COUNTER_mc_miss_by_distinct
@ RB_DEBUG_COUNTER_mc_miss_by_distinct
Definition: rb_mjit_min_header-2.7.0.h:11537
frexp
double frexp(double, int *)
rb_big_idiv
VALUE rb_big_idiv(VALUE, VALUE)
Definition: bignum.c:6097
__tm::__tm_mon
int __tm_mon
Definition: rb_mjit_min_header-2.7.0.h:953
rb_data_object_zalloc
VALUE rb_data_object_zalloc(VALUE, size_t, RUBY_DATA_FUNC, RUBY_DATA_FUNC)
fopencookie
FILE * fopencookie(void *__cookie, const char *__mode, cookie_io_functions_t __functions)
pthread_equal
int pthread_equal(pthread_t, pthread_t)
rb_ast_free
void rb_ast_free(rb_ast_t *)
Definition: node.c:1354
__pthread_attr_t
Definition: rb_mjit_min_header-2.7.0.h:1348
YARVINSN_trace_opt_eq
@ YARVINSN_trace_opt_eq
Definition: rb_mjit_min_header-2.7.0.h:12147
rb_big_mul_karatsuba
VALUE rb_big_mul_karatsuba(VALUE x, VALUE y)
Definition: bignum.c:1870
rb_fd_copy
void rb_fd_copy(rb_fdset_t *, const _types_fd_set *, int)
rb_obj_trust
VALUE rb_obj_trust(VALUE)
call-seq: obj.trust -> obj
Definition: object.c:1057
_fopencookie_r
FILE * _fopencookie_r(struct _reent *, void *__cookie, const char *__mode, cookie_io_functions_t __functions)
rb_struct_s_keyword_init
VALUE rb_struct_s_keyword_init(VALUE klass)
Definition: struct.c:52
__blkcnt_t
__int64_t __blkcnt_t
Definition: rb_mjit_min_header-2.7.0.h:842
YARVINSN_trace_setlocal_WC_1
@ YARVINSN_trace_setlocal_WC_1
Definition: rb_mjit_min_header-2.7.0.h:12173
rb_data_type_struct::dcompact
void(* dcompact)(void *)
Definition: ruby.h:1154
YARVINSN_trace_getglobal
@ YARVINSN_trace_getglobal
Definition: rb_mjit_min_header-2.7.0.h:12087
rb_vm_proc_local_ep
const VALUE * rb_vm_proc_local_ep(VALUE proc)
Definition: thread.c:653
rb_iseq_new_with_callback_callback_func::data
const void * data
Definition: vm_core.h:1022
me
const rb_callable_method_entry_t * me
Definition: rb_mjit_min_header-2.7.0.h:13226
rb_str_scrub
VALUE rb_str_scrub(VALUE, VALUE)
Definition: string.c:10248
tSingleton_method_undefined
@ tSingleton_method_undefined
Definition: rb_mjit_min_header-2.7.0.h:8617
iseq_compile_data_storage::size
unsigned int size
Definition: iseq.h:277
rb_eMathDomainError
VALUE rb_eMathDomainError
Definition: ruby.h:2088
RUBY_T_MODULE
@ RUBY_T_MODULE
Definition: rb_mjit_min_header-2.7.0.h:4329
pselect
int pselect(int __n, _types_fd_set *__readfds, _types_fd_set *__writefds, _types_fd_set *__exceptfds, const struct timespec *__timeout, const sigset_t *__set)
rb_extend_object
void rb_extend_object(VALUE, VALUE)
Extend the object with the module.
Definition: eval.c:1700
tNUMPARAM_7
@ tNUMPARAM_7
Definition: rb_mjit_min_header-2.7.0.h:8666
YARVINSN_trace_definemethod
@ YARVINSN_trace_definemethod
Definition: rb_mjit_min_header-2.7.0.h:12121
rb_execarg_addopt
int rb_execarg_addopt(VALUE execarg_obj, VALUE key, VALUE val)
Definition: process.c:2013
rb_id_attrset
ID rb_id_attrset(ID)
Definition: symbol.c:98
rb_reg_start_with_p
_Bool rb_reg_start_with_p(VALUE re, VALUE str)
Definition: re.c:1618
rb_execution_context_struct::stack_maxsize
size_t stack_maxsize
Definition: vm_core.h:889
rb_complex_minus
VALUE rb_complex_minus(VALUE x, VALUE y)
Definition: complex.c:812
futimens
int futimens(int, const struct timespec *)
rb_exec_recursive_paired_outer
VALUE rb_exec_recursive_paired_outer(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5110
call_status
int const VALUE VALUE int call_status
Definition: rb_mjit_min_header-2.7.0.h:15420
rb_complex_raw
VALUE rb_complex_raw(VALUE, VALUE)
Definition: complex.c:1521
RHash::ar_hint
union RHash::@106 ar_hint
ruby_set_script_name
void ruby_set_script_name(VALUE name)
Sets the current script name to this value.
Definition: ruby.c:2290
_perror_r
void _perror_r(struct _reent *, const char *)
rb_class_search_ancestor
VALUE rb_class_search_ancestor(VALUE klass, VALUE super)
Definition: object.c:713
YARVINSN_trace_getinstancevariable
@ YARVINSN_trace_getinstancevariable
Definition: rb_mjit_min_header-2.7.0.h:12081
rb_call_inits
void rb_call_inits(void)
Definition: inits.c:19
rb_vm_check_redefinition_by_prepend
void rb_vm_check_redefinition_by_prepend(VALUE klass)
Definition: vm.c:1631
__sFILE64::_offset
_off64_t _offset
Definition: rb_mjit_min_header-2.7.0.h:1033
RB_DEBUG_COUNTER_ccf_super_method
@ RB_DEBUG_COUNTER_ccf_super_method
Definition: rb_mjit_min_header-2.7.0.h:11559
__cygwin_lock_init
void __cygwin_lock_init(_LOCK_T *)
confstr
size_t confstr(int __name, char *__buf, size_t __len)
__sFILE64::_bf
struct __sbuf _bf
Definition: rb_mjit_min_header-2.7.0.h:1014
ptsname_r
int ptsname_r(int, char *, size_t)
mjit_options::on
char on
Definition: rb_mjit_min_header-2.7.0.h:11725
BOP_UMINUS
@ BOP_UMINUS
Definition: rb_mjit_min_header-2.7.0.h:9657
rb_hash_lookup
VALUE rb_hash_lookup(VALUE, VALUE)
Definition: hash.c:1990
rb_locale_str_new_cstr
#define rb_locale_str_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6124
rb_gc_mark_locations
void rb_gc_mark_locations(const VALUE *, const VALUE *)
Definition: gc.c:4699
rb_thread_struct::locking_mutex
VALUE locking_mutex
Definition: vm_core.h:958
rb_obj_memsize_of
size_t rb_obj_memsize_of(VALUE)
Definition: gc.c:3934
rb_iseq_path
VALUE rb_iseq_path(const rb_iseq_t *iseq)
Definition: iseq.c:1027
key
key
Definition: openssl_missing.h:181
rb_builtin_function::func_ptr
const void *const func_ptr
Definition: builtin.h:8
RStruct::as
union RStruct::@107 as
rb_fiber_resume
VALUE rb_fiber_resume(VALUE fib, int argc, const VALUE *argv)
Definition: cont.c:2102
iseq_catch_table_entry::CATCH_TYPE_BREAK
@ CATCH_TYPE_BREAK
Definition: iseq.h:230
rb_undef
void rb_undef(VALUE, ID)
Definition: vm_method.c:1200
rb_yield_values2
VALUE rb_yield_values2(int n, const VALUE *argv)
Definition: vm_eval.c:1271
rb_io_fptr_finalize_internal
void rb_io_fptr_finalize_internal(void *ptr)
Definition: io.c:4730
_strtod_r
double _strtod_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR)
_atol_r
long _atol_r(struct _reent *, const char *__nptr)
args_info::argv
VALUE * argv
Definition: vm_args.c:24
rb_execarg::close_others_given
unsigned close_others_given
Definition: internal.h:2040
feof
#define feof(p)
Definition: rb_mjit_min_header-2.7.0.h:1829
_on_exit_args::_fnargs
void * _fnargs[32]
Definition: rb_mjit_min_header-2.7.0.h:961
idTo_hash
@ idTo_hash
Definition: rb_mjit_min_header-2.7.0.h:8717
RString::basic
struct RBasic basic
Definition: ruby.h:989
_uc_fpxreg
Definition: rb_mjit_min_header-2.7.0.h:2007
acosh
double acosh(double)
Definition: acosh.c:36
rb_ary_set_len
void rb_ary_set_len(VALUE, long)
Definition: array.c:1932
pthread_mutex_getprioceiling
int pthread_mutex_getprioceiling(const pthread_mutex_t *, int *)
rb_str2inum
VALUE rb_str2inum(VALUE, int)
Definition: bignum.c:4544
uint_fast16_t
long unsigned int uint_fast16_t
Definition: rb_mjit_min_header-2.7.0.h:2925
_putchar_unlocked_r
int _putchar_unlocked_r(struct _reent *, int)
asinh
double asinh(double)
Definition: acosh.c:52
rb_mjit_recompile_iseq
void rb_mjit_recompile_iseq(const rb_iseq_t *iseq)
_sigcommune::_si_code
__uint32_t _si_code
Definition: rb_mjit_min_header-2.7.0.h:2097
pthread_tryjoin_np
int pthread_tryjoin_np(pthread_t, void **)
rb_trace_arg_struct::path
VALUE path
Definition: vm_core.h:1888
rb_str_quote_unprintable
VALUE rb_str_quote_unprintable(VALUE)
Definition: string.c:10714
rb_str_fill_terminator
char * rb_str_fill_terminator(VALUE str, const int termlen)
Definition: string.c:2306
rb_clear_constant_cache
void rb_clear_constant_cache(void)
Definition: vm_method.c:87
siginfo_t::si_tid
timer_t si_tid
Definition: rb_mjit_min_header-2.7.0.h:2132
_getenv_r
char * _getenv_r(struct _reent *, const char *__string)
vm_ifunc::flags
VALUE flags
Definition: internal.h:1216
rb_eLoadError
VALUE rb_eLoadError
Definition: error.c:939
__fpclassifyf
int __fpclassifyf(float x)
RB_DEBUG_COUNTER_obj_rational
@ RB_DEBUG_COUNTER_obj_rational
Definition: rb_mjit_min_header-2.7.0.h:11658
mjit_pause
VALUE mjit_pause(_Bool wait_p)
rb_fd_dup
void rb_fd_dup(rb_fdset_t *dst, const rb_fdset_t *src)
nice
int nice(int __nice_value)
NOT_READY_JIT_ISEQ_FUNC
@ NOT_READY_JIT_ISEQ_FUNC
Definition: rb_mjit_min_header-2.7.0.h:11720
rb_args_info::no_kwarg
unsigned int no_kwarg
Definition: node.h:447
_wcstoimax_r
intmax_t _wcstoimax_r(struct _reent *, const wchar_t *__restrict, wchar_t **__restrict, int)
FILE
__FILE FILE
Definition: rb_mjit_min_header-2.7.0.h:1441
rb_check_to_array
VALUE rb_check_to_array(VALUE ary)
Definition: array.c:915
rb_get_path_no_checksafe
VALUE rb_get_path_no_checksafe(VALUE)
Definition: file.c:224
rb_rational_mul
VALUE rb_rational_mul(VALUE self, VALUE other)
Definition: rational.c:874
tBACKREF
@ tBACKREF
Definition: rb_mjit_min_header-2.7.0.h:8674
idNUMPARAM_3
@ idNUMPARAM_3
Definition: rb_mjit_min_header-2.7.0.h:8743
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
FPE_FLTSUB
#define FPE_FLTSUB
Definition: rb_mjit_min_header-2.7.0.h:2203
rb_mjit_compile_info::disable_send_cache
_Bool disable_send_cache
Definition: rb_mjit_min_header-2.7.0.h:11737
rb_cThread
VALUE rb_cThread
Definition: ruby.h:2047
sigval
Definition: rb_mjit_min_header-2.7.0.h:2081
pthread_attr_setinheritsched
int pthread_attr_setinheritsched(pthread_attr_t *, int)
rb_execarg::umask_given
unsigned umask_given
Definition: internal.h:2037
rb_report_bug_valist
void rb_report_bug_valist(VALUE file, int line, const char *fmt, va_list args)
Definition: error.c:710
remquo
double remquo(double, double, int *)
_strdup_r
char * _strdup_r(struct _reent *, const char *)
RB_DEBUG_COUNTER_ccf_iseq_opt
@ RB_DEBUG_COUNTER_ccf_iseq_opt
Definition: rb_mjit_min_header-2.7.0.h:11547
rb_glob
void rb_glob(const char *, void(*)(const char *, VALUE, void *), VALUE)
Definition: dir.c:2544
SIGEV_SIGNAL
#define SIGEV_SIGNAL
Definition: rb_mjit_min_header-2.7.0.h:2221
rb_const_get_at
VALUE rb_const_get_at(VALUE, ID)
Definition: variable.c:2393
rb_big_eq
VALUE rb_big_eq(VALUE, VALUE)
Definition: bignum.c:5524
ruby_vm_global_constant_state
rb_serial_t ruby_vm_global_constant_state
Definition: vm.c:380
RB_DEBUG_COUNTER_obj_iclass_ptr
@ RB_DEBUG_COUNTER_obj_iclass_ptr
Definition: rb_mjit_min_header-2.7.0.h:11651
rb_global_variable
void rb_global_variable(VALUE *)
Definition: gc.c:7112
rb_typeddata_is_kind_of
int rb_typeddata_is_kind_of(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:872
rb_apply
VALUE rb_apply(VALUE, ID, VALUE)
Calls a method.
Definition: vm_eval.c:890
rb_mod_syserr_fail_str
void rb_mod_syserr_fail_str(VALUE mod, int e, VALUE mesg)
Definition: error.c:2857
__stpcpy_chk
char * __stpcpy_chk(char *, const char *, size_t)
strtol_l
long strtol_l(const char *__restrict, char **__restrict, int, locale_t)
id_core_hash_merge_kwd
@ id_core_hash_merge_kwd
Definition: rb_mjit_min_header-2.7.0.h:8599
RUBY_FL_FINALIZE
@ RUBY_FL_FINALIZE
Definition: ruby.h:846
rb_execarg::pgroup_pgid
pid_t pgroup_pgid
Definition: rb_mjit_min_header-2.7.0.h:7659
NODE_ARGS_AUX
@ NODE_ARGS_AUX
Definition: rb_mjit_min_header-2.7.0.h:8151
rb_complex_new
VALUE rb_complex_new(VALUE, VALUE)
Definition: complex.c:1527
rb_float_abs
VALUE rb_float_abs(VALUE flt)
Definition: numeric.c:1698
rb_frame_callee
ID rb_frame_callee(void)
The name of the current method.
Definition: eval.c:1199
RB_DEBUG_COUNTER_mc_miss_by_refine
@ RB_DEBUG_COUNTER_mc_miss_by_refine
Definition: rb_mjit_min_header-2.7.0.h:11538
__sFILE64::_lb
struct __sbuf _lb
Definition: rb_mjit_min_header-2.7.0.h:1030
YARVINSN_putobject
@ YARVINSN_putobject
Definition: rb_mjit_min_header-2.7.0.h:11988
rb_iseq_struct::local_hooks
struct rb_hook_list_struct * local_hooks
Definition: vm_core.h:471
FPE_FLTDIV
#define FPE_FLTDIV
Definition: rb_mjit_min_header-2.7.0.h:2198
uint_fast32_t
long unsigned int uint_fast32_t
Definition: rb_mjit_min_header-2.7.0.h:2928
tTo_str
@ tTo_str
Definition: rb_mjit_min_header-2.7.0.h:8634
siginfo_t::si_overrun
unsigned int si_overrun
Definition: rb_mjit_min_header-2.7.0.h:2133
RSTRING_FSTR
#define RSTRING_FSTR
rb_thread_struct::last_status
VALUE last_status
Definition: vm_core.h:917
_setjmp
int _setjmp(jmp_buf)
rb_f_global_variables
VALUE rb_f_global_variables(void)
Definition: variable.c:728
rb_mFileTest
VALUE rb_mFileTest
Definition: file.c:160
rb_equal_opt
VALUE rb_equal_opt(VALUE obj1, VALUE obj2)
Definition: rb_mjit_min_header-2.7.0.h:13438
timeval::tv_sec
time_t tv_sec
Definition: missing.h:54
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_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:3202
RHash
Definition: internal.h:887
_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__
__sFILE64::_flags2
int _flags2
Definition: rb_mjit_min_header-2.7.0.h:1032
rb_eNotImpError
VALUE rb_eNotImpError
Definition: error.c:932
linkat
int linkat(int __dirfd1, const char *__path1, int __dirfd2, const char *__path2, int __flags)
YARVINSN_newrange
@ YARVINSN_newrange
Definition: rb_mjit_min_header-2.7.0.h:12004
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
fchown
int fchown(int __fildes, uid_t __owner, gid_t __group)
__gnuc_va_list
__builtin_va_list __gnuc_va_list
Definition: rb_mjit_min_header-2.7.0.h:835
rb_backtrace_to_str_ary
VALUE rb_backtrace_to_str_ary(VALUE obj)
Definition: vm_backtrace.c:620
sigprocmask
int sigprocmask(int, const sigset_t *, sigset_t *)
nrand48
long nrand48(unsigned short[3])
args_info::argc
int argc
Definition: vm_args.c:25
rb_vm_tag
Definition: vm_core.h:799
tMethodMissing
@ tMethodMissing
Definition: rb_mjit_min_header-2.7.0.h:8611
ruby_fill_random_bytes
int ruby_fill_random_bytes(void *, size_t, int)
Definition: random.c:434
src
__inline__ const void *__restrict src
Definition: rb_mjit_min_header-2.7.0.h:2836
RB_DEBUG_COUNTER_artable_hint_hit
@ RB_DEBUG_COUNTER_artable_hint_hit
Definition: rb_mjit_min_header-2.7.0.h:11673
strcoll_l
int strcoll_l(const char *, const char *, locale_t)
ftello
off_t ftello(FILE *)
rb_compile_option_struct::inline_const_cache
unsigned int inline_const_cache
Definition: iseq.h:207
fmt
const VALUE int int int int int int VALUE char * fmt
Definition: rb_mjit_min_header-2.7.0.h:6462
rb_big2ulong
unsigned long rb_big2ulong(VALUE)
Definition: bignum.c:5125
rb_get_argv
VALUE rb_get_argv(void)
Definition: io.c:12889
rb_define_protected_method
void rb_define_protected_method(VALUE, const char *, VALUE(*)(), int)
sched_setparam
int sched_setparam(pid_t __pid, const struct sched_param *__param)
gid_t
__gid_t gid_t
Definition: rb_mjit_min_header-2.7.0.h:1323
rb_const_remove
VALUE rb_const_remove(VALUE, ID)
Definition: variable.c:2490
U
Definition: dtoa.c:290
rb_eNoMethodError
VALUE rb_eNoMethodError
Definition: error.c:930
_reent::_errno
int _errno
Definition: rb_mjit_min_header-2.7.0.h:1062
RHash::ar
struct ar_table_struct * ar
Definition: internal.h:891
GENTRY
VALUE GENTRY
Definition: rb_mjit_min_header-2.7.0.h:11942
rb_iseq_constant_body::iseq_unique_id
uintptr_t iseq_unique_id
Definition: vm_core.h:451
_fpstate::st
struct _uc_fpxreg st[8]
Definition: rb_mjit_min_header-2.7.0.h:2025
strcmp
int strcmp(const char *, const char *)
SIGEV_NONE
#define SIGEV_NONE
Definition: rb_mjit_min_header-2.7.0.h:2222
YARVINSN_putstring
@ YARVINSN_putstring
Definition: rb_mjit_min_header-2.7.0.h:11990
gets
#define gets(str)
Definition: rb_mjit_min_header-2.7.0.h:1890
sbintime_t
__int64_t sbintime_t
Definition: rb_mjit_min_header-2.7.0.h:1343
ruby_debug_counter_get
size_t ruby_debug_counter_get(const char **names_ptr, size_t *counters_ptr)
Definition: debug_counter.c:121
rb_num_zerodiv
void rb_num_zerodiv(void)
Definition: numeric.c:194
int_fast8_t
signed char int_fast8_t
Definition: rb_mjit_min_header-2.7.0.h:2921
setvbuf
int setvbuf(FILE *__restrict, char *__restrict, int, size_t)
f_block
const VALUE int int int int int int f_block
Definition: rb_mjit_min_header-2.7.0.h:6462
rb_rational_pow
VALUE rb_rational_pow(VALUE self, VALUE other)
Definition: rational.c:1002
rb_const_flag_t
rb_const_flag_t
Definition: rb_mjit_min_header-2.7.0.h:12180
setbuffer
void setbuffer(FILE *, char *, int)
rb_integer_float_cmp
VALUE rb_integer_float_cmp(VALUE x, VALUE y)
Definition: bignum.c:5325
tEach
@ tEach
Definition: rb_mjit_min_header-2.7.0.h:8622
rb_ivar_foreach
void rb_ivar_foreach(VALUE, int(*)(ID, VALUE, st_data_t), st_data_t)
YARVINSN_duphash
@ YARVINSN_duphash
Definition: rb_mjit_min_header-2.7.0.h:11999
rb_hash_set_ifnone
VALUE rb_hash_set_ifnone(VALUE hash, VALUE ifnone)
Definition: hash.c:99
expm1l
long double expm1l(long double)
_uc_fpxreg::exponent
__uint16_t exponent
Definition: rb_mjit_min_header-2.7.0.h:2009
rb_check_arity
#define rb_check_arity
Definition: rb_mjit_min_header-2.7.0.h:5704
RString::as
union RString::@94 as
rb_mjit_compile_info::disable_ivar_cache
_Bool disable_ivar_cache
Definition: rb_mjit_min_header-2.7.0.h:11736
block_handler_type_iseq
@ block_handler_type_iseq
Definition: rb_mjit_min_header-2.7.0.h:9776
bsearch
void * bsearch(const void *__key, const void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
rb_big_mul_normal
VALUE rb_big_mul_normal(VALUE x, VALUE y)
Definition: bignum.c:1561
RString::heap
struct RString::@94::@95 heap
clock_getcpuclockid
int clock_getcpuclockid(pid_t pid, clockid_t *clock_id)
rb_iseq_first_lineno
VALUE rb_iseq_first_lineno(const rb_iseq_t *iseq)
Definition: iseq.c:1057
fiprintf
int int int int int int int int char char int int fiprintf(FILE *, const char *,...) __attribute__((__format__(__printf__
YARVINSN_opt_empty_p
@ YARVINSN_opt_empty_p
Definition: rb_mjit_min_header-2.7.0.h:12059
pthread_testcancel
void pthread_testcancel(void)
fgetc_unlocked
int fgetc_unlocked(FILE *)
__sFILE::_bf
struct __sbuf _bf
Definition: vsnprintf.c:177
_reent::_unspecified_locale_info
int _unspecified_locale_info
Definition: rb_mjit_min_header-2.7.0.h:1066
rb_class_new
VALUE rb_class_new(VALUE)
Creates a new class.
Definition: class.c:241
rb_thread_struct::name
VALUE name
Definition: vm_core.h:989
sigpause
int sigpause(int) __asm__("" "__xpg_sigpause")
rb_cref_struct::klass
VALUE klass
Definition: method.h:44
strspn
size_t strspn(const char *, const char *)
rb_home_dir_of
VALUE rb_home_dir_of(VALUE user, VALUE result)
Definition: file.c:3536
tTOKEN_GLOBAL_BEGIN
@ tTOKEN_GLOBAL_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8672
rb_gvar_defined
VALUE rb_gvar_defined(struct rb_global_entry *)
Definition: variable.c:695
pthread_getconcurrency
int pthread_getconcurrency(void)
exp2l
long double exp2l(long double)
rb_io_wait_readwrite
rb_io_wait_readwrite
Definition: ruby.h:1929
rb_vm_frame_method_entry
const MJIT_STATIC rb_callable_method_entry_t * rb_vm_frame_method_entry(const rb_control_frame_t *cfp)
Definition: rb_mjit_min_header-2.7.0.h:12521
YARVINSN_opt_invokebuiltin_delegate
@ YARVINSN_opt_invokebuiltin_delegate
Definition: rb_mjit_min_header-2.7.0.h:12065
NODE_RETURN
@ NODE_RETURN
Definition: rb_mjit_min_header-2.7.0.h:8129
cos
double cos(double)
pthread_condattr_t
struct __pthread_condattr_t * pthread_condattr_t
YARVINSN_trace_putobject_INT2FIX_1_
@ YARVINSN_trace_putobject_INT2FIX_1_
Definition: rb_mjit_min_header-2.7.0.h:12175
RB_DEBUG_COUNTER_heap_xmalloc
@ RB_DEBUG_COUNTER_heap_xmalloc
Definition: rb_mjit_min_header-2.7.0.h:11676
RMoved
Definition: internal.h:908
RB_DEBUG_COUNTER_ivar_set_ic_miss
@ RB_DEBUG_COUNTER_ivar_set_ic_miss
Definition: rb_mjit_min_header-2.7.0.h:11580
rb_pipe
int rb_pipe(int *pipes)
Definition: io.c:6369
_tzset_r
void _tzset_r(struct _reent *)
rb_locale_str_new
VALUE rb_locale_str_new(const char *, long)
Definition: string.c:1099
setpgrp
int setpgrp(void)
mkostemps
int mkostemps(char *, int, int)
id_core_set_postexe
@ id_core_set_postexe
Definition: rb_mjit_min_header-2.7.0.h:8597
rb_event_flag_t
uint32_t rb_event_flag_t
Definition: rb_mjit_min_header-2.7.0.h:6327
rb_check_array_type
VALUE rb_check_array_type(VALUE)
Definition: array.c:909
rb_thread_struct::vm
rb_vm_t * vm
Definition: vm_core.h:913
euidaccess
int euidaccess(const char *__path, int __mode)
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.0.h:11684
dremf
float dremf(float, float)
finite
int finite(double)
Definition: finite.c:6
tInspect
@ tInspect
Definition: rb_mjit_min_header-2.7.0.h:8607
renameat2
int renameat2(int, const char *, int, const char *, unsigned int)
llabs
long long llabs(long long)
YARVINSN_trace_opt_mult
@ YARVINSN_trace_opt_mult
Definition: rb_mjit_min_header-2.7.0.h:12144
iseq_label_data
Definition: compile.c:62
idNULL
@ idNULL
Definition: rb_mjit_min_header-2.7.0.h:8585
_reent::_mbsrtowcs_state
_mbstate_t _mbsrtowcs_state
Definition: rb_mjit_min_header-2.7.0.h:1095
tLAST_OP_ID
@ tLAST_OP_ID
Definition: rb_mjit_min_header-2.7.0.h:8758
rb_sys_warning
const char *void void void rb_sys_warning(const char *,...) __attribute__((format(printf
rb_compile_option_struct::debug_frozen_string_literal
unsigned int debug_frozen_string_literal
Definition: iseq.h:215
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.0.h:1351
rb_thread_struct::join_list
rb_thread_list_t * join_list
Definition: vm_core.h:961
rb_compile_option_struct::stack_caching
unsigned int stack_caching
Definition: iseq.h:213
rb_sym_intern_ascii_cstr
#define rb_sym_intern_ascii_cstr(ptr)
Definition: rb_mjit_min_header-2.7.0.h:7758
rb_thread_check_trap_pending
int rb_thread_check_trap_pending(void)
Definition: thread.c:1372
rb_external_str_new
VALUE rb_external_str_new(const char *, long)
Definition: string.c:1087
iseq_catch_table_entry::catch_type
catch_type
Definition: iseq.h:226
RB_DEBUG_COUNTER_frame_push_cfunc
@ RB_DEBUG_COUNTER_frame_push_cfunc
Definition: rb_mjit_min_header-2.7.0.h:11565
rb_thread_wakeup_timer_thread
void rb_thread_wakeup_timer_thread(int)
rb_method_alias_t
struct rb_method_alias_struct rb_method_alias_t
char
#define char
Definition: rb_mjit_min_header-2.7.0.h:2876
cuserid
char * cuserid(char *)
mjit_options::verbose
int verbose
Definition: rb_mjit_min_header-2.7.0.h:11732
DEFINED_FALSE
@ DEFINED_FALSE
Definition: rb_mjit_min_header-2.7.0.h:10892
iseq_compile_data
Definition: iseq.h:92
sscanf
int int int int int sscanf(const char *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
ruby_vm_const_missing_count
VALUE ruby_vm_const_missing_count
Definition: vm.c:371
rb_hook_list_remove_tracepoint
void rb_hook_list_remove_tracepoint(rb_hook_list_t *list, VALUE tpval)
Definition: vm_trace.c:1256
VM_FRAME_MAGIC_IFUNC
@ VM_FRAME_MAGIC_IFUNC
Definition: rb_mjit_min_header-2.7.0.h:10062
rb_gc_force_recycle
void rb_gc_force_recycle(VALUE)
Definition: gc.c:7011
ruby_set_debug_option
void ruby_set_debug_option(const char *str)
Definition: debug.c:226
VM_CALL_ARGS_SPLAT_bit
@ VM_CALL_ARGS_SPLAT_bit
Definition: rb_mjit_min_header-2.7.0.h:10005
RObject::iv_index_tbl
void * iv_index_tbl
Definition: ruby.h:928
rb_backtrace_each
void rb_backtrace_each(VALUE(*iter)(VALUE recv, VALUE str), VALUE output)
Definition: vm_backtrace.c:855
rb_vm_struct::mark_object_ary
VALUE mark_object_ary
Definition: vm_core.h:610
nearbyintf
float nearbyintf(float)
rb_method_type_t
rb_method_type_t
Definition: method.h:101
rb_fs
VALUE rb_fs
Definition: intern.h:583
rb_execution_context_struct::machine
struct rb_execution_context_struct::@188 machine
BOP_MOD
@ BOP_MOD
Definition: rb_mjit_min_header-2.7.0.h:9638
builtin_binary::feature
const char * feature
Definition: builtin.h:73
rb_eval_string
VALUE rb_eval_string(const char *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1713
rb_method_refined_struct::owner
VALUE owner
Definition: method.h:148
rb_sym2id
ID rb_sym2id(VALUE)
Definition: symbol.c:748
_fpstate::fop
__uint16_t fop
Definition: rb_mjit_min_header-2.7.0.h:2020
tInitialize_copy
@ tInitialize_copy
Definition: rb_mjit_min_header-2.7.0.h:8629
rb_vm_lvar_exposed
VALUE rb_vm_lvar_exposed(rb_execution_context_t *ec, int index)
Definition: rb_mjit_min_header-2.7.0.h:17141
__timer_t
unsigned long __timer_t
Definition: rb_mjit_min_header-2.7.0.h:930
rb_throw
void rb_throw(const char *tag, VALUE val)
Definition: vm_eval.c:2218
RUBY_FL_SINGLETON
@ RUBY_FL_SINGLETON
Definition: ruby.h:883
rb_cObject
VALUE rb_cObject
Object class.
Definition: ruby.h:2010
rb_path_check
int rb_path_check(const char *)
Definition: file.c:6168
rb_cloexec_open
int rb_cloexec_open(const char *pathname, int flags, mode_t mode)
Definition: io.c:292
rb_extract_keywords
VALUE rb_extract_keywords(VALUE *orighash)
Definition: class.c:1868
rb_event_flag_t
uint32_t rb_event_flag_t
Definition: ruby.h:2278
rb_fd_zero
void rb_fd_zero(rb_fdset_t *)
YARVINSN_trace_dup
@ YARVINSN_trace_dup
Definition: rb_mjit_min_header-2.7.0.h:12109
rb_execarg::rlimit_limits
VALUE rlimit_limits
Definition: internal.h:2051
_fpstate
Definition: rb_mjit_min_header-2.7.0.h:2015
YARVINSN_newhash
@ YARVINSN_newhash
Definition: rb_mjit_min_header-2.7.0.h:12003
canonicalize_file_name
char * canonicalize_file_name(const char *)
atoff
float atoff(const char *__nptr)
NODE_UNDEF
@ NODE_UNDEF
Definition: rb_mjit_min_header-2.7.0.h:8163
rb_alias_variable
void rb_alias_variable(ID, ID)
Definition: variable.c:756
RARRAY_EMBED_LEN_MASK
#define RARRAY_EMBED_LEN_MASK
rb_proc_alloc
VALUE rb_proc_alloc(VALUE klass)
Definition: proc.c:145
ruby_vm_class_serial
rb_serial_t ruby_vm_class_serial
Definition: vm.c:381
YARVINSN_trace_definesmethod
@ YARVINSN_trace_definesmethod
Definition: rb_mjit_min_header-2.7.0.h:12122
n
const char size_t n
Definition: rb_mjit_min_header-2.7.0.h:5456
pthread_detach
int pthread_detach(pthread_t)
RUBY_FL_PROMOTED1
@ RUBY_FL_PROMOTED1
Definition: ruby.h:844
rb_str_cat_cstr
#define rb_str_cat_cstr(str, ptr)
Definition: rb_mjit_min_header-2.7.0.h:6126
rb_math_cosh
VALUE rb_math_cosh(VALUE)
mjit_child_after_fork
void mjit_child_after_fork(void)
rb_hash_update_by
VALUE rb_hash_update_by(VALUE hash1, VALUE hash2, rb_hash_update_func *func)
Definition: hash.c:3835
NODE_ENSURE
@ NODE_ENSURE
Definition: rb_mjit_min_header-2.7.0.h:8102
rb_exc_raise
void rb_exc_raise(VALUE mesg)
Raises an exception in the current thread.
Definition: eval.c:667
_rename_r
int _rename_r(struct _reent *, const char *_old, const char *_new)
ffsl
int ffsl(long) __attribute__((__const__))
ruby_glob_func
int ruby_glob_func(const char *, VALUE, void *)
Definition: rb_mjit_min_header-2.7.0.h:5085
VM_SVAR_FLIPFLOP_START
@ VM_SVAR_FLIPFLOP_START
Definition: rb_mjit_min_header-2.7.0.h:10040
getw
int getw(FILE *)
rb_vm_check_optimizable_mid
int rb_vm_check_optimizable_mid(VALUE mid)
Definition: vm.c:1581
rb_mProcess
VALUE rb_mProcess
Definition: ruby.h:2005
rb_trace_arg_struct::id
ID id
Definition: vm_core.h:1879
pthread_kill
int pthread_kill(pthread_t, int)
CLD_TRAPPED
#define CLD_TRAPPED
Definition: rb_mjit_min_header-2.7.0.h:2212
rb_sym_all_symbols
VALUE rb_sym_all_symbols(void)
Definition: symbol.c:840
pthread_once_t::mutex
pthread_mutex_t mutex
Definition: rb_mjit_min_header-2.7.0.h:1356
strrchr
char * strrchr(const char *, int)
Definition: strchr.c:20
_fpstate::rdp
__uint64_t rdp
Definition: rb_mjit_min_header-2.7.0.h:2022
re_pattern_buffer
Definition: onigmo.h:755
rb_path_to_class
VALUE rb_path_to_class(VALUE)
Definition: variable.c:226
strupr
char * strupr(char *)
fopen
FILE * fopen(const char *__restrict _name, const char *__restrict _type)
iseq_compile_data_storage::pos
unsigned int pos
Definition: iseq.h:276
rb_iseq_remove_coverage_all
void rb_iseq_remove_coverage_all(void)
Definition: iseq.c:1110
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)
rb_funcall
#define rb_funcall(recv, mid, argc,...)
Definition: rb_mjit_min_header-2.7.0.h:6585
rb_warning
const char *void rb_warning(const char *,...) __attribute__((format(printf
cookie_io_functions_t::seek
cookie_seek_function_t * seek
Definition: rb_mjit_min_header-2.7.0.h:1795
rb_gvar_getter_t
VALUE rb_gvar_getter_t(ID id, VALUE *data)
Definition: rb_mjit_min_header-2.7.0.h:5096
rb_data_typed_object_wrap
VALUE rb_data_typed_object_wrap(VALUE klass, void *datap, const rb_data_type_t *type)
Definition: gc.c:2397
idMOD
@ idMOD
Definition: rb_mjit_min_header-2.7.0.h:8561
RB_DEBUG_COUNTER_ivar_get_ic_miss
@ RB_DEBUG_COUNTER_ivar_get_ic_miss
Definition: rb_mjit_min_header-2.7.0.h:11575
rb_objspace_each_objects
void rb_objspace_each_objects(int(*callback)(void *start, void *end, size_t stride, void *data), void *data)
rb_parser_load_file
void * rb_parser_load_file(VALUE parser, VALUE name)
Definition: ruby.c:2193
_reent::_freelist
struct _Bigint ** _freelist
Definition: rb_mjit_min_header-2.7.0.h:1073
ruby_node_name
const char * ruby_node_name(int node)
Definition: iseq.c:2534
local_var_list
Definition: vm_eval.c:14
iruserok
int iruserok(unsigned long raddr, int superuser, const char *ruser, const char *luser)
pthread_setcanceltype
int pthread_setcanceltype(int, int *)
rb_check_safe_obj
void rb_check_safe_obj(VALUE)
Definition: safe.c:136
rb_uint2big
VALUE rb_uint2big(uintptr_t n)
Definition: bignum.c:3158
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
pthread_spin_unlock
int pthread_spin_unlock(pthread_spinlock_t *)
execlp
int execlp(const char *__file, const char *,...)
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
atan2f
float atan2f(float, float)
log
double log(double)
_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__
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_vm_fstring_table
st_table * rb_vm_fstring_table(void)
Definition: vm.c:3390
fmax
double fmax(double, double)
YARVINSN_trace_setinstancevariable
@ YARVINSN_trace_setinstancevariable
Definition: rb_mjit_min_header-2.7.0.h:12082
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_classext_struct::callable_m_tbl
struct rb_id_table * callable_m_tbl
Definition: internal.h:1027
RStruct::len
long len
Definition: internal.h:946
_fgetpos_r
int _fgetpos_r(struct _reent *, FILE *, fpos_t *)
RUBY_TAG_NEXT
@ RUBY_TAG_NEXT
Definition: rb_mjit_min_header-2.7.0.h:9426
__gets_chk
int int int int char * __gets_chk(char *, size_t)
tanl
long double tanl(long double)
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:408
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.0.h:1093
pthread_barrierattr_setpshared
int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int)
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
_reent::_inc
int _inc
Definition: rb_mjit_min_header-2.7.0.h:1064
_vasprintf_r
int char char int _vasprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_method_cfunc_struct::argc
int argc
Definition: method.h:134
rb_bug
void rb_bug(const char *fmt,...)
Definition: error.c:634
rb_proc_dup
VALUE rb_proc_dup(VALUE self)
Definition: vm.c:920
NODE_CVASGN
@ NODE_CVASGN
Definition: rb_mjit_min_header-2.7.0.h:8112
dup3
int dup3(int __fildes, int __fildes2, int flags)
rb_control_frame_struct::self
VALUE self
Definition: vm_core.h:764
YARVINSN_opt_gt
@ YARVINSN_opt_gt
Definition: rb_mjit_min_header-2.7.0.h:12048
rb_method_iseq
const rb_iseq_t * rb_method_iseq(VALUE body)
Definition: proc.c:2679
rb_hash_values
VALUE rb_hash_values(VALUE hash)
Definition: hash.c:3381
rb_sym_interned_p
int rb_sym_interned_p(VALUE)
rb_st_delete
int rb_st_delete(st_table *, st_data_t *, st_data_t *)
_open_memstream_r
int int FILE * _open_memstream_r(struct _reent *, char **, size_t *)
rb_false
VALUE rb_false(VALUE obj)
Definition: object.c:1391
mempcpy
#define mempcpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2849
VM_CHECKMATCH_TYPE_CASE
@ VM_CHECKMATCH_TYPE_CASE
Definition: rb_mjit_min_header-2.7.0.h:9999
pthread_key_delete
int pthread_key_delete(pthread_key_t)
idRespond_to_missing
@ idRespond_to_missing
Definition: rb_mjit_min_header-2.7.0.h:8589
idTo_a
@ idTo_a
Definition: rb_mjit_min_header-2.7.0.h:8720
clearenv
int clearenv(void)
__sFILE::_r
int _r
Definition: rb_mjit_min_header-2.7.0.h:981
RHASH_LEV_SHIFT
@ RHASH_LEV_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:6867
idOROP
@ idOROP
Definition: rb_mjit_min_header-2.7.0.h:8581
rand_r
int rand_r(unsigned *__seed)
rb_ensure_entry::e_proc
VALUE(* e_proc)(VALUE)
Definition: vm_core.h:830
psiginfo
void psiginfo(const siginfo_t *, const char *)
RB_DEBUG_COUNTER_obj_wb_unprotect
@ RB_DEBUG_COUNTER_obj_wb_unprotect
Definition: rb_mjit_min_header-2.7.0.h:11612
rb_int_odd_p
VALUE rb_int_odd_p(VALUE num)
Definition: numeric.c:3222
RB_DEBUG_COUNTER_gc_major_oldmalloc
@ RB_DEBUG_COUNTER_gc_major_oldmalloc
Definition: rb_mjit_min_header-2.7.0.h:11602
log10f
float log10f(float)
NODE_NTH_REF
@ NODE_NTH_REF
Definition: rb_mjit_min_header-2.7.0.h:8137
rb_block_call_func_t
rb_block_call_func * rb_block_call_func_t
Definition: ruby.h:1967
rb_str_cmp
int rb_str_cmp(VALUE, VALUE)
Definition: string.c:3228
arg
VALUE arg
Definition: rb_mjit_min_header-2.7.0.h:5601
pid_t
__pid_t pid_t
Definition: rb_mjit_min_header-2.7.0.h:1325
_reent::__sf
__FILE __sf[3]
Definition: rb_mjit_min_header-2.7.0.h:1111
RStruct::heap
struct RStruct::@107::@108 heap
rb_compile_option_struct::instructions_unification
unsigned int instructions_unification
Definition: iseq.h:212
ffsll
int ffsll(long long) __attribute__((__const__))
rb_mKernel
VALUE rb_mKernel
Kernel module.
Definition: ruby.h:1998
NODE_DVAR
@ NODE_DVAR
Definition: rb_mjit_min_header-2.7.0.h:8132
iseq_compile_data::ivar_cache_table
struct rb_id_table * ivar_cache_table
Definition: iseq.h:118
vasprintf
int int int int int int int vasprintf(char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_int_negative_p
int rb_int_negative_p(VALUE num)
Definition: numeric.c:307
iseq_inline_iv_cache_entry::index
size_t index
Definition: vm_core.h:228
__sbuf::_base
unsigned char * _base
Definition: vsnprintf.c:138
RNode::argc
long argc
Definition: node.h:160
cmp_optimizable_count
@ cmp_optimizable_count
Definition: rb_mjit_min_header-2.7.0.h:7180
ctermid
char * ctermid(char *)
rb_proc_call_with_block
VALUE rb_proc_call_with_block(VALUE, int argc, const VALUE *argv, VALUE)
Definition: proc.c:1000
abort
void abort(void) __attribute__((__noreturn__))
f
#define f
RB_DEBUG_COUNTER_mc_global_hit
@ RB_DEBUG_COUNTER_mc_global_hit
Definition: rb_mjit_min_header-2.7.0.h:11529
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:1895
RNode::nd_loc
rb_code_location_t nd_loc
Definition: node.h:172
rb_backtrace_iter_func
int rb_backtrace_iter_func(void *, VALUE, int, VALUE)
Definition: rb_mjit_min_header-2.7.0.h:10484
rb_num_pow
VALUE rb_num_pow(VALUE x, VALUE y)
Definition: numeric.c:4118
SEGV_MAPERR
#define SEGV_MAPERR
Definition: rb_mjit_min_header-2.7.0.h:2204
strpbrk
char * strpbrk(const char *, const char *)
rb_compile_warn
void rb_compile_warn(const char *, int, const char *,...) __attribute__((format(printf
tNUMPARAM_3
@ tNUMPARAM_3
Definition: rb_mjit_min_header-2.7.0.h:8662
_fpstate::padding
__uint32_t padding[24]
Definition: rb_mjit_min_header-2.7.0.h:2027
rb_execution_context_struct::fiber_ptr
rb_fiber_t * fiber_ptr
Definition: vm_core.h:856
rb_eSecurityError
VALUE rb_eSecurityError
Definition: error.c:931
rb_reg_match_p
VALUE rb_reg_match_p(VALUE re, VALUE str, long pos)
Definition: re.c:3339
rb_math_cos
VALUE rb_math_cos(VALUE)
__memmove_chk
void * __memmove_chk(void *, void *, size_t, size_t)
bzero
#define bzero(dst, len)
Definition: rb_mjit_min_header-2.7.0.h:2757
rb_vm_struct::load_path_snapshot
VALUE load_path_snapshot
Definition: vm_core.h:616
pthread_mutex_setprioceiling
int pthread_mutex_setprioceiling(pthread_mutex_t *, int, int *)
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
_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__
rb_vm_inc_const_missing_count
void rb_vm_inc_const_missing_count(void)
Definition: vm.c:386
acos
double acos(double)
RB_DEBUG_COUNTER_mc_miss_by_nome
@ RB_DEBUG_COUNTER_mc_miss_by_nome
Definition: rb_mjit_min_header-2.7.0.h:11536
rb_memhash
st_index_t rb_memhash(const void *ptr, long len)
Definition: random.c:1440
itimerspec::it_value
struct timespec it_value
Definition: rb_mjit_min_header-2.7.0.h:1259
chown
int chown(const char *__path, uid_t __owner, gid_t __group)
RUBY_T_HASH
@ RUBY_T_HASH
Definition: rb_mjit_min_header-2.7.0.h:4334
YARVINSN_trace_setblockparam
@ YARVINSN_trace_setblockparam
Definition: rb_mjit_min_header-2.7.0.h:12077
jmp_buf
long jmp_buf[32]
Definition: rb_mjit_min_header-2.7.0.h:9390
__isinff
int __isinff(float x)
rb_control_frame_struct::block_code
const void * block_code
Definition: vm_core.h:766
rb_str_buf_cat_ascii
VALUE rb_str_buf_cat_ascii(VALUE, const char *)
Definition: string.c:2926
idTo_i
@ idTo_i
Definition: rb_mjit_min_header-2.7.0.h:8722
rb_define_global_const
void rb_define_global_const(const char *, VALUE)
Definition: variable.c:2892
CLD_KILLED
#define CLD_KILLED
Definition: rb_mjit_min_header-2.7.0.h:2210
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
pthread_spinlock_t
struct __pthread_spinlock_t * pthread_spinlock_t
rb_big_pack
void rb_big_pack(VALUE val, unsigned long *buf, long num_longs)
Definition: bignum.c:3215
fd_mask
unsigned long fd_mask
Definition: rb_mjit_min_header-2.7.0.h:1265
rb_gvar_setter_t
void rb_gvar_setter_t(VALUE val, ID id, VALUE *data)
Definition: rb_mjit_min_header-2.7.0.h:5097
rb_event_hook_struct
Definition: vm_trace.c:35
RBignum
Definition: internal.h:749
idEq
@ idEq
Definition: rb_mjit_min_header-2.7.0.h:8568
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:1624
issetugid
int issetugid(void)
CALL_VCALL
@ CALL_VCALL
Definition: rb_mjit_min_header-2.7.0.h:17163
rb_iseq_constant_body::iseq_encoded
VALUE * iseq_encoded
Definition: vm_core.h:325
YARVINSN_dup
@ YARVINSN_dup
Definition: rb_mjit_min_header-2.7.0.h:12006
_fread_r
size_t _fread_r(struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict)
_fputs_r
int _fputs_r(struct _reent *, const char *__restrict, FILE *__restrict)
rb_big_sign
int rb_big_sign(VALUE x)
Definition: bignum.c:6772
RUBY_DATA_FUNC
void RUBY_DATA_FUNC
Definition: rb_mjit_min_header-2.7.0.h:4929
rb_vm_stack_to_heap
void rb_vm_stack_to_heap(rb_execution_context_t *ec)
Definition: vm.c:786
rb_struct_define_without_accessor
VALUE rb_struct_define_without_accessor(const char *, VALUE, rb_alloc_func_t,...)
Definition: struct.c:421
pthread_attr_getinheritsched
int pthread_attr_getinheritsched(const pthread_attr_t *, int *)
rb_data_typed_object_alloc
#define rb_data_typed_object_alloc
Definition: gc.c:15
rb_backref_get
VALUE rb_backref_get(void)
Definition: vm.c:1304
mjit_enabled
_Bool mjit_enabled
Definition: mjit_worker.c:177
YARVINSN_trace_opt_succ
@ YARVINSN_trace_opt_succ
Definition: rb_mjit_min_header-2.7.0.h:12163
YARVINSN_defined
@ YARVINSN_defined
Definition: rb_mjit_min_header-2.7.0.h:12013
ruby_debug_breakpoint
void ruby_debug_breakpoint(void)
Definition: debug.c:135
strdup
char * strdup(const char *) __attribute__((__malloc__)) __attribute__((__warn_unused_result__))
iseq_compile_data::end_label
struct iseq_label_data * end_label
Definition: iseq.h:99
ualarm
useconds_t ualarm(useconds_t __useconds, useconds_t __interval)
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:12932
key_t
__key_t key_t
Definition: rb_mjit_min_header-2.7.0.h:1327
secure_getenv
char * secure_getenv(const char *__string)
rb_thread_struct::args
VALUE args
Definition: vm_core.h:966
rb_st_shift
int rb_st_shift(st_table *, st_data_t *, st_data_t *)
encrypt
void encrypt(char *__block, int __edflag)
idNeq
@ idNeq
Definition: rb_mjit_min_header-2.7.0.h:8570
rb_int_minus
VALUE rb_int_minus(VALUE x, VALUE y)
Definition: numeric.c:3649
rb_flo_div_flo
VALUE rb_flo_div_flo(VALUE x, VALUE y)
Definition: numeric.c:1110
YARVINSN_defineclass
@ YARVINSN_defineclass
Definition: rb_mjit_min_header-2.7.0.h:12017
iseq_catch_table::entries
struct iseq_catch_table_entry entries[]
Definition: rb_mjit_min_header-2.7.0.h:10860
rb_thread_alloc
VALUE rb_thread_alloc(VALUE klass)
Definition: vm.c:2756
st_table::entries_start
st_index_t entries_start
Definition: st.h:92
idLength
@ idLength
Definition: rb_mjit_min_header-2.7.0.h:8699
pipe
int pipe(int __fildes[2])
rb_str_locktmp_ensure
VALUE rb_str_locktmp_ensure(VALUE str, VALUE(*func)(VALUE), VALUE arg)
Definition: string.c:2685
rb_thread_local_aset
VALUE rb_thread_local_aset(VALUE, ID, VALUE)
Definition: thread.c:3364
pthread_barrierattr_getpshared
int pthread_barrierattr_getpshared(const pthread_barrierattr_t *, int *)
VM_CALL_KW_SPLAT_bit
@ VM_CALL_KW_SPLAT_bit
Definition: rb_mjit_min_header-2.7.0.h:10012
rb_fstring
VALUE rb_fstring(VALUE)
Definition: string.c:312
endusershell
void endusershell(void)
__int16_t
short int __int16_t
Definition: rb_mjit_min_header-2.7.0.h:623
__pthread_barrierattr_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1352
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
setlinebuf
int setlinebuf(FILE *)
rb_method_entry_struct::defined_class
VALUE defined_class
Definition: method.h:53
rb_match_busy
void rb_match_busy(VALUE)
Definition: re.c:1287
rb_execution_context_mark
void rb_execution_context_mark(const rb_execution_context_t *ec)
Definition: vm.c:2500
rb_str2big_poweroftwo
VALUE rb_str2big_poweroftwo(VALUE arg, int base, int badcheck)
Definition: bignum.c:4274
rb_obj_method
VALUE rb_obj_method(VALUE, VALUE)
Definition: proc.c:1861
timer_create
int timer_create(clockid_t clock_id, struct sigevent *__restrict evp, timer_t *__restrict timerid)
rb_cmperr
void rb_cmperr(VALUE x, VALUE y)
Definition: compar.c:25
rb_big_eql
VALUE rb_big_eql(VALUE, VALUE)
Definition: bignum.c:5544
RB_DEBUG_COUNTER_obj_obj_ptr
@ RB_DEBUG_COUNTER_obj_obj_ptr
Definition: rb_mjit_min_header-2.7.0.h:11615
rb_const_set
void rb_const_set(VALUE, ID, VALUE)
Definition: variable.c:2752
nlink_t
__nlink_t nlink_t
Definition: rb_mjit_min_header-2.7.0.h:1333
YARVINSN_topn
@ YARVINSN_topn
Definition: rb_mjit_min_header-2.7.0.h:12010
rb_hash_update_func
VALUE rb_hash_update_func(VALUE newkey, VALUE oldkey, VALUE value)
Definition: rb_mjit_min_header-2.7.0.h:5866
__va_list
__builtin_va_list __va_list
Definition: rb_mjit_min_header-2.7.0.h:935
_impure_ptr
struct _reent * _impure_ptr
rb_vm_struct::trap_list
struct rb_vm_struct::@184 trap_list
klass
VALUE klass
Definition: rb_mjit_min_header-2.7.0.h:13254
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
finitef
int finitef(float)
RUBY_ID_ATTRSET
@ RUBY_ID_ATTRSET
Definition: rb_mjit_min_header-2.7.0.h:8498
rb_ec_get_errinfo
VALUE rb_ec_get_errinfo(const rb_execution_context_t *ec)
Definition: eval.c:1851
NODE_ARGSPUSH
@ NODE_ARGSPUSH
Definition: rb_mjit_min_header-2.7.0.h:8156
rb_big_mul
VALUE rb_big_mul(VALUE, VALUE)
Definition: bignum.c:5933
rb_execarg::sh
struct rb_execarg::@110::@111 sh
int_least16_t
__int_least16_t int_least16_t
Definition: rb_mjit_min_header-2.7.0.h:2912
rb_iseq_constant_body::ruby2_keywords
unsigned int ruby2_keywords
Definition: vm_core.h:362
rb_is_instance_name
int rb_is_instance_name(VALUE name)
Definition: symbol.c:1062
rb_objspace_each_objects_without_setup
void rb_objspace_each_objects_without_setup(int(*callback)(void *, void *, size_t, void *), void *data)
rb_resolve_me_location
const rb_method_entry_t * rb_resolve_me_location(const rb_method_entry_t *, VALUE[5])
Definition: thread.c:5400
_off64_t
__extension__ typedef long long _off64_t
Definition: rb_mjit_min_header-2.7.0.h:890
rb_vm_struct::src_encoding_index
int src_encoding_index
Definition: vm_core.h:639
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
int_least32_t
__int_least32_t int_least32_t
Definition: rb_mjit_min_header-2.7.0.h:2915
st_data_t
unsigned long st_data_t
Definition: rb_mjit_min_header-2.7.0.h:5363
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
rb_undef_alloc_func
void rb_undef_alloc_func(VALUE)
Definition: vm_method.c:722
rb_trace_arg_struct::data
VALUE data
Definition: vm_core.h:1882
rb_strterm_mark
void rb_strterm_mark(VALUE obj)
Definition: ripper.c:765
CLD_DUMPED
#define CLD_DUMPED
Definition: rb_mjit_min_header-2.7.0.h:2211
rb_io_ungetc
VALUE rb_io_ungetc(VALUE, VALUE)
Definition: io.c:4315
rb_calling_info::recv
VALUE recv
Definition: vm_core.h:252
rb_captured_block::iseq
const rb_iseq_t * iseq
Definition: vm_core.h:731
arc4random_uniform
__uint32_t arc4random_uniform(__uint32_t)
RB_DEBUG_COUNTER_obj_hash_5_8
@ RB_DEBUG_COUNTER_obj_hash_5_8
Definition: rb_mjit_min_header-2.7.0.h:11633
rb_int_modulo
VALUE rb_int_modulo(VALUE x, VALUE y)
Definition: numeric.c:3886
rb_str_buf_cat
#define rb_str_buf_cat
Definition: rb_mjit_min_header-2.7.0.h:6135
__int32_t
int __int32_t
Definition: rb_mjit_min_header-2.7.0.h:626
rb_ary_at
VALUE rb_ary_at(VALUE, VALUE)
Definition: array.c:1629
YARVINSN_opt_plus
@ YARVINSN_opt_plus
Definition: rb_mjit_min_header-2.7.0.h:12039
id_t
__id_t id_t
Definition: rb_mjit_min_header-2.7.0.h:1313
BOP_FREEZE
@ BOP_FREEZE
Definition: rb_mjit_min_header-2.7.0.h:9656
pthread_rwlockattr_t
struct __pthread_rwlockattr_t * pthread_rwlockattr_t
rb_float_equal
VALUE rb_float_equal(VALUE x, VALUE y)
Definition: numeric.c:1383
rb_string_value_ptr
char * rb_string_value_ptr(volatile VALUE *)
Definition: string.c:2186
RB_DEBUG_COUNTER_obj_imemo_iseq
@ RB_DEBUG_COUNTER_obj_imemo_iseq
Definition: rb_mjit_min_header-2.7.0.h:11663
strxfrm
size_t strxfrm(char *__restrict, const char *__restrict, size_t)
_reent::_locale
struct __locale_t * _locale
Definition: rb_mjit_min_header-2.7.0.h:1067
rb_class_name
VALUE rb_class_name(VALUE)
Definition: variable.c:274
wint_t
unsigned int wint_t
Definition: rb_mjit_min_header-2.7.0.h:906
YARVINSN_opt_setinlinecache
@ YARVINSN_opt_setinlinecache
Definition: rb_mjit_min_header-2.7.0.h:12036
execlpe
int execlpe(const char *__file, const char *,...)
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.0.h:2091
pthread_mutex_timedlock
int pthread_mutex_timedlock(pthread_mutex_t *, const struct timespec *)
rb_complex_arg
VALUE rb_complex_arg(VALUE z)
Definition: complex.c:1208
pthread_barrierattr_t
struct __pthread_barrierattr_t * pthread_barrierattr_t
__uint_least16_t
short unsigned int __uint_least16_t
Definition: rb_mjit_min_header-2.7.0.h:636
RB_DEBUG_COUNTER_obj_newobj
@ RB_DEBUG_COUNTER_obj_newobj
Definition: rb_mjit_min_header-2.7.0.h:11607
siglongjmp
#define siglongjmp(env, val)
Definition: rb_mjit_min_header-2.7.0.h:9401
timeval
Definition: missing.h:53
rb_print_undef_str
void rb_print_undef_str(VALUE klass, VALUE name)
Definition: eval_error.c:394
idFreeze
@ idFreeze
Definition: rb_mjit_min_header-2.7.0.h:8687
pthread_attr_setdetachstate
int pthread_attr_setdetachstate(pthread_attr_t *, int)
RSTRING_NOEMBED
#define RSTRING_NOEMBED
rb_threadptr_pending_interrupt_clear
void rb_threadptr_pending_interrupt_clear(rb_thread_t *th)
Definition: thread.c:1751
rb_str_set_len
void rb_str_set_len(VALUE, long)
Definition: string.c:2692
y0
double y0(double)
timingsafe_bcmp
int timingsafe_bcmp(const void *, const void *, size_t)
ruby_rhash_flags
ruby_rhash_flags
Definition: internal.h:817
strcat
#define strcat(dst, src)
Definition: rb_mjit_min_header-2.7.0.h:2854
rb_thread_struct::unblock
struct rb_unblock_callback unblock
Definition: vm_core.h:957
setuid
int setuid(uid_t __uid)
rb_ensure_list
Definition: vm_core.h:834
rb_obj_alloc
VALUE rb_obj_alloc(VALUE)
Allocates an instance of klass.
Definition: object.c:1895
pthread_spin_init
int pthread_spin_init(pthread_spinlock_t *, int)
NODE_OPT_ARG
@ NODE_OPT_ARG
Definition: rb_mjit_min_header-2.7.0.h:8152
str
char str[HTML_ESCAPE_MAX_LEN+1]
Definition: escape.c:18
getsid
pid_t getsid(pid_t)
__sbuf
Definition: vsnprintf.c:137
RB_WARN_CATEGORY_EXPERIMENTAL
@ RB_WARN_CATEGORY_EXPERIMENTAL
Definition: rb_mjit_min_header-2.7.0.h:7315
rb_class_foreach_subclass
void rb_class_foreach_subclass(VALUE klass, void(*f)(VALUE, VALUE), VALUE)
Definition: class.c:113
logbf
float logbf(float)
rb_string_value
VALUE rb_string_value(volatile VALUE *)
Definition: string.c:2175
rb_iseq_constant_body::opt_num
int opt_num
Definition: vm_core.h:368
_findenv_r
char * _findenv_r(struct _reent *, const char *, int *)
seteuid
int seteuid(uid_t __uid)
rb_hash_freeze
VALUE rb_hash_freeze(VALUE)
Definition: hash.c:87
NODE_POSTARG
@ NODE_POSTARG
Definition: rb_mjit_min_header-2.7.0.h:8154
pthread_mutexattr_destroy
int pthread_mutexattr_destroy(pthread_mutexattr_t *)
pthread_condattr_setpshared
int pthread_condattr_setpshared(pthread_condattr_t *, int)
rb_execarg
Definition: internal.h:2019
_types_fd_set::fds_bits
fd_mask fds_bits[(((64)+(((sizeof(fd_mask) *8)) -1))/((sizeof(fd_mask) *8)))]
Definition: rb_mjit_min_header-2.7.0.h:1269
pthread_mutexattr_getprioceiling
int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *, int *)
rb_str_buf_new2
#define rb_str_buf_new2
Definition: rb_mjit_min_header-2.7.0.h:6133
exp
double exp(double)
modf
double modf(double, double *)
_atexit
Definition: rb_mjit_min_header-2.7.0.h:966
RB_DEBUG_COUNTER_obj_imemo_tmpbuf
@ RB_DEBUG_COUNTER_obj_imemo_tmpbuf
Definition: rb_mjit_min_header-2.7.0.h:11665
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
ruby_dtrace_method_hook_args::classname
const char * classname
Definition: probes_helper.h:7
rb_io_ascii8bit_binmode
VALUE rb_io_ascii8bit_binmode(VALUE)
Definition: io.c:5380
rb_parser_new
VALUE rb_parser_new(void)
Definition: ripper.c:19224
lchown
int lchown(const char *__path, uid_t __owner, gid_t __group)
lldiv
lldiv_t lldiv(long long __numer, long long __denom)
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
setstate
char * setstate(char *)
RVALUE_EMBED_LEN_MAX
#define RVALUE_EMBED_LEN_MAX
rb_id2str
VALUE rb_id2str(ID)
Definition: symbol.c:795
rb_vm_add_root_module
int rb_vm_add_root_module(ID id, VALUE module)
Definition: vm.c:2312
_sigcommune::_si_read_handle
void * _si_read_handle
Definition: rb_mjit_min_header-2.7.0.h:2098
rb_ary_new
VALUE rb_ary_new(void)
Definition: array.c:723
getusershell
char * getusershell(void)
execle
int execle(const char *__path, const char *,...)
SIGEV_THREAD
#define SIGEV_THREAD
Definition: rb_mjit_min_header-2.7.0.h:2223
YARVINSN_setconstant
@ YARVINSN_setconstant
Definition: rb_mjit_min_header-2.7.0.h:11983
rb_hook_list_struct::hooks
struct rb_event_hook_struct * hooks
Definition: vm_core.h:566
RB_DEBUG_COUNTER_obj_bignum_ptr
@ RB_DEBUG_COUNTER_obj_bignum_ptr
Definition: rb_mjit_min_header-2.7.0.h:11654
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
_lrand48_r
long _lrand48_r(struct _reent *)
YARVINSN_trace_invokesuper
@ YARVINSN_trace_invokesuper
Definition: rb_mjit_min_header-2.7.0.h:12130
rb_iseq_constant_body::total_calls
long unsigned total_calls
Definition: rb_mjit_min_header-2.7.0.h:9594
__sFILE64::_nbuf
unsigned char _nbuf[1]
Definition: rb_mjit_min_header-2.7.0.h:1029
pthread_attr_setscope
int pthread_attr_setscope(pthread_attr_t *, int)
rb_usascii_str_new
#define rb_usascii_str_new(str, len)
Definition: rb_mjit_min_header-2.7.0.h:6118
rintl
long double rintl(long double)
rb_fd_init
void rb_fd_init(rb_fdset_t *)
revoke
int revoke(char *__path)
rb_match_count
int rb_match_count(VALUE match)
Definition: re.c:1299
RB_DEBUG_COUNTER_obj_ary_shared
@ RB_DEBUG_COUNTER_obj_ary_shared
Definition: rb_mjit_min_header-2.7.0.h:11626
rb_data_object_make
#define rb_data_object_make
Definition: rb_mjit_min_header-2.7.0.h:4949
rb_convert_type
VALUE rb_convert_type(VALUE, int, const char *, const char *)
Converts an object into another type.
Definition: object.c:2900
rb_trace_arg_struct::ec
rb_execution_context_t * ec
Definition: vm_core.h:1876
ruby_glob
int ruby_glob(const char *, int, ruby_glob_func *, VALUE)
Definition: dir.c:2519
symlinkat
int symlinkat(const char *, int, const char *)
MISSING_VCALL
@ MISSING_VCALL
Definition: rb_mjit_min_header-2.7.0.h:7847
YARVINSN_trace_getlocal
@ YARVINSN_trace_getlocal
Definition: rb_mjit_min_header-2.7.0.h:12074
__mempcpy_chk
void * __mempcpy_chk(void *, const void *, size_t, size_t)
RMoved::destination
VALUE destination
Definition: internal.h:910
MEMO::v2
const VALUE v2
Definition: internal.h:1282
rb_control_frame_struct::iseq
const rb_iseq_t * iseq
Definition: vm_core.h:763
fstatat
int fstatat(int, const char *__restrict, struct stat *__restrict, int)
nearbyintl
long double nearbyintl(long double)
RB_DEBUG_COUNTER_obj_imemo_memo
@ RB_DEBUG_COUNTER_obj_imemo_memo
Definition: rb_mjit_min_header-2.7.0.h:11671
NODE_BREAK
@ NODE_BREAK
Definition: rb_mjit_min_header-2.7.0.h:8095
rb_reserved_fd_p
int rb_reserved_fd_p(int fd)
__sFILE64::_p
unsigned char * _p
Definition: rb_mjit_min_header-2.7.0.h:1009
pthread_cond_signal
int pthread_cond_signal(pthread_cond_t *)
tSucc
@ tSucc
Definition: rb_mjit_min_header-2.7.0.h:8621
YARVINSN_trace_opt_newarray_min
@ YARVINSN_trace_opt_newarray_min
Definition: rb_mjit_min_header-2.7.0.h:12129
rb_captured_block::code
union rb_captured_block::@186 code
rb_mod_module_exec
VALUE rb_mod_module_exec(int, const VALUE *, VALUE)
Definition: vm_eval.c:2101
suboptarg
char * suboptarg
RB_DEBUG_COUNTER_ivar_set_ic_hit
@ RB_DEBUG_COUNTER_ivar_set_ic_hit
Definition: rb_mjit_min_header-2.7.0.h:11579
valloc
void * valloc(size_t)
__sFILE::_p
unsigned char * _p
Definition: vsnprintf.c:170
rb_const_source_location
VALUE rb_const_source_location(VALUE, ID)
Definition: variable.c:2457
YARVINSN_trace_topn
@ YARVINSN_trace_topn
Definition: rb_mjit_min_header-2.7.0.h:12113
rb_captured_block
Definition: vm_core.h:727
rb_proc_new
VALUE rb_proc_new(rb_block_call_func_t, VALUE)
Definition: proc.c:2979
rb_nativethread_lock_t
pthread_mutex_t rb_nativethread_lock_t
Definition: rb_mjit_min_header-2.7.0.h:9344
CALL_TYPE_MAX
@ CALL_TYPE_MAX
Definition: rb_mjit_min_header-2.7.0.h:17166
vm_throw_data::reserved
VALUE reserved
Definition: internal.h:1195
rb_iseq_insns_info_encode_positions
void rb_iseq_insns_info_encode_positions(const rb_iseq_t *iseq)
Definition: iseq.c:595
rb_method_definition_create
rb_method_definition_t * rb_method_definition_create(rb_method_type_t type, ID mid)
Definition: vm_method.c:348
idDiv
@ idDiv
Definition: rb_mjit_min_header-2.7.0.h:8734
rb_readwrite_sys_fail
void rb_readwrite_sys_fail(enum rb_io_wait_readwrite writable, const char *mesg)
Definition: io.c:12923
_fputc_unlocked_r
int _fputc_unlocked_r(struct _reent *, int, FILE *)
logf
float logf(float)
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
idLASTLINE
@ idLASTLINE
Definition: rb_mjit_min_header-2.7.0.h:8752
ruby_native_thread_p
int ruby_native_thread_p(void)
Definition: thread.c:5277
umask
mode_t umask(mode_t __mask)
rb_gets
VALUE rb_gets(void)
Definition: io.c:8902
RB_DEBUG_COUNTER_gc_major_shady
@ RB_DEBUG_COUNTER_gc_major_shady
Definition: rb_mjit_min_header-2.7.0.h:11600
rb_callable_method_entry_struct::flags
VALUE flags
Definition: method.h:60
NODE_ALIAS
@ NODE_ALIAS
Definition: rb_mjit_min_header-2.7.0.h:8161
_strtoll_r
long long _strtoll_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
mjit_options::max_cache_size
int max_cache_size
Definition: rb_mjit_min_header-2.7.0.h:11733
rb_autoload_at_p
VALUE rb_autoload_at_p(VALUE, ID, int)
Definition: variable.c:2287
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
VM_CALL_ARGS_BLOCKARG_bit
@ VM_CALL_ARGS_BLOCKARG_bit
Definition: rb_mjit_min_header-2.7.0.h:10006
RB_DEBUG_COUNTER_obj_hash_force_convert
@ RB_DEBUG_COUNTER_obj_hash_force_convert
Definition: rb_mjit_min_header-2.7.0.h:11639
__sFILE::_nbuf
unsigned char _nbuf[1]
Definition: rb_mjit_min_header-2.7.0.h:999
RB_DEBUG_COUNTER_lvar_set
@ RB_DEBUG_COUNTER_lvar_set
Definition: rb_mjit_min_header-2.7.0.h:11589
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:356
rb_genrand_int32
unsigned int rb_genrand_int32(void)
Definition: random.c:115
copysign
double copysign(double, double)
YARVINSN_expandarray
@ YARVINSN_expandarray
Definition: rb_mjit_min_header-2.7.0.h:12000
rb_float_denominator
VALUE rb_float_denominator(VALUE x)
Definition: rational.c:2104
rb_execarg::fd_close
VALUE fd_close
Definition: internal.h:2057
sig_t
_sig_func_ptr sig_t
Definition: rb_mjit_min_header-2.7.0.h:2338
dprintf
int dprintf(int, const char *__restrict,...) __attribute__((__format__(__printf__
rb_execution_context_t
struct rb_execution_context_struct rb_execution_context_t
call
return cc call
Definition: rb_mjit_min_header-2.7.0.h:13249
log10
double log10(double)
rb_vm_struct::fiber_machine_stack_size
size_t fiber_machine_stack_size
Definition: vm_core.h:666
RUBY_T_NIL
@ RUBY_T_NIL
Definition: rb_mjit_min_header-2.7.0.h:4342
pthread_t
struct __pthread_t * pthread_t
keys
const rb_iseq_t const char const VALUE keys
Definition: rb_mjit_min_header-2.7.0.h:13506
rb_vm_struct::top_self
VALUE top_self
Definition: vm_core.h:614
NODE_CALL
@ NODE_CALL
Definition: rb_mjit_min_header-2.7.0.h:8118
rb_vm_struct::safe_level_
unsigned int safe_level_
Definition: vm_core.h:606
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
VM_THROW_STATE_MASK
@ VM_THROW_STATE_MASK
Definition: rb_mjit_min_header-2.7.0.h:9446
rb_mMath
VALUE rb_mMath
Definition: ruby.h:2004
rb_secure_update
void rb_secure_update(VALUE)
Definition: safe.c:116
_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__
_reent::__sglue
struct _glue __sglue
Definition: rb_mjit_min_header-2.7.0.h:1110
log1p
double log1p(double)
VM_THROW_NO_ESCAPE_FLAG
@ VM_THROW_NO_ESCAPE_FLAG
Definition: rb_mjit_min_header-2.7.0.h:9445
pthread_condattr_getpshared
int pthread_condattr_getpshared(const pthread_condattr_t *, int *)
timer_settime
int timer_settime(timer_t timerid, int flags, const struct itimerspec *__restrict value, struct itimerspec *__restrict ovalue)
rb_iseq_constant_body::ISEQ_TYPE_RESCUE
@ ISEQ_TYPE_RESCUE
Definition: vm_core.h:317
args_info::kw_argv
VALUE * kw_argv
Definition: vm_args.c:31
rb_eLocalJumpError
VALUE rb_eLocalJumpError
Definition: eval.c:33
sincos
void sincos(double, double *, double *)
rb_vm_env_prev_env
const rb_env_t * rb_vm_env_prev_env(const rb_env_t *env)
Definition: vm.c:796
wcstoumax_l
uintmax_t wcstoumax_l(const wchar_t *__restrict, wchar_t **_restrict, int, locale_t)
RTypedData::typed_flag
VALUE typed_flag
Definition: ruby.h:1171
YARVINSN_invokebuiltin
@ YARVINSN_invokebuiltin
Definition: rb_mjit_min_header-2.7.0.h:12064
rb_vm_struct::frozen_strings
st_table * frozen_strings
Definition: vm_core.h:656
_reent
Definition: rb_mjit_min_header-2.7.0.h:1060
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
__sFILE64::_lbfsize
int _lbfsize
Definition: rb_mjit_min_header-2.7.0.h:1015
rb_iseq_ibf_load_bytes
const rb_iseq_t * rb_iseq_ibf_load_bytes(const char *cstr, size_t)
Definition: compile.c:11616
__off_t
_off_t __off_t
Definition: rb_mjit_min_header-2.7.0.h:891
_Static_assert
_Static_assert(sizeof(struct rb_call_cache)<=64, "cachelined" ": " "sizeof(struct rb_call_cache) <= CACHELINE")
symlink
int symlink(const char *__name1, const char *__name2)
Definition: win32.c:5182
round
double round(double)
Definition: numeric.c:80
flock::l_len
off_t l_len
Definition: rb_mjit_min_header-2.7.0.h:1405
rb_str_strlen
long rb_str_strlen(VALUE)
Definition: string.c:1829
rb_control_frame_struct::__bp__
VALUE * __bp__
Definition: vm_core.h:767
nexttowardl
long double nexttowardl(long double, long double)
rb_absint_numwords
size_t rb_absint_numwords(VALUE val, size_t word_numbits, size_t *nlz_bits_ret)
Definition: bignum.c:3382
YARVINSN_opt_succ
@ YARVINSN_opt_succ
Definition: rb_mjit_min_header-2.7.0.h:12060
__ssp_real_getgroups
int __ssp_real_getgroups(int __n, gid_t __buf[]) __asm__("" "getgroups")
ruby_executable_node
int ruby_executable_node(void *n, int *status)
Checks the return value of ruby_options().
Definition: eval.c:305
int_least8_t
__int_least8_t int_least8_t
Definition: rb_mjit_min_header-2.7.0.h:2909
rb_float_ceil
VALUE rb_float_ceil(VALUE num, int ndigits)
Definition: numeric.c:2017
sigaction::sa_handler
_sig_func_ptr sa_handler
Definition: rb_mjit_min_header-2.7.0.h:2229
isnan
#define isnan(__x)
Definition: rb_mjit_min_header-2.7.0.h:3674
rb_reset_coverages
void rb_reset_coverages(void)
Definition: thread.c:5504
rb_vsprintf
VALUE VALUE rb_vsprintf(const char *, va_list)
Definition: sprintf.c:1191
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
posix_memalign
int posix_memalign(void **, size_t, size_t) __attribute__((__nonnull__(1))) __attribute__((__warn_unused_result__))
__ssp_real_fread
size_t __ssp_real_fread(void *__restrict __ptr, size_t __size, size_t __n, FILE *__restrict __fp) __asm__("" "fread")
rb_execarg::redirect_fds
VALUE redirect_fds
Definition: internal.h:2031
rb_cString
VALUE rb_cString
Definition: ruby.h:2044
ilogbl
int ilogbl(long double)
__vsprintf_chk
int int __vsprintf_chk(char *__restrict, int, size_t, const char *__restrict, __va_list) __attribute__((__format__(__printf__
_reent::__sdidinit
int __sdidinit
Definition: rb_mjit_min_header-2.7.0.h:1068
rb_thread_wakeup_alive
VALUE rb_thread_wakeup_alive(VALUE)
Definition: thread.c:2549
ldiv_t::quot
long quot
Definition: rb_mjit_min_header-2.7.0.h:2552
aligned_alloc
void * aligned_alloc(size_t, size_t) __attribute__((__malloc__)) __attribute__((__alloc_align__(1))) __attribute__((__alloc_size__(2))) __attribute__((__warn_unused_result__))
rb_eval_string_protect
VALUE rb_eval_string_protect(const char *, int *)
Evaluates the given string in an isolated binding.
Definition: vm_eval.c:1735
RComplex
Definition: internal.h:805
rb_big_comp
VALUE rb_big_comp(VALUE x)
Definition: bignum.c:5564
rb_cloexec_dup
int rb_cloexec_dup(int oldfd)
Definition: io.c:318
RRegexp::src
const VALUE src
Definition: ruby.h:1115
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
__tzrule_struct::m
int m
Definition: rb_mjit_min_header-2.7.0.h:1978
idBt_locations
@ idBt_locations
Definition: rb_mjit_min_header-2.7.0.h:8726
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
sigaction::sa_sigaction
void(* sa_sigaction)(int, siginfo_t *, void *)
Definition: rb_mjit_min_header-2.7.0.h:2230
rb_gc_adjust_memory_usage
void rb_gc_adjust_memory_usage(ssize_t)
Definition: gc.c:10300
rb_str_dup_frozen
#define rb_str_dup_frozen
Definition: rb_mjit_min_header-2.7.0.h:6070
RB_DEBUG_COUNTER_ccf_bmethod
@ RB_DEBUG_COUNTER_ccf_bmethod
Definition: rb_mjit_min_header-2.7.0.h:11555
rb_vm_struct::living_threads
struct list_head living_threads
Definition: vm_core.h:595
ruby_vm_destruct
int ruby_vm_destruct(ruby_vm_t *vm)
NODE_SPLAT
@ NODE_SPLAT
Definition: rb_mjit_min_header-2.7.0.h:8157
RUBY_T_NODE
@ RUBY_T_NODE
Definition: rb_mjit_min_header-2.7.0.h:4349
_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__
rb_iseq_constant_body::ISEQ_TYPE_ENSURE
@ ISEQ_TYPE_ENSURE
Definition: vm_core.h:318
rb_gc_mark_vm_stack_values
void rb_gc_mark_vm_stack_values(long n, const VALUE *values)
Definition: gc.c:4739
RString::capa
long capa
Definition: ruby.h:995
mjit_func_t
VALUE(* mjit_func_t)(rb_execution_context_t *, rb_control_frame_t *)
Definition: rb_mjit_min_header-2.7.0.h:11740
rb_hash_key_str
VALUE rb_hash_key_str(VALUE)
Definition: hash.c:2729
rb_ary_replace
VALUE rb_ary_replace(VALUE copy, VALUE orig)
Definition: array.c:3811
gamma_r
double gamma_r(double, int *)
__gettzinfo
__tzinfo_type * __gettzinfo(void)
nanl
long double nanl(const char *)
RB_DEBUG_COUNTER_ccf_method_missing
@ RB_DEBUG_COUNTER_ccf_method_missing
Definition: rb_mjit_min_header-2.7.0.h:11553
_pthread_cleanup_pop
void _pthread_cleanup_pop(int execute)
idMethodMissing
@ idMethodMissing
Definition: rb_mjit_min_header-2.7.0.h:8692
getprogname
const char * getprogname(void)
_reent::_reent
struct _reent::@212::@213 _reent
rb_iseq_constant_body::post_num
int post_num
Definition: vm_core.h:371
rb_str_drop_bytes
VALUE rb_str_drop_bytes(VALUE, long)
Definition: string.c:4573
ruby_hdtoa
char * ruby_hdtoa(double d, const char *xdigs, int ndigits, int *decpt, int *sign, char **rve)
YARVINSN_opt_newarray_min
@ YARVINSN_opt_newarray_min
Definition: rb_mjit_min_header-2.7.0.h:12026
rb_int_ge
VALUE rb_int_ge(VALUE x, VALUE y)
Definition: numeric.c:4292
getdelim
ssize_t getdelim(char **, size_t *, int, FILE *)
rb_memory_id
VALUE rb_memory_id(VALUE)
Definition: gc.c:3737
rb_obj_init_copy
VALUE rb_obj_init_copy(VALUE, VALUE)
Default implementation of #initialize_copy.
Definition: object.c:500
YARVINSN_setlocal_WC_1
@ YARVINSN_setlocal_WC_1
Definition: rb_mjit_min_header-2.7.0.h:12070
OPTIMIZED_METHOD_TYPE_CALL
@ OPTIMIZED_METHOD_TYPE_CALL
Definition: rb_mjit_min_header-2.7.0.h:8872
rb_adjust_argv_kw_splat
VALUE rb_adjust_argv_kw_splat(int *, const VALUE **, int *)
Definition: vm_eval.c:237
rb_rational_plus
VALUE rb_rational_plus(VALUE self, VALUE other)
Definition: rational.c:737
pthread_rwlock_timedwrlock
int pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlock, const struct timespec *abstime)
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:2303
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_ast_mark
void rb_ast_mark(rb_ast_t *)
Definition: node.c:1342
__getreent
struct _reent * __getreent(void)
pthread_attr_setschedpolicy
int pthread_attr_setschedpolicy(pthread_attr_t *, int)
strtol
long strtol(const char *__restrict __n, char **__restrict __end_PTR, int __base)
RB_DEBUG_COUNTER_heap_xfree
@ RB_DEBUG_COUNTER_heap_xfree
Definition: rb_mjit_min_header-2.7.0.h:11678
rb_free_generic_ivar
void rb_free_generic_ivar(VALUE)
Definition: variable.c:993
__useconds_t
unsigned long __useconds_t
Definition: rb_mjit_min_header-2.7.0.h:934
nan
double nan(const char *)
Definition: nan.c:7
_iconv_t
void * _iconv_t
Definition: rb_mjit_min_header-2.7.0.h:922
tTo_int
@ tTo_int
Definition: rb_mjit_min_header-2.7.0.h:8632
__cygwin_lock_trylock
int __cygwin_lock_trylock(_LOCK_T *)
rb_undefine_finalizer
VALUE rb_undefine_finalizer(VALUE)
Definition: gc.c:3191
DEFINED_IVAR
@ DEFINED_IVAR
Definition: rb_mjit_min_header-2.7.0.h:10882
floorl
long double floorl(long double)
__uint16_t
short unsigned int __uint16_t
Definition: rb_mjit_min_header-2.7.0.h:624
rb_cref_struct::refinements
VALUE refinements
Definition: method.h:43
NODE_UNTIL
@ NODE_UNTIL
Definition: rb_mjit_min_header-2.7.0.h:8091
rb_file_expand_path_internal
VALUE rb_file_expand_path_internal(VALUE, VALUE, int, int, VALUE)
Definition: file.c:3646
rb_obj_instance_eval
VALUE rb_obj_instance_eval(int, const VALUE *, VALUE)
Definition: vm_eval.c:1995
rb_iseq_pathobj_new
VALUE rb_iseq_pathobj_new(VALUE path, VALUE realpath)
Definition: iseq.c:450
RB_DEBUG_COUNTER_obj_ary_shared_root_occupied
@ RB_DEBUG_COUNTER_obj_ary_shared_root_occupied
Definition: rb_mjit_min_header-2.7.0.h:11627
rb_obj_is_thread
VALUE rb_obj_is_thread(VALUE obj)
Definition: vm.c:2655
rb_execarg::argv_str
VALUE argv_str
Definition: internal.h:2027
tmpnam
char * tmpnam(char *)
cbrtl
long double cbrtl(long double)
__strncat_chk
char * __strncat_chk(char *, const char *, size_t, size_t)
killpg
int killpg(pid_t, int)
rb_int_cmp
VALUE rb_int_cmp(VALUE x, VALUE y)
Definition: numeric.c:4212
rb_big2ll
long long rb_big2ll(VALUE)
tcsetpgrp
int tcsetpgrp(int __fildes, pid_t __pgrp_id)
idTo_proc
@ idTo_proc
Definition: rb_mjit_min_header-2.7.0.h:8718
NODE_FCALL
@ NODE_FCALL
Definition: rb_mjit_min_header-2.7.0.h:8120
RArray::basic
struct RBasic basic
Definition: ruby.h:1049
VM_METHOD_TYPE_NOTIMPLEMENTED
@ VM_METHOD_TYPE_NOTIMPLEMENTED
Definition: rb_mjit_min_header-2.7.0.h:8836
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
rb_f_eval
VALUE rb_f_eval(int argc, const VALUE *argv, VALUE self)
Definition: vm_eval.c:1668
rb_thread_struct::native_thread_data
native_thread_data_t native_thread_data
Definition: vm_core.h:940
idANDDOT
@ idANDDOT
Definition: rb_mjit_min_header-2.7.0.h:8582
rb_genrand_ulong_limited
unsigned long rb_genrand_ulong_limited(unsigned long i)
Definition: random.c:807
rb_compile_option_struct::debug_level
int debug_level
Definition: iseq.h:217
pthread_getschedparam
int pthread_getschedparam(pthread_t, int *, struct sched_param *)
rb_binding_t
Definition: vm_core.h:1068
NODE_LIT
@ NODE_LIT
Definition: rb_mjit_min_header-2.7.0.h:8142
_ftello_r
_off_t _ftello_r(struct _reent *, FILE *)
tOR
@ tOR
Definition: rb_mjit_min_header-2.7.0.h:8652
idNot
@ idNot
Definition: rb_mjit_min_header-2.7.0.h:8571
mkostemp
int mkostemp(char *, int)
_Bigint::_x
__ULong _x[1]
Definition: rb_mjit_min_header-2.7.0.h:945
rb_kwarg_call_data::cc
struct rb_call_cache cc
Definition: vm_core.h:258
RUBY_SYMBOL_FLAG
@ RUBY_SYMBOL_FLAG
Definition: rb_mjit_min_header-2.7.0.h:4304
ruby_digit36_to_number_table
const signed char ruby_digit36_to_number_table[]
Definition: escape.c:6
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_thread_check_ints
void rb_thread_check_ints(void)
Definition: thread.c:1362
rb_wb_protected_newobj_of
VALUE rb_wb_protected_newobj_of(VALUE, VALUE)
Definition: gc.c:2279
NODE_FALSE
@ NODE_FALSE
Definition: rb_mjit_min_header-2.7.0.h:8176
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:9476
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
rb_ary_each
VALUE rb_ary_each(VALUE)
Definition: array.c:2129
__fdlibm_posix
@ __fdlibm_posix
Definition: rb_mjit_min_header-2.7.0.h:3894
NODE_MATCH2
@ NODE_MATCH2
Definition: rb_mjit_min_header-2.7.0.h:8140
pthread_cond_init
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *)
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
sinf
float sinf(float)
RHash::word
VALUE word
Definition: internal.h:896
_asiprintf_r
int _asiprintf_r(struct _reent *, char **, const char *,...) __attribute__((__format__(__printf__
VM_METHOD_TYPE_ZSUPER
@ VM_METHOD_TYPE_ZSUPER
Definition: rb_mjit_min_header-2.7.0.h:8833
asinl
long double asinl(long double)
asinhl
long double asinhl(long double)
st
enum ruby_tag_type st
Definition: rb_mjit_min_header-2.7.0.h:11111
RObject::heap
struct RObject::@92::@93 heap
erf
double erf(double)
Definition: erf.c:71
rb_num2dbl
double rb_num2dbl(VALUE)
Converts a Numeric object to double.
Definition: object.c:3616
flock::l_type
short l_type
Definition: rb_mjit_min_header-2.7.0.h:1402
YARVINSN_trace_opt_ltlt
@ YARVINSN_trace_opt_ltlt
Definition: rb_mjit_min_header-2.7.0.h:12153
__pthread_cleanup_handler
struct _pthread_cleanup_handler __pthread_cleanup_handler
_vdiprintf_r
int char char int int _vdiprintf_r(struct _reent *, int, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
log2f
float log2f(float)
rb_cref_struct::flags
VALUE flags
Definition: method.h:42
rb_vm_struct::defined_module_hash
st_table * defined_module_hash
Definition: vm_core.h:649
RUBY_ID_SCOPE_SHIFT
@ RUBY_ID_SCOPE_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:8503
rb_enumeratorize_with_size
VALUE rb_enumeratorize_with_size(VALUE, VALUE, int, const VALUE *, rb_enumerator_size_func *)
Definition: enumerator.c:525
RB_DEBUG_COUNTER_gc_major_oldgen
@ RB_DEBUG_COUNTER_gc_major_oldgen
Definition: rb_mjit_min_header-2.7.0.h:11599
YARVINSN_getconstant
@ YARVINSN_getconstant
Definition: rb_mjit_min_header-2.7.0.h:11982
rb_reg_check_preprocess
VALUE rb_reg_check_preprocess(VALUE)
Definition: re.c:2706
rb_cStat
VALUE rb_cStat
Definition: file.c:161
rb_obj_classname
const char * rb_obj_classname(VALUE)
Definition: variable.c:289
rb_float_numerator
VALUE rb_float_numerator(VALUE x)
Definition: rational.c:2081
rb_sys_fail_str
void rb_sys_fail_str(VALUE mesg)
Definition: error.c:2799
rb_ec_stack_overflow
MJIT_STATIC void rb_ec_stack_overflow(rb_execution_context_t *ec, int crit)
Definition: vm_insnhelper.c:67
fmaxl
long double fmaxl(long double, long double)
RData::basic
struct RBasic basic
Definition: ruby.h:1140
rb_thread_shield_destroy
VALUE rb_thread_shield_destroy(VALUE self)
Definition: thread.c:4846
_Bigint::_maxwds
int _maxwds
Definition: rb_mjit_min_header-2.7.0.h:944
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__
RHash::ary
ar_hint_t ary[RHASH_AR_TABLE_MAX_SIZE]
Definition: internal.h:895
rb_f_trace_var
VALUE rb_f_trace_var(int, const VALUE *)
Definition: variable.c:528
RB_DEBUG_COUNTER_obj_str_nofree
@ RB_DEBUG_COUNTER_obj_str_nofree
Definition: rb_mjit_min_header-2.7.0.h:11619
_vasiprintf_r
int _vasiprintf_r(struct _reent *, char **, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
rb_method_call_with_block_kw
VALUE rb_method_call_with_block_kw(int, const VALUE *, VALUE, VALUE, int)
Definition: proc.c:2284
_reent::_mbrtowc_state
_mbstate_t _mbrtowc_state
Definition: rb_mjit_min_header-2.7.0.h:1094
YARVINSN_trace_checkkeyword
@ YARVINSN_trace_checkkeyword
Definition: rb_mjit_min_header-2.7.0.h:12118
rb_singleton_class
VALUE rb_singleton_class(VALUE)
Returns the singleton class of obj.
Definition: class.c:1725
RUBY_FIXNUM_FLAG
@ RUBY_FIXNUM_FLAG
Definition: rb_mjit_min_header-2.7.0.h:4301
RB_DEBUG_COUNTER_ccf_iseq_setup
@ RB_DEBUG_COUNTER_ccf_iseq_setup
Definition: rb_mjit_min_header-2.7.0.h:11543
RUBY_T_OBJECT
@ RUBY_T_OBJECT
Definition: rb_mjit_min_header-2.7.0.h:4327
rb_vm_cref_replace_with_duplicated_cref
rb_cref_t * rb_vm_cref_replace_with_duplicated_cref(void)
Definition: vm.c:1391
VM_CALL_VCALL_bit
@ VM_CALL_VCALL_bit
Definition: rb_mjit_min_header-2.7.0.h:10008
rb_ary_sort
VALUE rb_ary_sort(VALUE)
Definition: array.c:2866
rb_code_location_struct::beg_pos
rb_code_position_t beg_pos
Definition: node.h:136
rb_fd_isset
int rb_fd_isset(int, const rb_fdset_t *)
rb_eKeyError
VALUE rb_eKeyError
Definition: error.c:925
YARVINSN_trace_opt_gt
@ YARVINSN_trace_opt_gt
Definition: rb_mjit_min_header-2.7.0.h:12151
YARVINSN_trace_getblockparamproxy
@ YARVINSN_trace_getblockparamproxy
Definition: rb_mjit_min_header-2.7.0.h:12078
rb_vm_encoded_insn_data_table_init
void rb_vm_encoded_insn_data_table_init(void)
Definition: iseq.c:3085
rb_name_error_str
void rb_name_error_str(VALUE str, const char *fmt,...)
Definition: error.c:1528
lround
long int lround(double)
rb_search_class_path
VALUE rb_search_class_path(VALUE)
Definition: variable.c:175
list_node
Definition: rb_mjit_min_header-2.7.0.h:8971
rb_define_const
void rb_define_const(VALUE, const char *, VALUE)
Definition: variable.c:2880
fclose
int fclose(FILE *)
rb_ast_t
struct rb_ast_struct rb_ast_t
_rewind_r
void _rewind_r(struct _reent *, FILE *)
RNode::u1
union RNode::@122 u1
rb_call_cache::aux
union rb_call_cache::@113 aux
rb_iseq_struct::obj
VALUE obj
Definition: vm_core.h:466
rb_iseq_label
VALUE rb_iseq_label(const rb_iseq_t *iseq)
Definition: iseq.c:1045
idTo_f
@ idTo_f
Definition: rb_mjit_min_header-2.7.0.h:8723
ruby_error_reenter
@ ruby_error_reenter
Definition: rb_mjit_min_header-2.7.0.h:9626
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:1680
rb_catch
VALUE rb_catch(const char *, rb_block_call_func_t, VALUE)
Definition: vm_eval.c:2288
rb_hash_size
VALUE rb_hash_size(VALUE)
Definition: hash.c:2866
rb_str_chomp_string
VALUE rb_str_chomp_string(VALUE str, VALUE chomp)
Definition: string.c:8921
sched_get_priority_min
int sched_get_priority_min(int __policy)
VM_CALL_ZSUPER_bit
@ VM_CALL_ZSUPER_bit
Definition: rb_mjit_min_header-2.7.0.h:10015
ILL_ILLADR
#define ILL_ILLADR
Definition: rb_mjit_min_header-2.7.0.h:2190
sethostname
int sethostname(const char *, size_t)
rb_path2class
VALUE rb_path2class(const char *)
Definition: variable.c:268
rb_spawn
pid_t rb_spawn(int, const VALUE *)
Definition: process.c:4441
rb_eSystemCallError
VALUE rb_eSystemCallError
Definition: error.c:941
freopen
FILE * freopen(const char *__restrict, const char *__restrict, FILE *__restrict)
__blksize_t
__int32_t __blksize_t
Definition: rb_mjit_min_header-2.7.0.h:844
RTypedData::basic
struct RBasic basic
Definition: ruby.h:1169
ruby_initial_load_paths
const char ruby_initial_load_paths[]
Definition: loadpath.c:62
idNeqTilde
@ idNeqTilde
Definition: rb_mjit_min_header-2.7.0.h:8576
rb_is_local_id
int rb_is_local_id(ID id)
Definition: symbol.c:884
rb_file_s_expand_path
VALUE rb_file_s_expand_path(int, const VALUE *)
Definition: file.c:4031
__ssp_real_pread
ssize_t __ssp_real_pread(int __fd, void *__buf, size_t __len, off_t __off) __asm__("" "pread")
rb_thread_list_struct::th
struct rb_thread_struct * th
Definition: vm_core.h:825
getuid
uid_t getuid(void)
Definition: win32.c:2765
siginfo_t::si_status
int si_status
Definition: rb_mjit_min_header-2.7.0.h:2138
__tzrule_struct
Definition: rb_mjit_min_header-2.7.0.h:1975
fputc
int fputc(int, FILE *)
__uint32_t
unsigned int __uint32_t
Definition: rb_mjit_min_header-2.7.0.h:627
st_table::bins
st_index_t * bins
Definition: st.h:88
rb_vm_struct::defined_strings
VALUE * defined_strings
Definition: vm_core.h:655
erand48
double erand48(unsigned short[3])
rb_mWaitWritable
VALUE rb_mWaitWritable
Definition: ruby.h:2007
asprintf
int int int int int int asprintf(char **__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
DEFINED_IVAR2
@ DEFINED_IVAR2
Definition: rb_mjit_min_header-2.7.0.h:10895
__signgam
int * __signgam(void)
DEFINED_CONST
@ DEFINED_CONST
Definition: rb_mjit_min_header-2.7.0.h:10886
tm
Definition: rb_mjit_min_header-2.7.0.h:1932
__memcpy_chk
void * __memcpy_chk(void *, const void *, size_t, size_t)
rb_hash_aset
VALUE rb_hash_aset(VALUE, VALUE, VALUE)
Definition: hash.c:2779
_reallocf_r
void * _reallocf_r(struct _reent *, void *, size_t)
YARVINSN_putspecialobject
@ YARVINSN_putspecialobject
Definition: rb_mjit_min_header-2.7.0.h:11989
BOP_NEQ
@ BOP_NEQ
Definition: rb_mjit_min_header-2.7.0.h:9654
_fpstate::ftw
__uint16_t ftw
Definition: rb_mjit_min_header-2.7.0.h:2019
_fread_unlocked_r
size_t _fread_unlocked_r(struct _reent *, void *__restrict, size_t _size, size_t _n, FILE *__restrict)
pow10
double pow10(double)
YARVINSN_opt_aset
@ YARVINSN_opt_aset
Definition: rb_mjit_min_header-2.7.0.h:12054
__sFILE64::_read
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
Definition: rb_mjit_min_header-2.7.0.h:1018
fwrite_unlocked
size_t fwrite_unlocked(const void *__restrict, size_t _size, size_t _n, FILE *)
rb_cTrueClass
VALUE rb_cTrueClass
TrueClass class.
Definition: ruby.h:2049
ruby_float_mod
double ruby_float_mod(double x, double y)
Definition: numeric.c:1207
rb_const_defined_at
int rb_const_defined_at(VALUE, ID)
Definition: variable.c:2688
YARVINSN_trace_defined
@ YARVINSN_trace_defined
Definition: rb_mjit_min_header-2.7.0.h:12116
rb_call_info::flag
unsigned int flag
Definition: internal.h:2390
nanosleep
int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
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
basename
#define basename
Definition: rb_mjit_min_header-2.7.0.h:2815
YARVINSN_trace_opt_newarray_max
@ YARVINSN_trace_opt_newarray_max
Definition: rb_mjit_min_header-2.7.0.h:12128
rb_threadptr_signal_raise
void rb_threadptr_signal_raise(rb_thread_t *th, int sig)
Definition: thread.c:2324
_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__
YARVINSN_getblockparamproxy
@ YARVINSN_getblockparamproxy
Definition: rb_mjit_min_header-2.7.0.h:11975
imaxabs
intmax_t imaxabs(intmax_t j)
rb_cRubyVM
VALUE rb_cRubyVM
Definition: vm.c:365
YARVINSN_intern
@ YARVINSN_intern
Definition: rb_mjit_min_header-2.7.0.h:11995
__nl_item
int __nl_item
Definition: rb_mjit_min_header-2.7.0.h:931
__cygwin_lock_unlock
void __cygwin_lock_unlock(_LOCK_T *)
RUBY_T_ICLASS
@ RUBY_T_ICLASS
Definition: rb_mjit_min_header-2.7.0.h:4350
RB_DEBUG_COUNTER_obj_newobj_slowpath
@ RB_DEBUG_COUNTER_obj_newobj_slowpath
Definition: rb_mjit_min_header-2.7.0.h:11608
rb_data_type_struct
Definition: ruby.h:1148
tm::tm_year
int tm_year
Definition: rb_mjit_min_header-2.7.0.h:1939
__sFILE::_cookie
void * _cookie
Definition: rb_mjit_min_header-2.7.0.h:987
rb_const_source_location_at
VALUE rb_const_source_location_at(VALUE, ID)
Definition: variable.c:2463
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
__tm::__tm_mday
int __tm_mday
Definition: rb_mjit_min_header-2.7.0.h:952
NODE_EVSTR
@ NODE_EVSTR
Definition: rb_mjit_min_header-2.7.0.h:8147
rb_big_modulo
VALUE rb_big_modulo(VALUE, VALUE)
Definition: bignum.c:6103
rb_String
VALUE rb_String(VALUE)
Equivalent to Kernel#String in Ruby.
Definition: object.c:3652
rb_str_concat
VALUE rb_str_concat(VALUE, VALUE)
Definition: string.c:3065
rb_global_variable
Definition: variable.c:301
rb_backtrace_p
int rb_backtrace_p(VALUE obj)
Definition: vm_backtrace.c:446
rb_eException
VALUE rb_eException
Definition: error.c:914
BOP_DIV
@ BOP_DIV
Definition: rb_mjit_min_header-2.7.0.h:9637
rb_execarg::envp_buf
VALUE envp_buf
Definition: internal.h:2033
cosf
float cosf(float)
ruby_posix_signal
void(*)(int) ruby_posix_signal(int, void(*)(int))
Definition: rb_mjit_min_header-2.7.0.h:6023
s2
const char * s2
Definition: rb_mjit_min_header-2.7.0.h:5454
NODE_CLASS
@ NODE_CLASS
Definition: rb_mjit_min_header-2.7.0.h:8164
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
idPow
@ idPow
Definition: rb_mjit_min_header-2.7.0.h:8555
memalign
void * memalign(size_t, size_t)
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:2324
err
int err
Definition: rb_mjit_min_header-2.7.0.h:7352
rb_execarg::invoke
union rb_execarg::@110 invoke
rb_fiber_new
VALUE rb_fiber_new(rb_block_call_func_t, VALUE)
Definition: cont.c:1780
rb_method_definition_struct::original_id
ID original_id
Definition: method.h:179
daemon
int daemon(int nochdir, int noclose)
rb_thread_struct::root_jmpbuf
rb_jmpbuf_t root_jmpbuf
Definition: vm_core.h:986
__mode_t
__uint32_t __mode_t
Definition: rb_mjit_min_header-2.7.0.h:889
copysignf
float copysignf(float, float)
rb_call_data::ci
struct rb_call_info ci
Definition: internal.h:2395
tInitialize_dup
@ tInitialize_dup
Definition: rb_mjit_min_header-2.7.0.h:8631
IC
struct iseq_inline_cache_entry * IC
Definition: rb_mjit_min_header-2.7.0.h:10042
rb_execarg::close_others_do
unsigned close_others_do
Definition: internal.h:2041
st_table::rebuilds_num
unsigned int rebuilds_num
Definition: st.h:83
MEMO::value
const VALUE value
Definition: internal.h:1286
rb_ary_last
VALUE rb_ary_last(int, const VALUE *, VALUE)
Definition: array.c:1677
_Bigint
Definition: rb_mjit_min_header-2.7.0.h:941
YARVINSN_branchunless
@ YARVINSN_branchunless
Definition: rb_mjit_min_header-2.7.0.h:12033
rb_ary_delete_at
VALUE rb_ary_delete_at(VALUE, long)
Definition: array.c:3419
rb_ivar_defined
VALUE rb_ivar_defined(VALUE, ID)
Definition: variable.c:1317
rb_vm_pop_frame
MJIT_STATIC void rb_vm_pop_frame(rb_execution_context_t *ec)
Definition: rb_mjit_min_header-2.7.0.h:12308
clearerr_unlocked
#define clearerr_unlocked(p)
Definition: rb_mjit_min_header-2.7.0.h:1834
_sigcommune::_si_str
char * _si_str
Definition: rb_mjit_min_header-2.7.0.h:2108
rb_execarg::path_env
VALUE path_env
Definition: internal.h:2061
__asm__
int daylight __asm__("_daylight")
feof_unlocked
#define feof_unlocked(p)
Definition: rb_mjit_min_header-2.7.0.h:1832
rb_obj_private_methods
VALUE rb_obj_private_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1395
rb_str_format
VALUE rb_str_format(int, const VALUE *, VALUE)
Definition: sprintf.c:204
rb_iseq_compile_node
VALUE rb_iseq_compile_node(rb_iseq_t *iseq, const NODE *node)
Definition: compile.c:644
pthread_key_t
struct __pthread_key_t * pthread_key_t
__sbuf::_size
int _size
Definition: rb_mjit_min_header-2.7.0.h:976
idNUMPARAM_6
@ idNUMPARAM_6
Definition: rb_mjit_min_header-2.7.0.h:8746
rb_thread_struct::running_time_us
uint32_t running_time_us
Definition: vm_core.h:938
sigfillset
int sigfillset(sigset_t *)
rb_ec_set_raised
int rb_ec_set_raised(rb_execution_context_t *ec)
Definition: thread.c:2344
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
rb_ary_pattern_info::imemo
VALUE imemo
Definition: node.h:457
VM_FRAME_FLAG_BMETHOD
@ VM_FRAME_FLAG_BMETHOD
Definition: rb_mjit_min_header-2.7.0.h:10069
RB_DEBUG_COUNTER_obj_match_under4
@ RB_DEBUG_COUNTER_obj_match_under4
Definition: rb_mjit_min_header-2.7.0.h:11647
fexecve
int fexecve(int __fd, char *const __argv[], char *const __envp[])
_Bigint::_k
int _k
Definition: rb_mjit_min_header-2.7.0.h:944
rb_str_new
#define rb_str_new(str, len)
Definition: rb_mjit_min_header-2.7.0.h:6116
ilogbf
int ilogbf(float)
longjmp
void longjmp(jmp_buf __jmpb, int __retval) __attribute__((__noreturn__))
NODE_KW_ARG
@ NODE_KW_ARG
Definition: rb_mjit_min_header-2.7.0.h:8153
rb_mutex_synchronize
VALUE rb_mutex_synchronize(VALUE mutex, VALUE(*func)(VALUE arg), VALUE arg)
Definition: thread_sync.c:522
psignal
void psignal(int, const char *)
_asnprintf_r
int char char * _asnprintf_r(struct _reent *, char *__restrict, size_t *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
tNOT
@ tNOT
Definition: rb_mjit_min_header-2.7.0.h:8650
rb_thread_alone
int rb_thread_alone(void)
Definition: thread.c:3492
sigaltstack::ss_size
size_t ss_size
Definition: rb_mjit_min_header-2.7.0.h:2303
rb_big_new
VALUE rb_big_new(size_t, int)
Definition: bignum.c:3014
strtoul_l
unsigned long strtoul_l(const char *__restrict, char **__restrict, int, locale_t __loc)
pthread_key_create
int pthread_key_create(pthread_key_t *, void(*)(void *))
stpncpy
#define stpncpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2852
int8_t
__int8_t int8_t
Definition: rb_mjit_min_header-2.7.0.h:1165
lroundf
long int lroundf(float)
idERROR_INFO
@ idERROR_INFO
Definition: rb_mjit_min_header-2.7.0.h:8754
fscanf
int int fscanf(FILE *__restrict, const char *__restrict,...) __attribute__((__format__(__scanf__
rb_method_definition_struct
Definition: method.h:163
rb_math_log
VALUE rb_math_log(int argc, const VALUE *argv)
Definition: math.c:459
rb_cv_get
VALUE rb_cv_get(VALUE, const char *)
Definition: variable.c:3138
scalblnf
float scalblnf(float, long int)
CALL_PUBLIC_KW
@ CALL_PUBLIC_KW
Definition: rb_mjit_min_header-2.7.0.h:17164
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
vm_svar::flags
VALUE flags
Definition: internal.h:1182
__sFILE::_blksize
int _blksize
Definition: rb_mjit_min_header-2.7.0.h:1001
YARVINSN_trace_branchunless
@ YARVINSN_trace_branchunless
Definition: rb_mjit_min_header-2.7.0.h:12136
rb_cloexec_dup2
int rb_cloexec_dup2(int oldfd, int newfd)
Definition: io.c:325
__sFILE::_ur
int _ur
Definition: rb_mjit_min_header-2.7.0.h:997
_atoll_r
long long _atoll_r(struct _reent *, const char *__nptr)
rb_iseq_constant_body::has_opt
unsigned int has_opt
Definition: vm_core.h:353
rb_signal_buff_size
int rb_signal_buff_size(void)
Definition: signal.c:726
ruby_thread_init_stack
void ruby_thread_init_stack(rb_thread_t *th)
Definition: thread.c:647
rb_ary_memsize
size_t rb_ary_memsize(VALUE)
Definition: array.c:816
ilogb
int ilogb(double)
rb_gc_count
size_t rb_gc_count(void)
Definition: gc.c:8711
rb_encdb_dummy
int rb_encdb_dummy(const char *name)
Definition: encoding.c:472
__tzrule_struct::ch
char ch
Definition: rb_mjit_min_header-2.7.0.h:1977
Init_BareVM
void Init_BareVM(void)
Definition: vm.c:3301
rb_obj_id
VALUE rb_obj_id(VALUE)
Definition: gc.c:3770
ruby_sysinit
void ruby_sysinit(int *argc, char ***argv)
Initializes the process for libruby.
Definition: ruby.c:2447
sleep
unsigned sleep(unsigned int __seconds)
rb_eFatal
VALUE rb_eFatal
Definition: error.c:918
rb_vm_struct::global_hooks
rb_hook_list_t global_hooks
Definition: vm_core.h:630
rb_nativethread_lock_initialize
void rb_nativethread_lock_initialize(rb_nativethread_lock_t *lock)
Definition: thread.c:433
rb_iseq_location_struct::node_id
int node_id
Definition: vm_core.h:277
tMin
@ tMin
Definition: rb_mjit_min_header-2.7.0.h:8605
rb_reg_nth_match
VALUE rb_reg_nth_match(int, VALUE)
Definition: re.c:1706
strtod
double strtod(const char *__restrict __n, char **__restrict __end_PTR)
rb_get_coverages
VALUE rb_get_coverages(void)
Definition: thread.c:5477
rb_check_string_type
VALUE rb_check_string_type(VALUE)
Definition: string.c:2314
RUBY_Qundef
#define RUBY_Qundef
Definition: rb_mjit_min_header-2.7.0.h:4310
rb_obj_as_string_result
VALUE rb_obj_as_string_result(VALUE str, VALUE obj)
Definition: string.c:1452
rb_check_typeddata
void * rb_check_typeddata(VALUE obj, const rb_data_type_t *data_type)
Definition: error.c:889
__pthread_rwlock_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1361
__pthread_t
Definition: rb_mjit_min_header-2.7.0.h:1345
rb_output_fs
VALUE rb_output_fs
Definition: intern.h:584
_ftell_r
long _ftell_r(struct _reent *, FILE *)
setenv
int setenv(const char *__string, const char *__value, int __overwrite)
rb_cISeq
VALUE rb_cISeq
Definition: iseq.c:32
rb_str_symname_p
int rb_str_symname_p(VALUE)
Definition: string.c:10695
trunc
double trunc(double)
idAREF
@ idAREF
Definition: rb_mjit_min_header-2.7.0.h:8577
isinfl
int isinfl(long double)
pwrite
ssize_t pwrite(int __fd, const void *__buf, size_t __nbytes, off_t __offset)
rb_iter_break_value
void rb_iter_break_value(VALUE val)
Definition: vm.c:1552
wcstoumax
uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int)
ar_table_struct
Definition: hash.c:349
count
int count
Definition: encoding.c:57
rb_assoc_new
VALUE rb_assoc_new(VALUE, VALUE)
Definition: array.c:896
__int_least16_t
short int __int_least16_t
Definition: rb_mjit_min_header-2.7.0.h:635
atanhl
long double atanhl(long double)
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__
list_node::next
struct list_node * next
Definition: rb_mjit_min_header-2.7.0.h:8973
rb_int_positive_p
int rb_int_positive_p(VALUE num)
Definition: numeric.c:301
rb_fork_ruby
pid_t rb_fork_ruby(int *status)
rb_vm_struct::thgroup_default
VALUE thgroup_default
Definition: vm_core.h:596
rb_require_safe
VALUE rb_require_safe(VALUE, int)
Definition: load.c:1085
rb_singleton_class_clone_and_attach
VALUE rb_singleton_class_clone_and_attach(VALUE obj, VALUE attach)
Definition: class.c:376
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
fputs_unlocked
int fputs_unlocked(const char *__restrict, FILE *__restrict)
YARVINSN_getlocal_WC_0
@ YARVINSN_getlocal_WC_0
Definition: rb_mjit_min_header-2.7.0.h:12067
rb_big_size
size_t rb_big_size(VALUE)
Definition: bignum.c:6778
idMethod_removed
@ idMethod_removed
Definition: rb_mjit_min_header-2.7.0.h:8695
_ungetc_r
int _ungetc_r(struct _reent *, int, FILE *)
rb_thread_fd_close
void rb_thread_fd_close(int)
Definition: thread.c:2386
ruby_vm_t
typedefRUBY_SYMBOL_EXPORT_BEGIN struct rb_vm_struct ruby_vm_t
Definition: vm.h:31
NODE_DSTR
@ NODE_DSTR
Definition: rb_mjit_min_header-2.7.0.h:8144
rb_get_backtrace
VALUE rb_get_backtrace(VALUE info)
Definition: error.c:1229
__dev_t
__uint32_t __dev_t
Definition: rb_mjit_min_header-2.7.0.h:846
modff
float modff(float, float *)
rb_iseq_constant_body::iseq_insn_info::size
unsigned int size
Definition: vm_core.h:405
RUBY_NUM_ROUND_HALF_UP
@ RUBY_NUM_ROUND_HALF_UP
Definition: rb_mjit_min_header-2.7.0.h:7442
VM_INSTRUCTION_SIZE
@ VM_INSTRUCTION_SIZE
Definition: rb_mjit_min_header-2.7.0.h:12176
DEFINED_YIELD
@ DEFINED_YIELD
Definition: rb_mjit_min_header-2.7.0.h:10888
rb_reg_match_pre
VALUE rb_reg_match_pre(VALUE)
Definition: re.c:1749
MISSING_SUPER
@ MISSING_SUPER
Definition: rb_mjit_min_header-2.7.0.h:7848
idProc
@ idProc
Definition: rb_mjit_min_header-2.7.0.h:8704
putw
int putw(int, FILE *)
rb_callable_method_entry
const rb_callable_method_entry_t * rb_callable_method_entry(VALUE klass, ID id)
Definition: vm_method.c:878
rb_rescue2
VALUE rb_rescue2(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE,...)
An equivalent of rescue clause.
Definition: eval.c:961
RB_DEBUG_COUNTER_mjit_frame_JT2JT
@ RB_DEBUG_COUNTER_mjit_frame_JT2JT
Definition: rb_mjit_min_header-2.7.0.h:11690
tTOKEN_LOCAL_BEGIN
@ tTOKEN_LOCAL_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8603
RUBY_FLONUM_FLAG
@ RUBY_FLONUM_FLAG
Definition: rb_mjit_min_header-2.7.0.h:4303
imaxdiv_t::quot
intmax_t quot
Definition: rb_mjit_min_header-2.7.0.h:3187
__eprintf
void __eprintf(const char *, const char *, unsigned int, const char *)
rb_find_file_ext_safe
int rb_find_file_ext_safe(VALUE *, const char *const *, int)
Definition: file.c:6263
strcasecmp
int strcasecmp(const char *, const char *) __attribute__((__pure__))
fgets_unlocked
char * fgets_unlocked(char *__restrict, int, FILE *__restrict)
YARVINSN_trace_opt_size
@ YARVINSN_trace_opt_size
Definition: rb_mjit_min_header-2.7.0.h:12161
rb_scope_visi_struct
Definition: method.h:35
NODE_DXSTR
@ NODE_DXSTR
Definition: rb_mjit_min_header-2.7.0.h:8146
rb_close_before_exec
void rb_close_before_exec(int lowfd, int maxhint, VALUE noclose_fds)
sinhf
float sinhf(float)
VM_DEFINECLASS_TYPE_CLASS
@ VM_DEFINECLASS_TYPE_CLASS
Definition: rb_mjit_min_header-2.7.0.h:9932
RObject::ivptr
VALUE * ivptr
Definition: ruby.h:927
remainder
double remainder(double, double)
uint
unsigned int uint
Definition: rb_mjit_min_header-2.7.0.h:1297
DEFINED_CVAR
@ DEFINED_CVAR
Definition: rb_mjit_min_header-2.7.0.h:10885
pthread_exit
void pthread_exit(void *) __attribute__((__noreturn__))
sched_param::sched_priority
int sched_priority
Definition: rb_mjit_min_header-2.7.0.h:9166
rb_marshal_dump
VALUE rb_marshal_dump(VALUE, VALUE)
Definition: marshal.c:2310
rb_mErrno
VALUE rb_mErrno
Definition: error.c:942
rb_mutex_locked_p
VALUE rb_mutex_locked_p(VALUE mutex)
Definition: thread_sync.c:177
rb_method_refined_t
struct rb_method_refined_struct rb_method_refined_t
RArray::as
union RArray::@97 as
rb_str_tmp_frozen_acquire
VALUE rb_str_tmp_frozen_acquire(VALUE str)
Definition: string.c:1210
tTo_sym
@ tTo_sym
Definition: rb_mjit_min_header-2.7.0.h:8635
erfcf
float erfcf(float)
rb_lastline_get
VALUE rb_lastline_get(void)
Definition: vm.c:1316
bcmp
int bcmp(const void *, const void *, size_t) __attribute__((__pure__))
rb_control_frame_struct::ep
const VALUE * ep
Definition: vm_core.h:765
mktemp
char * mktemp(char *) __attribute__((__deprecated__("the use of `mktemp' is dangerous
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.0.h:2115
rb_load_file_str
void * rb_load_file_str(VALUE)
Definition: ruby.c:2187
rb_data_type_struct::data
void * data
Definition: ruby.h:1159
getentropy
int getentropy(void *, size_t)
__socklen_t
int __socklen_t
Definition: rb_mjit_min_header-2.7.0.h:862
rb_is_local_name
int rb_is_local_name(VALUE name)
Definition: symbol.c:1068
__pid_t
int __pid_t
Definition: rb_mjit_min_header-2.7.0.h:887
pthread_barrierattr_init
int pthread_barrierattr_init(pthread_barrierattr_t *)
tDiv
@ tDiv
Definition: rb_mjit_min_header-2.7.0.h:8653
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.0.h:11724
rb_check_copyable
void rb_check_copyable(VALUE obj, VALUE orig)
Definition: error.c:3047
__tm::__tm_yday
int __tm_yday
Definition: rb_mjit_min_header-2.7.0.h:956
rb_vm_struct::ubf_async_safe
volatile int ubf_async_safe
Definition: vm_core.h:600
rb_num2fix
VALUE rb_num2fix(VALUE)
Definition: numeric.c:3083
rb_serial_t
unsigned long long rb_serial_t
Definition: rb_mjit_min_header-2.7.0.h:6970
can_be_svar
int can_be_svar
Definition: rb_mjit_min_header-2.7.0.h:12502
int_fast16_t
long int int_fast16_t
Definition: rb_mjit_min_header-2.7.0.h:2924
__sFILE::_data
struct _reent * _data
Definition: rb_mjit_min_header-2.7.0.h:1003
rb_hash_set_pair
VALUE rb_hash_set_pair(VALUE hash, VALUE pair)
Definition: hash.c:3257
rb_ary_ptr_use_end
void rb_ary_ptr_use_end(VALUE ary)
Definition: array.c:235
rb_vm_protect_tag::prev
struct rb_vm_protect_tag * prev
Definition: vm_core.h:813
_sigcommune::_si_fd
int _si_fd
Definition: rb_mjit_min_header-2.7.0.h:2104
pthread_once_t
Definition: rb_mjit_min_header-2.7.0.h:1354
cmp_opt_String
@ cmp_opt_String
Definition: rb_mjit_min_header-2.7.0.h:7178
RB_DEBUG_COUNTER_mjit_frame_JT2VM
@ RB_DEBUG_COUNTER_mjit_frame_JT2VM
Definition: rb_mjit_min_header-2.7.0.h:11691
rb_const_entry_struct::file
VALUE file
Definition: constant.h:35
rb_ast_delete_node
void rb_ast_delete_node(rb_ast_t *, NODE *n)
Definition: node.c:1211
rb_float_new
#define rb_float_new(d)
Definition: rb_mjit_min_header-2.7.0.h:7581
rb_eEncCompatError
VALUE rb_eEncCompatError
Definition: error.c:929
RNode::u3
union RNode::@124 u3
_sprintf_r
int int int int int int _sprintf_r(struct _reent *, char *__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
rb_thread_run
VALUE rb_thread_run(VALUE)
Definition: thread.c:2587
RB_DEBUG_COUNTER_ccf_zsuper
@ RB_DEBUG_COUNTER_ccf_zsuper
Definition: rb_mjit_min_header-2.7.0.h:11554
rb_rational_num
VALUE rb_rational_num(VALUE rat)
Definition: rational.c:1960
intptr_t
int intptr_t
Definition: win32.h:90
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))
tTo_i
@ tTo_i
Definition: rb_mjit_min_header-2.7.0.h:8641
node_buffer_struct
Definition: node.c:1120
rb_keyword_given_p
int rb_keyword_given_p(void)
Definition: eval.c:910
method_optimized_type
method_optimized_type
Definition: method.h:156
readlinkat
ssize_t readlinkat(int __dirfd1, const char *__restrict __path, char *__restrict __buf, size_t __buflen)
RUBY_Qfalse
#define RUBY_Qfalse
Definition: rb_mjit_min_header-2.7.0.h:4307
__ssp_real_mbstowcs
size_t __ssp_real_mbstowcs(wchar_t *__buf, const char *__src, size_t __n) __asm__("" "mbstowcs")
RB_DEBUG_COUNTER_obj_imemo_env
@ RB_DEBUG_COUNTER_obj_imemo_env
Definition: rb_mjit_min_header-2.7.0.h:11664
rb_builtin_function::argc
const int argc
Definition: builtin.h:9
rb_memerror
void rb_memerror(void)
Definition: gc.c:9578
RB_DEBUG_COUNTER_lvar_get
@ RB_DEBUG_COUNTER_lvar_get
Definition: rb_mjit_min_header-2.7.0.h:11587
rb_eEINPROGRESS
VALUE rb_eEINPROGRESS
Definition: error.c:56
idMethod_undefined
@ idMethod_undefined
Definition: rb_mjit_min_header-2.7.0.h:8697
rb_stdio_set_default_encoding
void rb_stdio_set_default_encoding(void)
Definition: io.c:11758
rb_funcall_with_block
VALUE rb_funcall_with_block(VALUE, ID, int, const VALUE *, VALUE)
Definition: vm_eval.c:1050
drem
double drem(double, double)
fiscanf
int int int int int int int int char char int int int fiscanf(FILE *, const char *,...) __attribute__((__format__(__scanf__
rb_gvar_var_setter
rb_gvar_setter_t rb_gvar_var_setter
Definition: rb_mjit_min_header-2.7.0.h:5106
rb_method_entry_struct
Definition: method.h:51
rb_iseq_struct::body
struct rb_iseq_constant_body * body
Definition: vm_core.h:460
rb_subclass_entry
Definition: internal.h:998
rb_gc_disable_no_rest
VALUE rb_gc_disable_no_rest(void)
Definition: gc.c:9225
rb_gc_mark_movable
void rb_gc_mark_movable(VALUE)
Definition: gc.c:5206
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
rb_thread_stop
VALUE rb_thread_stop(void)
Definition: thread.c:2596
strchr
char * strchr(const char *, int)
Definition: strchr.c:8
tm::tm_yday
int tm_yday
Definition: rb_mjit_min_header-2.7.0.h:1941
lldiv_t::quot
long long int quot
Definition: rb_mjit_min_header-2.7.0.h:2557
rb_mark_hash
void rb_mark_hash(struct st_table *)
Definition: gc.c:4862
rb_random_int32
unsigned int rb_random_int32(VALUE rnd)
Definition: random.c:835
rb_int_div
VALUE rb_int_div(VALUE x, VALUE y)
Definition: numeric.c:3816
rb_cBinding
VALUE rb_cBinding
Definition: ruby.h:2015
iseq_catch_table_entry::sp
unsigned int sp
Definition: iseq.h:252
wcstoimax
intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int)
idTo_sym
@ idTo_sym
Definition: rb_mjit_min_header-2.7.0.h:8716
RStruct
Definition: internal.h:942
RB_DEBUG_COUNTER_obj_imemo_ast
@ RB_DEBUG_COUNTER_obj_imemo_ast
Definition: rb_mjit_min_header-2.7.0.h:11666
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
rb_copy_generic_ivar
void rb_copy_generic_ivar(VALUE, VALUE)
Definition: variable.c:1447
rb_snum_t
signed long rb_snum_t
Definition: rb_mjit_min_header-2.7.0.h:9421
timer_t
__timer_t timer_t
Definition: rb_mjit_min_header-2.7.0.h:1338
rb_ast_memsize
size_t rb_ast_memsize(const rb_ast_t *)
Definition: node.c:1375
rb_st_cleanup_safe
void rb_st_cleanup_safe(st_table *, st_data_t)
_fpurge_r
int int _fpurge_r(struct _reent *, FILE *)
idNUMPARAM_2
@ idNUMPARAM_2
Definition: rb_mjit_min_header-2.7.0.h:8742
rb_jmpbuf_t
void * rb_jmpbuf_t[5]
Definition: rb_mjit_min_header-2.7.0.h:9816
tTOKEN_CLASS_BEGIN
@ tTOKEN_CLASS_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8679
stat::st_gid
gid_t st_gid
Definition: rb_mjit_min_header-2.7.0.h:2391
defined_type
defined_type
Definition: iseq.h:283
_mkdtemp_r
char * _mkdtemp_r(struct _reent *, char *)
ruby_mimfree
void ruby_mimfree(void *ptr)
Definition: gc.c:10217
tCall
@ tCall
Definition: rb_mjit_min_header-2.7.0.h:8646
lrintl
long int lrintl(long double)
tgammaf
float tgammaf(float)
iseq_compile_data::catch_table_ary
const VALUE catch_table_ary
Definition: iseq.h:95
ruby_vminsn_type
ruby_vminsn_type
Definition: rb_mjit_min_header-2.7.0.h:11969
rb_iseq_constant_body::has_kw
unsigned int has_kw
Definition: vm_core.h:356
idBt
@ idBt
Definition: rb_mjit_min_header-2.7.0.h:8725
rb_hash_default_value
VALUE rb_hash_default_value(VALUE hash, VALUE key)
Definition: hash.c:1917
RUBY_T_COMPLEX
@ RUBY_T_COMPLEX
Definition: rb_mjit_min_header-2.7.0.h:4340
timespec
Definition: missing.h:60
VM_METHOD_TYPE_CFUNC
@ VM_METHOD_TYPE_CFUNC
Definition: rb_mjit_min_header-2.7.0.h:8829
MISSING_MISSING
@ MISSING_MISSING
Definition: rb_mjit_min_header-2.7.0.h:7849
YARVINSN_trace_opt_setinlinecache
@ YARVINSN_trace_opt_setinlinecache
Definition: rb_mjit_min_header-2.7.0.h:12139
rb_stdout
VALUE rb_stdout
Definition: rb_mjit_min_header-2.7.0.h:5324
sigevent::sigev_notify
int sigev_notify
Definition: rb_mjit_min_header-2.7.0.h:2090
RBignum::ary
BDIGIT ary[BIGNUM_EMBED_LEN_MAX]
Definition: internal.h:756
pthread_condattr_destroy
int pthread_condattr_destroy(pthread_condattr_t *)
idMINUS
@ idMINUS
Definition: rb_mjit_min_header-2.7.0.h:8558
_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__
ldiv_t::rem
long rem
Definition: rb_mjit_min_header-2.7.0.h:2553
idBACKREF
@ idBACKREF
Definition: rb_mjit_min_header-2.7.0.h:8753
NODE_OP_ASGN2
@ NODE_OP_ASGN2
Definition: rb_mjit_min_header-2.7.0.h:8114
_reent::_cvtlen
int _cvtlen
Definition: rb_mjit_min_header-2.7.0.h:1074
fill_values_arg::vals
VALUE * vals
Definition: vm_args.c:558
rb_iseq_coverage
VALUE rb_iseq_coverage(const rb_iseq_t *iseq)
Definition: iseq.c:1086
ST_CONTINUE
@ ST_CONTINUE
Definition: rb_mjit_min_header-2.7.0.h:5390
native_thread_data_struct
Definition: thread_pthread.h:23
jrand48
long jrand48(unsigned short[3])
rb_check_hash_type
VALUE rb_check_hash_type(VALUE)
Definition: hash.c:1825
succ_index_table
Definition: iseq.c:3416
_tmpnam_r
char * _tmpnam_r(struct _reent *, char *)
rb_write_error2
void rb_write_error2(const char *, long)
Definition: io.c:7911
__ssp_real_fgets
char * __ssp_real_fgets(char *__restrict __buf, int __len, FILE *__fp) __asm__("" "fgets")
arg_setup_method
@ arg_setup_method
Definition: rb_mjit_min_header-2.7.0.h:13522
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
sigpending
int sigpending(sigset_t *)
rb_block::symbol
VALUE symbol
Definition: vm_core.h:754
rb_iseq_constant_body::iseq_size
unsigned int iseq_size
Definition: vm_core.h:324
rb_ary_new_from_values
VALUE rb_ary_new_from_values(long n, const VALUE *elts)
Definition: array.c:762
VM_SVAR_EXTRA_START
@ VM_SVAR_EXTRA_START
Definition: rb_mjit_min_header-2.7.0.h:10039
st_table::entries_bound
st_index_t entries_bound
Definition: st.h:92
rb_gvar_val_marker
rb_gvar_marker_t rb_gvar_val_marker
Definition: rb_mjit_min_header-2.7.0.h:5104
YARVINSN_jump
@ YARVINSN_jump
Definition: rb_mjit_min_header-2.7.0.h:12031
RBasicRaw
Definition: internal.h:1976
rb_num_negative_p
int rb_num_negative_p(VALUE)
Definition: numeric.c:313
FPE_INTOVF
#define FPE_INTOVF
Definition: rb_mjit_min_header-2.7.0.h:2197
_types_fd_set
struct _types_fd_set _types_fd_set
rb_exc_fatal
void rb_exc_fatal(VALUE mesg)
Raises a fatal error in the current thread.
Definition: eval.c:683
__fdlibm_ieee
@ __fdlibm_ieee
Definition: rb_mjit_min_header-2.7.0.h:3893
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_str_resize
VALUE rb_str_resize(VALUE, long)
Definition: string.c:2709
y0f
float y0f(float)
rb_ast_dispose
void rb_ast_dispose(rb_ast_t *)
Definition: node.c:1389
rb_class_detach_subclasses
void rb_class_detach_subclasses(VALUE)
Definition: class.c:133
rb_classext_struct::iv_index_tbl
struct st_table * iv_index_tbl
Definition: internal.h:1021
NODE_FOR
@ NODE_FOR
Definition: rb_mjit_min_header-2.7.0.h:8093
strncpy
#define strncpy(dst, src, len)
Definition: rb_mjit_min_header-2.7.0.h:2855
ftrylockfile
int ftrylockfile(FILE *)
ruby_vsnprintf
int int ruby_vsnprintf(char *str, size_t n, char const *fmt, va_list ap)
Definition: sprintf.c:1004
imemo_tmpbuf
@ imemo_tmpbuf
Definition: rb_mjit_min_header-2.7.0.h:7056
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)
rb_gvar_is_traced
_Bool rb_gvar_is_traced(const struct rb_global_entry *)
Definition: variable.c:714
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
RUBY_FL_DUPPED
@ RUBY_FL_DUPPED
Definition: ruby.h:882
RB_DEBUG_COUNTER_obj_str_fstr
@ RB_DEBUG_COUNTER_obj_str_fstr
Definition: rb_mjit_min_header-2.7.0.h:11620
rb_filesystem_str_new_cstr
VALUE rb_filesystem_str_new_cstr(const char *)
Definition: string.c:1117
rb_atomic_t
int rb_atomic_t
Definition: ruby_atomic.h:124
VM_SVAR_LASTLINE
@ VM_SVAR_LASTLINE
Definition: rb_mjit_min_header-2.7.0.h:10037
RClass::class_serial
rb_serial_t class_serial
Definition: internal.h:1054
_gets_r
char * _gets_r(struct _reent *, char *)
__memset_chk
void * __memset_chk(void *, int, size_t, size_t)
jnf
float jnf(int, float)
iseq_compile_data::last_line
int last_line
Definition: iseq.h:112
rb_block
Definition: vm_core.h:751
Init_vm_backtrace
void Init_vm_backtrace(void)
Definition: vm_backtrace.c:1045
rb_complex_mul
VALUE rb_complex_mul(VALUE x, VALUE y)
Definition: complex.c:872
powf
float powf(float, float)
__pthread_rwlockattr_t
Definition: rb_mjit_min_header-2.7.0.h:1362
vm_offset_t
unsigned long vm_offset_t
Definition: rb_mjit_min_header-2.7.0.h:1410
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
DEFINED_CONST_FROM
@ DEFINED_CONST_FROM
Definition: rb_mjit_min_header-2.7.0.h:10898
pthread_attr_t
struct __pthread_attr_t * pthread_attr_t
__snprintf_chk
int int int __snprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
parser_params
Definition: ripper.c:270
__tzinfo_struct::__tznorth
int __tznorth
Definition: rb_mjit_min_header-2.7.0.h:1987
rb_sym_to_s
VALUE rb_sym_to_s(VALUE)
Definition: string.c:10793
rb_unblock_callback::arg
void * arg
Definition: vm_core.h:818
qsort
void qsort(void *__base, size_t __nmemb, size_t __size, __compar_fn_t _compar)
execl
int execl(const char *__path, const char *,...)
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
rb_mod_private_constant
VALUE rb_mod_private_constant(int argc, const VALUE *argv, VALUE obj)
Definition: variable.c:2971
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_sym2str
VALUE rb_sym2str(VALUE)
Definition: symbol.c:784
YARVINSN_trace_opt_call_c_function
@ YARVINSN_trace_opt_call_c_function
Definition: rb_mjit_min_header-2.7.0.h:12166
rb_execarg::exception_given
unsigned exception_given
Definition: internal.h:2047
_srand48_r
void _srand48_r(struct _reent *, long)
__chk_fail
void __chk_fail(void) __attribute__((__noreturn__))
rb_const_lookup
rb_const_entry_t * rb_const_lookup(VALUE klass, ID id)
Definition: variable.c:3341
rb_execarg::chdir_given
unsigned chdir_given
Definition: internal.h:2042
rb_int_powm
VALUE rb_int_powm(int const argc, VALUE *const argv, VALUE const num)
Definition: bignum.c:7112
rb_copy_wb_protected_attribute
void rb_copy_wb_protected_attribute(VALUE dest, VALUE obj)
Definition: gc.c:6938
rb_objspace_set_event_hook
void rb_objspace_set_event_hook(const rb_event_flag_t event)
Definition: gc.c:2080
rb_ivar_get
VALUE rb_ivar_get(VALUE, ID)
Definition: variable.c:1070
ST_REPLACE
@ ST_REPLACE
Definition: rb_mjit_min_header-2.7.0.h:5390
rb_thread_struct::interrupt_lock
rb_nativethread_lock_t interrupt_lock
Definition: vm_core.h:956
NODE_OR
@ NODE_OR
Definition: rb_mjit_min_header-2.7.0.h:8104
mktime
time_t mktime(struct tm *_timeptr)
va_list
__gnuc_va_list va_list
Definition: rb_mjit_min_header-2.7.0.h:836
VM_CALL_ARGS_SIMPLE_bit
@ VM_CALL_ARGS_SIMPLE_bit
Definition: rb_mjit_min_header-2.7.0.h:10009
NODE_YIELD
@ NODE_YIELD
Definition: rb_mjit_min_header-2.7.0.h:8130
uint_least32_t
__uint_least32_t uint_least32_t
Definition: rb_mjit_min_header-2.7.0.h:2916
rb_args_info::block_arg
ID block_arg
Definition: node.h:441
truncl
long double truncl(long double)
getchar_unlocked
#define getchar_unlocked()
Definition: rb_mjit_min_header-2.7.0.h:1849
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
strerror_l
char * strerror_l(int, locale_t)
stat::st_blksize
blksize_t st_blksize
Definition: rb_mjit_min_header-2.7.0.h:2397
u_short
unsigned short u_short
Definition: rb_mjit_min_header-2.7.0.h:1289
rb_ary_clear
VALUE rb_ary_clear(VALUE)
Definition: array.c:3862
rb_iseq_constant_body::ci_kw_size
unsigned int ci_kw_size
Definition: vm_core.h:438
rb_node_case_when_optimizable_literal
VALUE rb_node_case_when_optimizable_literal(const NODE *const node)
Definition: compile.c:4288
rb_ll2inum
VALUE rb_ll2inum(long long)
_getchar_r
int _getchar_r(struct _reent *)
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
tNUMPARAM_1
@ tNUMPARAM_1
Definition: rb_mjit_min_header-2.7.0.h:8660
rb_iseq_constant_body::required_num
int required_num
Definition: vm_core.h:391
rb_cStruct
VALUE rb_cStruct
Definition: ruby.h:2045
u_int8_t
__uint8_t u_int8_t
Definition: rb_mjit_min_header-2.7.0.h:1157
rb_define_hooked_variable
void rb_define_hooked_variable(const char *, VALUE *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Define a function-backended global variable.
Definition: cxxanyargs.hpp:106
_reent::__cleanup
void(* __cleanup)(struct _reent *)
Definition: rb_mjit_min_header-2.7.0.h:1069
rb_mod_include_p
VALUE rb_mod_include_p(VALUE, VALUE)
Definition: class.c:1067
ruby_static_id_signo
ID ruby_static_id_signo
Definition: eval.c:36
iseq
const rb_iseq_t * iseq
Definition: rb_mjit_min_header-2.7.0.h:13504
rb_cloexec_pipe
int rb_cloexec_pipe(int fildes[2])
Definition: io.c:378
cookie_read_function_t
ssize_t cookie_read_function_t(void *__cookie, char *__buf, size_t __n)
Definition: rb_mjit_min_header-2.7.0.h:1785
rb_thread_struct::pending_interrupt_queue
VALUE pending_interrupt_queue
Definition: vm_core.h:952
int_fast32_t
long int int_fast32_t
Definition: rb_mjit_min_header-2.7.0.h:2927
rb_gv_get
VALUE rb_gv_get(const char *)
Definition: variable.c:680
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
fminf
float fminf(float, float)
rb_define_singleton_method
void rb_define_singleton_method(VALUE, const char *, VALUE(*)(), int)
rb_class_ivar_set
int rb_class_ivar_set(VALUE klass, ID vid, VALUE value)
Definition: variable.c:3316
iseq_compile_data::ci_index
unsigned int ci_index
Definition: iseq.h:115
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_iseq_constant_body::num
int num
Definition: vm_core.h:390
YARVINSN_trace_setlocal
@ YARVINSN_trace_setlocal
Definition: rb_mjit_min_header-2.7.0.h:12075
NODE_BACK_REF
@ NODE_BACK_REF
Definition: rb_mjit_min_header-2.7.0.h:8138
rb_iseq_constant_body::catch_except_p
char catch_except_p
Definition: vm_core.h:441
YARVINSN_trace_opt_ge
@ YARVINSN_trace_opt_ge
Definition: rb_mjit_min_header-2.7.0.h:12152
_glue::_iobs
__FILE * _iobs
Definition: rb_mjit_min_header-2.7.0.h:1043
rb_math_hypot
VALUE rb_math_hypot(VALUE, VALUE)
rb_str_split
VALUE rb_str_split(VALUE, const char *)
Definition: string.c:8116
rb_exec_recursive_paired
VALUE rb_exec_recursive_paired(VALUE(*)(VALUE, VALUE, int), VALUE, VALUE, VALUE)
Definition: thread.c:5086
BOP_SIZE
@ BOP_SIZE
Definition: rb_mjit_min_header-2.7.0.h:9647
rb_method_cfunc_struct
Definition: method.h:131
NODE_DREGX
@ NODE_DREGX
Definition: rb_mjit_min_header-2.7.0.h:8148
_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))
DEFINED_REF
@ DEFINED_REF
Definition: rb_mjit_min_header-2.7.0.h:10896
rb_obj_setup
VALUE rb_obj_setup(VALUE obj, VALUE klass, VALUE type)
Fills common (RBasic) fields in obj.
Definition: object.c:112
strtoll_l
long long strtoll_l(const char *__restrict, char **__restrict, int, locale_t)
ruby_error_stackfatal
@ ruby_error_stackfatal
Definition: rb_mjit_min_header-2.7.0.h:9629
pthread_rwlock_trywrlock
int pthread_rwlock_trywrlock(pthread_rwlock_t *rwlock)
erff
float erff(float)
at_quick_exit
int at_quick_exit(void(*)(void))
rb_call_info
Definition: internal.h:2387
rb_ivar_count
st_index_t rb_ivar_count(VALUE)
Definition: variable.c:1511
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
clock_getres
int clock_getres(clockid_t clock_id, struct timespec *res)
Definition: win32.c:4652
rb_iseq_remove_local_tracepoint_recursively
int rb_iseq_remove_local_tracepoint_recursively(const rb_iseq_t *iseq, VALUE tpval)
Definition: iseq.c:3258
rb_int_uminus
VALUE rb_int_uminus(VALUE num)
Definition: numeric.c:3479
rb_st_get_key
int rb_st_get_key(st_table *, st_data_t, st_data_t *)
rb_ary_free
void rb_ary_free(VALUE)
Definition: array.c:786
rb_num_get_rounding_option
enum ruby_num_rounding_mode rb_num_get_rounding_option(VALUE opts)
Definition: numeric.c:200
rb_ensure
VALUE rb_ensure(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE), VALUE)
An equivalent to ensure clause.
Definition: eval.c:1114
RMODULE_IS_REFINEMENT
#define RMODULE_IS_REFINEMENT
rb_thread_stop_timer_thread
void rb_thread_stop_timer_thread(void)
Definition: thread.c:4417
rb_global_vm_lock_struct::timer
const struct rb_thread_struct * timer
Definition: thread_pthread.h:65
setproctitle
void setproctitle(const char *fmt,...)
Definition: setproctitle.c:139
YARVINSN_opt_and
@ YARVINSN_opt_and
Definition: rb_mjit_min_header-2.7.0.h:12051
rb_thread_struct::vmlt_node
struct list_node vmlt_node
Definition: vm_core.h:911
varc
const VALUE int int int int int int VALUE char int varc
Definition: rb_mjit_min_header-2.7.0.h:6462
RComplex::imag
VALUE imag
Definition: internal.h:808
VM_FRAME_MAGIC_CLASS
@ VM_FRAME_MAGIC_CLASS
Definition: rb_mjit_min_header-2.7.0.h:10059
rb_method_entry_clone
const rb_method_entry_t * rb_method_entry_clone(const rb_method_entry_t *me)
Definition: vm_method.c:406
rb_is_absolute_path
int rb_is_absolute_path(const char *)
Definition: file.c:6089
rb_iseq_constant_body::iseq_insn_info::positions
unsigned int * positions
Definition: vm_core.h:404
__restrict
#define __restrict
Definition: rb_mjit_min_header-2.7.0.h:742
rb_gc_for_fd
int rb_gc_for_fd(int err)
Definition: io.c:953
rb_ary_tmp_new
VALUE rb_ary_tmp_new(long)
Definition: array.c:768
NODE_BEGIN
@ NODE_BEGIN
Definition: rb_mjit_min_header-2.7.0.h:8099
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
__uint_least64_t
long unsigned int __uint_least64_t
Definition: rb_mjit_min_header-2.7.0.h:642
rb_vm_struct::fork_gen
rb_serial_t fork_gen
Definition: vm_core.h:590
cosl
long double cosl(long double)
ruby_float_step
int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl, int allow_endless)
Definition: numeric.c:2524
rb_builtin_class_name
const char * rb_builtin_class_name(VALUE x)
Definition: error.c:797
YARVINSN_trace_opt_aset_with
@ YARVINSN_trace_opt_aset_with
Definition: rb_mjit_min_header-2.7.0.h:12158
ruby_vm_special_exception_copy
MJIT_STATIC VALUE ruby_vm_special_exception_copy(VALUE)
Definition: rb_mjit_min_header-2.7.0.h:12219
YARVINSN_invokeblock
@ YARVINSN_invokeblock
Definition: rb_mjit_min_header-2.7.0.h:12028
YARVINSN_trace_newrange
@ YARVINSN_trace_newrange
Definition: rb_mjit_min_header-2.7.0.h:12107
rb_big_divrem_gmp
VALUE rb_big_divrem_gmp(VALUE x, VALUE y)
RFile::basic
struct RBasic basic
Definition: ruby.h:1135
NODE_WHILE
@ NODE_WHILE
Definition: rb_mjit_min_header-2.7.0.h:8090
__int_least64_t
long int __int_least64_t
Definition: rb_mjit_min_header-2.7.0.h:641
fputs
int fputs(const char *__restrict, FILE *__restrict)
THREAD_STOPPED
@ THREAD_STOPPED
Definition: rb_mjit_min_header-2.7.0.h:9812
rb_code_location_struct::end_pos
rb_code_position_t end_pos
Definition: node.h:137
rb_code_location_struct
Definition: node.h:135
rb_hash_resurrect
VALUE rb_hash_resurrect(VALUE hash)
Definition: hash.c:1548
rb_io_puts
VALUE rb_io_puts(int, const VALUE *, VALUE)
Definition: io.c:7747
pthread_rwlockattr_destroy
int pthread_rwlockattr_destroy(pthread_rwlockattr_t *rwlockattr)
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__
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_rational_new
VALUE rb_rational_new(VALUE, VALUE)
Definition: rational.c:1945
rb_hook_list_free
void rb_hook_list_free(rb_hook_list_t *hooks)
Definition: vm_trace.c:66
asinf
float asinf(float)
gen_ivtbl
Definition: variable.h:4
rb_st_locale_insensitive_strcasecmp
int rb_st_locale_insensitive_strcasecmp(const char *s1, const char *s2)
rb_cNameErrorMesg
VALUE rb_cNameErrorMesg
Definition: error.c:934
rb_define_virtual_variable
void rb_define_virtual_variable(const char *, rb_gvar_getter_t *, rb_gvar_setter_t *)
Define a function-backended global variable.
Definition: cxxanyargs.hpp:59
rb_iseq_constant_body::has_block
unsigned int has_block
Definition: vm_core.h:358
vm_ifunc_argc
Definition: internal.h:1205
rb_num_to_dbl
double rb_num_to_dbl(VALUE val)
Definition: object.c:3576
rb_execution_context_struct::root_svar
VALUE root_svar
Definition: vm_core.h:866
lldiv_t::rem
long long int rem
Definition: rb_mjit_min_header-2.7.0.h:2558
ceil
double ceil(double)
strlcpy
size_t strlcpy(char *, const char *, size_t)
Definition: strlcpy.c:29
RB_DEBUG_COUNTER_obj_struct_embed
@ RB_DEBUG_COUNTER_obj_struct_embed
Definition: rb_mjit_min_header-2.7.0.h:11640
rb_imemo_tmpbuf_struct
Definition: internal.h:1231
rb_big_unpack
VALUE rb_big_unpack(unsigned long *buf, long num_longs)
Definition: bignum.c:3223
idName
@ idName
Definition: rb_mjit_min_header-2.7.0.h:8738
rb_file_const
void rb_file_const(const char *, VALUE)
Definition: file.c:6083
rb_ast_body_struct::root
const NODE * root
Definition: node.h:395
ttyname_r
int ttyname_r(int, char *, size_t)
rb_thread_struct::keeping_mutexes
struct rb_mutex_struct * keeping_mutexes
Definition: vm_core.h:959
setsid
pid_t setsid(void)
DEFINED_FUNC
@ DEFINED_FUNC
Definition: rb_mjit_min_header-2.7.0.h:10897
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)
rb_file_expand_path
VALUE rb_file_expand_path(VALUE, VALUE)
Definition: file.c:4018
__cygwin_lock_init_recursive
void __cygwin_lock_init_recursive(_LOCK_T *)
__loff_t
_off64_t __loff_t
Definition: rb_mjit_min_header-2.7.0.h:892
rb_call_info_with_kwarg::ci
struct rb_call_info ci
Definition: vm_core.h:246
rb_big2str_gmp
VALUE rb_big2str_gmp(VALUE x, int base)
_vasniprintf_r
int char * _vasniprintf_r(struct _reent *, char *, size_t *, const char *, __gnuc_va_list) __attribute__((__format__(__printf__
RB_DEBUG_COUNTER_obj_symbol
@ RB_DEBUG_COUNTER_obj_symbol
Definition: rb_mjit_min_header-2.7.0.h:11661
rb_captured_block::ifunc
const struct vm_ifunc * ifunc
Definition: vm_core.h:732
rb_set_coverages
void rb_set_coverages(VALUE, int, VALUE)
Definition: thread.c:5489
rb_imemo_tmpbuf_struct::flags
VALUE flags
Definition: internal.h:1232
getwd
char * getwd(char *__buf)
erfcl
long double erfcl(long double)
nexttoward
double nexttoward(double, long double)
exc
const rb_iseq_t const VALUE exc
Definition: rb_mjit_min_header-2.7.0.h:13504
method_missing_reason
method_missing_reason
Definition: internal.h:2329
vsnprintf
#define vsnprintf(str, len, fmt, ap)
Definition: rb_mjit_min_header-2.7.0.h:6590
strtoul
unsigned long strtoul(const char *__restrict __n, char **__restrict __end_PTR, int __base)
_on_exit_args
Definition: rb_mjit_min_header-2.7.0.h:960
__pthread_key_t::__dummy
char __dummy
Definition: rb_mjit_min_header-2.7.0.h:1347
rb_set_class_path_string
void rb_set_class_path_string(VALUE, VALUE, VALUE)
Definition: variable.c:198
rb_str_new_with_class
VALUE rb_str_new_with_class(VALUE, const char *, long)
Definition: string.c:1298
ruby_init_stack
void ruby_init_stack(volatile VALUE *)
rb_f_notimplement
VALUE rb_f_notimplement(int argc, const VALUE *argv, VALUE obj, VALUE marker)
Definition: vm_method.c:120
sighold
int sighold(int)
idLTLT
@ idLTLT
Definition: rb_mjit_min_header-2.7.0.h:8562
pthread_condattr_init
int pthread_condattr_init(pthread_condattr_t *)
BOP_EMPTY_P
@ BOP_EMPTY_P
Definition: rb_mjit_min_header-2.7.0.h:9648
pthread_cond_broadcast
int pthread_cond_broadcast(pthread_cond_t *)
rb_callable_method_entry_t
struct rb_callable_method_entry_struct rb_callable_method_entry_t
rb_ruby_verbose_ptr
VALUE * rb_ruby_verbose_ptr(void)
Definition: vm.c:3373
srand48
void srand48(long)
rb_str_new_frozen
VALUE rb_str_new_frozen(VALUE)
Definition: string.c:1203
_scanf_r
int _scanf_r(struct _reent *, const char *__restrict,...) __attribute__((__format__(__scanf__
_fiprintf_r
int _fiprintf_r(struct _reent *, FILE *, const char *,...) __attribute__((__format__(__printf__
_Bigint::_wds
int _wds
Definition: rb_mjit_min_header-2.7.0.h:944
rb_ensure_entry
Definition: vm_core.h:828
sigaction::sa_mask
sigset_t sa_mask
Definition: rb_mjit_min_header-2.7.0.h:2232
rb_iseq_constant_body::ambiguous_param0
unsigned int ambiguous_param0
Definition: vm_core.h:360
mjit_resume
VALUE mjit_resume(void)
mkfifoat
int mkfifoat(int, const char *, mode_t)
RB_DEBUG_COUNTER_artable_hint_miss
@ RB_DEBUG_COUNTER_artable_hint_miss
Definition: rb_mjit_min_header-2.7.0.h:11674
__sFILE::_read
_ssize_t(* _read)(struct _reent *, void *, char *, size_t)
Definition: rb_mjit_min_header-2.7.0.h:988
RUBY_T_FLOAT
@ RUBY_T_FLOAT
Definition: rb_mjit_min_header-2.7.0.h:4330
NODE_GVAR
@ NODE_GVAR
Definition: rb_mjit_min_header-2.7.0.h:8133
rb_reg_alloc
VALUE rb_reg_alloc(void)
Definition: re.c:2888
rb_vm_struct::workqueue_lock
rb_nativethread_lock_t workqueue_lock
Definition: vm_core.h:643
rb_debug_counter_show_results
void rb_debug_counter_show_results(const char *msg)
Definition: debug_counter.c:116
_fgets_r
char * _fgets_r(struct _reent *, char *__restrict, int, FILE *__restrict)
NODE_ZSUPER
@ NODE_ZSUPER
Definition: rb_mjit_min_header-2.7.0.h:8124
YARVINSN_setlocal_WC_0
@ YARVINSN_setlocal_WC_0
Definition: rb_mjit_min_header-2.7.0.h:12069
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
acoshf
float acoshf(float)
rb_mod_remove_const
VALUE rb_mod_remove_const(VALUE, VALUE)
Definition: variable.c:2479
rb_big_pow
VALUE rb_big_pow(VALUE, VALUE)
Definition: bignum.c:6244
rb_execution_context_struct::local_storage_recursive_hash_for_trace
VALUE local_storage_recursive_hash_for_trace
Definition: vm_core.h:862
NODE_LVAR
@ NODE_LVAR
Definition: rb_mjit_min_header-2.7.0.h:8131
_glue::_niobs
int _niobs
Definition: rb_mjit_min_header-2.7.0.h:1042
DEFINED_GVAR
@ DEFINED_GVAR
Definition: rb_mjit_min_header-2.7.0.h:10884
rb_backtrace
void rb_backtrace(void)
Definition: vm_backtrace.c:829
rb_imemo_tmpbuf_struct::reserved
VALUE reserved
Definition: internal.h:1233
id_core_define_method
@ id_core_define_method
Definition: rb_mjit_min_header-2.7.0.h:8595
VM_FRAME_MAGIC_RESCUE
@ VM_FRAME_MAGIC_RESCUE
Definition: rb_mjit_min_header-2.7.0.h:10064
RB_DEBUG_COUNTER_mc_cme_complement_hit
@ RB_DEBUG_COUNTER_mc_cme_complement_hit
Definition: rb_mjit_min_header-2.7.0.h:11534
rb_execarg::command_name
VALUE command_name
Definition: internal.h:2025
RIMemo::v3
VALUE v3
Definition: internal.h:1129
cookie_close_function_t
int cookie_close_function_t(void *__cookie)
Definition: rb_mjit_min_header-2.7.0.h:1790
rb_match_unbusy
void rb_match_unbusy(VALUE)
Definition: re.c:1293
h
size_t st_index_t h
Definition: rb_mjit_min_header-2.7.0.h:5462
_asprintf_r
int char char int _asprintf_r(struct _reent *, char **__restrict, const char *__restrict,...) __attribute__((__format__(__printf__
rb_complex_new_polar
VALUE rb_complex_new_polar(VALUE abs, VALUE arg)
Definition: complex.c:1533
mode_t
__mode_t mode_t
Definition: rb_mjit_min_header-2.7.0.h:1331
YARVINSN_getspecial
@ YARVINSN_getspecial
Definition: rb_mjit_min_header-2.7.0.h:11976
VM_ENV_FLAG_ESCAPED
@ VM_ENV_FLAG_ESCAPED
Definition: rb_mjit_min_header-2.7.0.h:10076
pthread_attr_getschedpolicy
int pthread_attr_getschedpolicy(const pthread_attr_t *, int *)
rb_proc_times
VALUE rb_proc_times(VALUE)
RUBY_ELTS_SHARED
#define RUBY_ELTS_SHARED
__sprintf_chk
int __sprintf_chk(char *__restrict, int, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
rb_execarg_extract_options
VALUE rb_execarg_extract_options(VALUE execarg_obj, VALUE opthash)
Definition: process.c:2279
__n
__inline__ size_t size_t __n
Definition: rb_mjit_min_header-2.7.0.h:1903
rb_big_abs
VALUE rb_big_abs(VALUE x)
Definition: bignum.c:6762
rb_parser_free
void rb_parser_free(struct parser_params *, void *)
Definition: ripper.c:19418
node_buffer_t
typedefRUBY_SYMBOL_EXPORT_BEGIN struct node_buffer_struct node_buffer_t
Definition: node.h:392
rb_obj_is_mutex
VALUE rb_obj_is_mutex(VALUE obj)
Definition: thread_sync.c:131
tm::tm_gmtoff
long tm_gmtoff
Definition: rb_mjit_min_header-2.7.0.h:1943
rb_num_t
unsigned long rb_num_t
Definition: rb_mjit_min_header-2.7.0.h:9420
OPTIMIZED_METHOD_TYPE__MAX
@ OPTIMIZED_METHOD_TYPE__MAX
Definition: rb_mjit_min_header-2.7.0.h:8874
Init_vm_eval
void Init_vm_eval(void)
Definition: vm_eval.c:2470
vm_ifunc::reserved
VALUE reserved
Definition: internal.h:1217
rb_str_resurrect
VALUE rb_str_resurrect(VALUE str)
Definition: string.c:1522
rb_ary_pattern_info
Definition: node.h:453
rb_thread_create
VALUE rb_thread_create(VALUE(*)(void *), void *)
Definition: thread.c:966
rb_eInterrupt
VALUE rb_eInterrupt
Definition: error.c:916
iseq_catch_table
Definition: rb_mjit_min_header-2.7.0.h:10860
__getdelim
ssize_t __getdelim(char **, size_t *, int, FILE *)
RB_DEBUG_COUNTER_obj_newobj_wb_unprotected
@ RB_DEBUG_COUNTER_obj_newobj_wb_unprotected
Definition: rb_mjit_min_header-2.7.0.h:11609
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.0.h:1020
rb_cEnumerator
VALUE rb_cEnumerator
Definition: enumerator.c:109
register_t
__intptr_t register_t
Definition: rb_mjit_min_header-2.7.0.h:1161
rb_thread_struct::kw_splat
int kw_splat
Definition: vm_core.h:967
sigjmp_buf
long sigjmp_buf[32+1+((sizeof(long)+sizeof(sigset_t) - 1)/sizeof(long))]
Definition: rb_mjit_min_header-2.7.0.h:9393
atanf
float atanf(float)
strtoll
long long strtoll(const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_iseq_constant_body::ISEQ_TYPE_PLAIN
@ ISEQ_TYPE_PLAIN
Definition: vm_core.h:321
BOP_OR
@ BOP_OR
Definition: rb_mjit_min_header-2.7.0.h:9662
rb_big_2comp
void rb_big_2comp(VALUE)
Definition: bignum.c:3049
rb_iseq_constant_body::call_data
struct rb_call_data * call_data
Definition: vm_core.h:421
rb_io_t
Definition: io.h:66
cmp_opt_data::opt_methods
unsigned int opt_methods
Definition: internal.h:1323
RUBY_FLONUM_MASK
@ RUBY_FLONUM_MASK
Definition: rb_mjit_min_header-2.7.0.h:4302
ruby_vm_global_method_state
rb_serial_t ruby_vm_global_method_state
Definition: vm.c:379
rb_iseq_struct::exec
struct rb_iseq_struct::@181::@183 exec
rb_complex_plus
VALUE rb_complex_plus(VALUE x, VALUE y)
Definition: complex.c:778
rb_iseq_constant_body::has_rest
unsigned int has_rest
Definition: vm_core.h:354
__isnand
int __isnand(double x)
idSingleton_method_undefined
@ idSingleton_method_undefined
Definition: rb_mjit_min_header-2.7.0.h:8698
rb_warning_category_from_name
rb_warning_category_t rb_warning_category_from_name(VALUE category)
Definition: error.c:140
BOP_MULT
@ BOP_MULT
Definition: rb_mjit_min_header-2.7.0.h:9636
YARVINSN_trace_opt_empty_p
@ YARVINSN_trace_opt_empty_p
Definition: rb_mjit_min_header-2.7.0.h:12162
DEFINED_ZSUPER
@ DEFINED_ZSUPER
Definition: rb_mjit_min_header-2.7.0.h:10889
rb_classext_struct
Definition: internal.h:1020
rb_eStandardError
VALUE rb_eStandardError
Definition: error.c:919
rb_threadptr_check_signal
void rb_threadptr_check_signal(rb_thread_t *mth)
Definition: thread.c:4318
RNode::entry
struct rb_global_entry * entry
Definition: node.h:167
rb_cRegexp
VALUE rb_cRegexp
Definition: ruby.h:2042
ldiv_t
Definition: rb_mjit_min_header-2.7.0.h:2550
_printf_r
int _printf_r(struct _reent *, const char *__restrict,...) __attribute__((__format__(__printf__
RB_DEBUG_COUNTER_mjit_exec_not_added
@ RB_DEBUG_COUNTER_mjit_exec_not_added
Definition: rb_mjit_min_header-2.7.0.h:11683
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.0.h:12683
_fseek_r
int int _fseek_r(struct _reent *, FILE *, long, int)
rewind
void rewind(FILE *)
__uintmax_t
long unsigned int __uintmax_t
Definition: rb_mjit_min_header-2.7.0.h:645
rb_keyword_error_new
VALUE rb_keyword_error_new(const char *error, VALUE keys)
Definition: class.c:1819
sigval_t
union sigval sigval_t
write
_ssize_t write(int __fd, const void *__buf, size_t __nbyte)
rb_str_to_str
VALUE rb_str_to_str(VALUE)
Definition: string.c:1382
rb_fd_set
void rb_fd_set(int, rb_fdset_t *)
rb_node_init
void rb_node_init(NODE *n, enum node_type type, VALUE a0, VALUE a1, VALUE a2)
Definition: node.c:1095
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__
error_t
int error_t
Definition: rb_mjit_min_header-2.7.0.h:10926
rb_st_values
st_index_t rb_st_values(st_table *table, st_data_t *values, st_index_t size)
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_vm_struct::running
unsigned int running
Definition: vm_core.h:602
ILL_PRVREG
#define ILL_PRVREG
Definition: rb_mjit_min_header-2.7.0.h:2193
rb_thread_struct
Definition: vm_core.h:910
unsetenv
int unsetenv(const char *)
rb_str_buf_new_cstr
#define rb_str_buf_new_cstr(str)
Definition: rb_mjit_min_header-2.7.0.h:6125
rb_backref_set_string
void rb_backref_set_string(VALUE string, long pos, long len)
Definition: re.c:1340
RB_DEBUG_COUNTER_ivar_set_base
@ RB_DEBUG_COUNTER_ivar_set_base
Definition: rb_mjit_min_header-2.7.0.h:11586
rb_str_buf_append
VALUE rb_str_buf_append(VALUE, VALUE)
Definition: string.c:2950
rb_rational_raw
VALUE rb_rational_raw(VALUE, VALUE)
Definition: rational.c:1939
memset
#define memset(dst, val, len)
Definition: rb_mjit_min_header-2.7.0.h:2850
rb_get_path
VALUE rb_get_path(VALUE)
Definition: file.c:230
rb_is_const_name
int rb_is_const_name(VALUE name)
Definition: symbol.c:1050
RSTRUCT_EMBED_LEN_SHIFT
#define RSTRUCT_EMBED_LEN_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:6912
sigsetjmp
#define sigsetjmp(env, savemask)
Definition: rb_mjit_min_header-2.7.0.h:9400
tTo_io
@ tTo_io
Definition: rb_mjit_min_header-2.7.0.h:8638
RNode::id
ID id
Definition: node.h:153
rb_execution_context_struct::local_storage_recursive_hash
VALUE local_storage_recursive_hash
Definition: vm_core.h:861
rb_thread_list_struct::next
struct rb_thread_list_struct * next
Definition: vm_core.h:824
utoa
char * utoa(unsigned, char *, int)
_on_exit_args::_fntypes
__ULong _fntypes
Definition: rb_mjit_min_header-2.7.0.h:963
rb_const_missing
VALUE rb_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1694
rb_call_data
Definition: internal.h:2393
rb_str2big_normal
VALUE rb_str2big_normal(VALUE arg, int base, int badcheck)
Definition: bignum.c:4310
rb_intern_str
ID rb_intern_str(VALUE str)
Definition: symbol.c:666
rb_mjit_wait_call
VALUE rb_mjit_wait_call(rb_execution_context_t *ec, struct rb_iseq_constant_body *body)
rb_iseq_constant_body::is_size
unsigned int is_size
Definition: vm_core.h:436
jn
double jn(int, double)
rb_rescue
VALUE rb_rescue(VALUE(*)(VALUE), VALUE, VALUE(*)(VALUE, VALUE), VALUE)
An equivalent of rescue clause.
Definition: eval.c:1046
VM_CALL_OPT_SEND_bit
@ VM_CALL_OPT_SEND_bit
Definition: rb_mjit_min_header-2.7.0.h:10016
sched_yield
int sched_yield(void)
MEMO::state
long state
Definition: internal.h:1285
rb_classext_struct::origin_
const VALUE origin_
Definition: internal.h:1039
_erand48_r
double _erand48_r(struct _reent *, unsigned short[3])
callee
my_ffi_struct callee(struct my_ffi_struct a1, struct my_ffi_struct a2)
Definition: problem1.c:16
__isinfd
int __isinfd(double x)
free
void free(void *)
yn
double yn(int, double)
kill
int kill(pid_t, int)
Definition: win32.c:4789
NODE_WHEN
@ NODE_WHEN
Definition: rb_mjit_min_header-2.7.0.h:8088
rb_proc_t
Definition: vm_core.h:1049
_putc_r
int int _putc_r(struct _reent *, int, FILE *)
rb_loaderror_with_path
void rb_loaderror_with_path(VALUE path, const char *fmt,...)
Definition: error.c:2700
vprintf
int int int int int int int vprintf(const char *, __gnuc_va_list) __attribute__((__format__(__printf__
NODE_DEFS
@ NODE_DEFS
Definition: rb_mjit_min_header-2.7.0.h:8160
rb_io_flush
VALUE rb_io_flush(VALUE)
Definition: io.c:1903
RUBY_TAG_RETURN
@ RUBY_TAG_RETURN
Definition: rb_mjit_min_header-2.7.0.h:9424
rb_st_insert
int rb_st_insert(st_table *, st_data_t, st_data_t)
rb_eNoMemError
VALUE rb_eNoMemError
Definition: error.c:933
rb_alloc_func_t
VALUE(* rb_alloc_func_t)(VALUE)
Definition: rb_mjit_min_header-2.7.0.h:5728
ILL_COPROC
#define ILL_COPROC
Definition: rb_mjit_min_header-2.7.0.h:2194
_reent::_nmalloc
unsigned int _nmalloc[30]
Definition: rb_mjit_min_header-2.7.0.h:1104
atanh
double atanh(double)
Definition: acosh.c:75
__vsnprintf_chk
int int int int __vsnprintf_chk(char *__restrict, size_t, int, size_t, const char *__restrict, __va_list) __attribute__((__format__(__printf__
RUBY_TAG_THROW
@ RUBY_TAG_THROW
Definition: rb_mjit_min_header-2.7.0.h:9430
rb_obj_methods
VALUE rb_obj_methods(int argc, const VALUE *argv, VALUE obj)
Definition: class.c:1361
RHASH_AR_TABLE_SIZE_SHIFT
#define RHASH_AR_TABLE_SIZE_SHIFT
Definition: rb_mjit_min_header-2.7.0.h:6881
lstat
int lstat(const char *__restrict __path, struct stat *__restrict __buf)
rb_obj_singleton_methods
VALUE rb_obj_singleton_methods(int, const VALUE *, VALUE)
Definition: class.c:1449
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
__ssp_real_gethostname
int __ssp_real_gethostname(char *__buf, size_t __len) __asm__("" "gethostname")
YARVINSN_trace_nop
@ YARVINSN_trace_nop
Definition: rb_mjit_min_header-2.7.0.h:12073
rb_classext_struct::parent_subclasses
rb_subclass_entry_t ** parent_subclasses
Definition: internal.h:1029
st_table
Definition: st.h:79
siginfo_t::si_utime
clock_t si_utime
Definition: rb_mjit_min_header-2.7.0.h:2139
rb_ec_setup_exception
void rb_ec_setup_exception(const rb_execution_context_t *ec, VALUE mesg, VALUE cause)
Definition: eval.c:638
rb_fiber_close
void rb_fiber_close(rb_fiber_t *fib)
Definition: cont.c:2057
sigsuspend
int sigsuspend(const sigset_t *)
_reent::_wcrtomb_state
_mbstate_t _wcrtomb_state
Definition: rb_mjit_min_header-2.7.0.h:1096
rb_io_print
VALUE rb_io_print(int, const VALUE *, VALUE)
Definition: io.c:7576
ptrdiff_t
long int ptrdiff_t
Definition: rb_mjit_min_header-2.7.0.h:802
rb_iseq_absolute_path
VALUE rb_iseq_absolute_path(const rb_iseq_t *iseq)
Definition: iseq.c:1039
rb_call_info_with_kwarg
Definition: vm_core.h:245
idLAST_OP_ID
@ idLAST_OP_ID
Definition: rb_mjit_min_header-2.7.0.h:8759
atanhf
float atanhf(float)
rb_thread_list_struct
Definition: vm_core.h:823
VM_SPECIAL_OBJECT_CBASE
@ VM_SPECIAL_OBJECT_CBASE
Definition: rb_mjit_min_header-2.7.0.h:10033
rb_args_info::rest_arg
ID rest_arg
Definition: node.h:440
rb_struct_new
VALUE rb_struct_new(VALUE,...)
Definition: struct.c:733
rb_mv_generic_ivar
void rb_mv_generic_ivar(VALUE src, VALUE dst)
Definition: variable.c:983
iseq_catch_table_entry::start
unsigned int start
Definition: iseq.h:249
rb_hash_has_key
VALUE rb_hash_has_key(VALUE hash, VALUE key)
Definition: hash.c:3432
rb_cArray
VALUE rb_cArray
Definition: array.c:27
RData
Definition: ruby.h:1139
_getc_unlocked_r
int _getc_unlocked_r(struct _reent *, FILE *)
pthread_setspecific
int pthread_setspecific(pthread_key_t, const void *)
rb_uninterruptible
VALUE rb_uninterruptible(VALUE(*b_proc)(VALUE), VALUE data)
Definition: thread.c:5554
ID
unsigned long ID
Definition: rb_mjit_min_header-2.7.0.h:3991
iseq_catch_table_entry::CATCH_TYPE_ENSURE
@ CATCH_TYPE_ENSURE
Definition: iseq.h:228
rb_ensure_list::next
struct rb_ensure_list * next
Definition: vm_core.h:835
YARVINSN_opt_or
@ YARVINSN_opt_or
Definition: rb_mjit_min_header-2.7.0.h:12052
_getc_r
int _getc_r(struct _reent *, FILE *)
rb_mod_const_missing
VALUE rb_mod_const_missing(VALUE klass, VALUE name)
Definition: variable.c:1739
rb_objspace_marked_object_p
int rb_objspace_marked_object_p(VALUE obj)
Definition: gc.c:5222
rb_any_to_s
VALUE rb_any_to_s(VALUE)
Default implementation of #to_s.
Definition: object.c:527
rb_hash_lookup2
VALUE rb_hash_lookup2(VALUE, VALUE, VALUE)
Definition: hash.c:1977
rb_classext_struct::m_tbl
struct rb_id_table * m_tbl
Definition: internal.h:1024
rb_cFile
VALUE rb_cFile
Definition: file.c:159
iseq_compile_data_storage::next
struct iseq_compile_data_storage * next
Definition: iseq.h:275
RB_DEBUG_COUNTER_obj_imemo_parser_strterm
@ RB_DEBUG_COUNTER_obj_imemo_parser_strterm
Definition: rb_mjit_min_header-2.7.0.h:11672
id__attached__
@ id__attached__
Definition: rb_mjit_min_header-2.7.0.h:8708
timer_delete
int timer_delete(timer_t timerid)
tm::tm_zone
const char * tm_zone
Definition: rb_mjit_min_header-2.7.0.h:1944
rb_eThreadError
VALUE rb_eThreadError
Definition: eval.c:923
rb_mutex_allow_trap
void rb_mutex_allow_trap(VALUE self, int val)
Definition: thread_sync.c:545
rb_obj_reveal
VALUE rb_obj_reveal(VALUE obj, VALUE klass)
Make a hidden object visible again.
Definition: object.c:95
RB_DEBUG_COUNTER_ccf_general
@ RB_DEBUG_COUNTER_ccf_general
Definition: rb_mjit_min_header-2.7.0.h:11542
rb_objspace_reachable_objects_from
void rb_objspace_reachable_objects_from(VALUE obj, void(func)(VALUE, void *), void *data)
Definition: gc.c:9448
rb_make_internal_id
ID rb_make_internal_id(void)
Definition: symbol.c:810
__intptr_t
long int __intptr_t
Definition: rb_mjit_min_header-2.7.0.h:646
RArray::aux
union RArray::@97::@98::@99 aux
rb_ary_rassoc
VALUE rb_ary_rassoc(VALUE, VALUE)
Definition: array.c:4189
idLambda
@ idLambda
Definition: rb_mjit_min_header-2.7.0.h:8705
putc
int putc(int, FILE *)
div_t::quot
int quot
Definition: rb_mjit_min_header-2.7.0.h:2547
Init_newline
void Init_newline(void)
NODE_RETRY
@ NODE_RETRY
Definition: rb_mjit_min_header-2.7.0.h:8098
YARVINSN_trace_getblockparam
@ YARVINSN_trace_getblockparam
Definition: rb_mjit_min_header-2.7.0.h:12076
NODE_ARGSCAT
@ NODE_ARGSCAT
Definition: rb_mjit_min_header-2.7.0.h:8155
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
sched_setscheduler
int sched_setscheduler(pid_t __pid, int __policy, const struct sched_param *__param)
YARVINSN_opt_invokebuiltin_delegate_leave
@ YARVINSN_opt_invokebuiltin_delegate_leave
Definition: rb_mjit_min_header-2.7.0.h:12066
YARVINSN_trace_opt_str_freeze
@ YARVINSN_trace_opt_str_freeze
Definition: rb_mjit_min_header-2.7.0.h:12125
ruby_escaped_char
const char * ruby_escaped_char(int c)
Definition: string.c:5848
rb_thread_wakeup
VALUE rb_thread_wakeup(VALUE)
Definition: thread.c:2540
ruby_special_consts
ruby_special_consts
Definition: ruby.h:436
RUBY_T_MASK
@ RUBY_T_MASK
Definition: rb_mjit_min_header-2.7.0.h:4353
ruby_error_stream_closed
@ ruby_error_stream_closed
Definition: rb_mjit_min_header-2.7.0.h:9630
fill_values_arg
Definition: vm_args.c:556
rb_thread_interrupted
int rb_thread_interrupted(VALUE thval)
Definition: thread.c:1379
remainderl
long double remainderl(long double, long double)
__errno
int * __errno(void)
rb_ary_concat
VALUE rb_ary_concat(VALUE, VALUE)
Definition: array.c:4069
NODE_ARGS
@ NODE_ARGS
Definition: rb_mjit_min_header-2.7.0.h:8150
sig_atomic_t
int sig_atomic_t
Definition: rb_mjit_min_header-2.7.0.h:2337
logb
double logb(double)
idTo_r
@ idTo_r
Definition: rb_mjit_min_header-2.7.0.h:8724
strcspn
size_t strcspn(const char *, const char *)
ushort
unsigned short ushort
Definition: rb_mjit_min_header-2.7.0.h:1296
rb_data_object_alloc
#define rb_data_object_alloc
Definition: gc.c:14
CONST_DEPRECATED
@ CONST_DEPRECATED
Definition: rb_mjit_min_header-2.7.0.h:12181
rb_hook_list_struct::running
unsigned int running
Definition: vm_core.h:569
rb_thread_status
rb_thread_status
Definition: vm_core.h:782
RB_IO_WAIT_READABLE
#define RB_IO_WAIT_READABLE
Definition: rb_mjit_min_header-2.7.0.h:5184
rb_const_entry_struct
Definition: constant.h:31
erfl
long double erfl(long double)
_snprintf_r
int int int int int _snprintf_r(struct _reent *, char *__restrict, size_t, const char *__restrict,...) __attribute__((__format__(__printf__
rb_io_get_io
VALUE rb_io_get_io(VALUE)
Definition: io.c:733
rb_gvar_readonly_setter
void rb_gvar_readonly_setter(VALUE v, ID id, VALUE *_)
Definition: variable.c:412
__size
__inline__ size_t __size
Definition: rb_mjit_min_header-2.7.0.h:1903
MEMO::func
void(* func)(void)
Definition: internal.h:1287
rb_st_init_strtable
st_table * rb_st_init_strtable(void)
rb_newobj
VALUE rb_newobj(void)
Definition: gc.c:2288
NODE_FLIP3
@ NODE_FLIP3
Definition: rb_mjit_min_header-2.7.0.h:8172
rb_nativethread_self
rb_nativethread_id_t rb_nativethread_self()
rb_source_location_cstr
const char * rb_source_location_cstr(int *pline)
Definition: vm.c:1376
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
st_index_t
st_data_t st_index_t
Definition: rb_mjit_min_header-2.7.0.h:5366
rb_parser_calloc
void * rb_parser_calloc(struct parser_params *, size_t, size_t)
Definition: ripper.c:19388
rb_sprintf
VALUE rb_sprintf(const char *,...) __attribute__((format(printf
rb_big_div
VALUE rb_big_div(VALUE, VALUE)
Definition: bignum.c:6091
rb_trace_arg_struct::klass
VALUE klass
Definition: vm_core.h:1881
ruby_tag_type
ruby_tag_type
Definition: vm_core.h:184
sigdelset
int sigdelset(sigset_t *, const int)
YARVINSN_trace_invokeblock
@ YARVINSN_trace_invokeblock
Definition: rb_mjit_min_header-2.7.0.h:12131
__ssp_real_fgets_unlocked
char * __ssp_real_fgets_unlocked(char *__restrict __buf, int __len, FILE *__fp) __asm__("" "fgets_unlocked")
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:1558
max_argc
const rb_iseq_t const int const int const int max_argc
Definition: rb_mjit_min_header-2.7.0.h:13505
__wc
__inline__ wchar_t __wc
Definition: rb_mjit_min_header-2.7.0.h:2720
rb_builtin_function::name
const char *const name
Definition: builtin.h:13
RUBY_FL_USER19
#define RUBY_FL_USER19
Definition: ruby.h:878
get_current_dir_name
char * get_current_dir_name(void)
fseeko
int fseeko(FILE *, off_t, int)
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
rb_ary_resize
VALUE rb_ary_resize(VALUE ary, long len)
expands or shrinks ary to len elements.
Definition: array.c:1955
pathconf
long pathconf(const char *__path, int __name)
sigaltstack::ss_sp
void * ss_sp
Definition: rb_mjit_min_header-2.7.0.h:2301
rb_iseq_constant_body::flip_count
rb_snum_t flip_count
Definition: vm_core.h:429
NODE_CVAR
@ NODE_CVAR
Definition: rb_mjit_min_header-2.7.0.h:8136
pthread_mutexattr_getpshared
int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *)
rb_str_memsize
size_t rb_str_memsize(VALUE)
Definition: string.c:1371
rb_mutex_unlock
VALUE rb_mutex_unlock(VALUE mutex)
Definition: thread_sync.c:403
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
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
dup2
int dup2(int __fildes, int __fildes2)
Definition: dup2.c:27
fchmod
int fchmod(int __fd, mode_t __mode)
asctime_r
char * asctime_r(const struct tm *__restrict, char *__restrict)
_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_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:2326
__sFILE64::_lock
_flock_t _lock
Definition: rb_mjit_min_header-2.7.0.h:1035
rb_vm_struct::waiting_pids
struct list_head waiting_pids
Definition: vm_core.h:592
block_type_ifunc
@ block_type_ifunc
Definition: rb_mjit_min_header-2.7.0.h:9783
in_port_t
__uint16_t in_port_t
Definition: rb_mjit_min_header-2.7.0.h:1284
RB_DEBUG_COUNTER_obj_data_xfree
@ RB_DEBUG_COUNTER_obj_data_xfree
Definition: rb_mjit_min_header-2.7.0.h:11644
rb_iv_set
VALUE rb_iv_set(VALUE, const char *, VALUE)
Definition: variable.c:3307
BUS_ADRERR
#define BUS_ADRERR
Definition: rb_mjit_min_header-2.7.0.h:2207
dev_t
__dev_t dev_t
Definition: rb_mjit_min_header-2.7.0.h:1319
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:1310
rb_attr
void rb_attr(VALUE, ID, int, int, int)
Definition: vm_method.c:1163
rb_iseq_defined_string
VALUE rb_iseq_defined_string(enum defined_type type)
Definition: iseq.c:3033
rb_unblock_callback::func
rb_unblock_function_t * func
Definition: vm_core.h:817
rb_cIO
VALUE rb_cIO
Definition: ruby.h:2030
Init_vm_stack_canary
void Init_vm_stack_canary(void)
Definition: rb_mjit_min_header-2.7.0.h:16989
rb_usascii_str_new_static
VALUE rb_usascii_str_new_static(const char *, long)
Definition: string.c:878
rb_thread_struct::pending_interrupt_queue_checked
unsigned int pending_interrupt_queue_checked
Definition: vm_core.h:936
RNode
Definition: node.h:149
off_t
__off_t off_t
Definition: rb_mjit_min_header-2.7.0.h:1317
rb_unexpected_type
void rb_unexpected_type(VALUE x, int t)
Definition: error.c:852
rb_cRandom
VALUE rb_cRandom
Definition: ruby.h:2039
rb_iseq_location_struct::base_label
VALUE base_label
Definition: vm_core.h:274
initstate
char * initstate(unsigned, char *, size_t)
strtof
float strtof(const char *__restrict __n, char **__restrict __end_PTR)
dup
int dup(int __fildes)
ruby_fl_type
ruby_fl_type
Definition: ruby.h:841
__ino_t
__uint64_t __ino_t
Definition: rb_mjit_min_header-2.7.0.h:856
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
rb_gc_mark_machine_stack
void rb_gc_mark_machine_stack(const rb_execution_context_t *ec)
Definition: gc.c:4981
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.0.h:6464
rb_eval_cmd_kw
VALUE rb_eval_cmd_kw(VALUE, VALUE, int)
Definition: vm_eval.c:1799
CALL_FCALL
@ CALL_FCALL
Definition: rb_mjit_min_header-2.7.0.h:17162
optional
Definition: gc.c:90
rb_proc_call
VALUE rb_proc_call(VALUE, VALUE)
Definition: proc.c:966
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
rb_gc_free_dsymbol
void rb_gc_free_dsymbol(VALUE)
Definition: symbol.c:678
YARVINSN_opt_case_dispatch
@ YARVINSN_opt_case_dispatch
Definition: rb_mjit_min_header-2.7.0.h:12038
_tempnam_r
int int int int int int int char * _tempnam_r(struct _reent *, const char *, const char *)
YARVINSN_trace_branchif
@ YARVINSN_trace_branchif
Definition: rb_mjit_min_header-2.7.0.h:12135
rb_mod_sys_fail_str
void rb_mod_sys_fail_str(VALUE mod, VALUE mesg)
Definition: error.c:2841
iprintf
int int int int int int int int char char int int int int iprintf(const char *,...) __attribute__((__format__(__printf__
__sFILE
Definition: vsnprintf.c:169
rb_ec_clear_vm_stack
void rb_ec_clear_vm_stack(rb_execution_context_t *ec)
Definition: vm.c:2699
cookie_io_functions_t::read
cookie_read_function_t * read
Definition: rb_mjit_min_header-2.7.0.h:1793
_strtol_r
long _strtol_r(struct _reent *, const char *__restrict __n, char **__restrict __end_PTR, int __base)
rb_global_entry
Definition: internal.h:1350
rb_execution_context_struct::stack_end
VALUE * stack_end
Definition: vm_core.h:888
RB_DEBUG_COUNTER_mc_miss_spurious
@ RB_DEBUG_COUNTER_mc_miss_spurious
Definition: rb_mjit_min_header-2.7.0.h:11540
rb_eSystemExit
VALUE rb_eSystemExit
Definition: error.c:915
_fpos64_t
_off64_t _fpos64_t
Definition: rb_mjit_min_header-2.7.0.h:894
d1
#define d1
RUBY_FL_SEEN_OBJ_ID
@ RUBY_FL_SEEN_OBJ_ID
Definition: ruby.h:849
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__
idDot3
@ idDot3
Definition: rb_mjit_min_header-2.7.0.h:8552
rb_code_location_t
struct rb_code_location_struct rb_code_location_t
rb_random_bytes
VALUE rb_random_bytes(VALUE rnd, long n)
Definition: random.c:1021
RB_DEBUG_COUNTER_frame_push_dummy
@ RB_DEBUG_COUNTER_frame_push_dummy
Definition: rb_mjit_min_header-2.7.0.h:11569
pthread_timedjoin_np
int pthread_timedjoin_np(pthread_t, void **, const struct timespec *)
_atexit::_next
struct _atexit * _next
Definition: rb_mjit_min_header-2.7.0.h:967
cbrtf
float cbrtf(float)
rb_class_public_instance_methods
VALUE rb_class_public_instance_methods(int, const VALUE *, VALUE)
Definition: class.c:1325
rb_thread_wait_fd
void rb_thread_wait_fd(int)
Definition: thread.c:4042
fcloseall
int fcloseall(void)
rb_obj_tainted
VALUE rb_obj_tainted(VALUE obj)
call-seq: obj.tainted? -> false
Definition: object.c:985
rb_obj_clone
VALUE rb_obj_clone(VALUE)
Almost same as Object::clone.
Definition: object.c:410
_reent::_wctomb_state
_mbstate_t _wctomb_state
Definition: rb_mjit_min_header-2.7.0.h:1089
idFdiv
@ idFdiv
Definition: rb_mjit_min_header-2.7.0.h:8736
unlink
int unlink(const char *__path)
rb_vm_bugreport
void rb_vm_bugreport(const void *)
Definition: vm_dump.c:918
tERROR_INFO
@ tERROR_INFO
Definition: rb_mjit_min_header-2.7.0.h:8675
rb_ary_cmp
VALUE rb_ary_cmp(VALUE, VALUE)
Definition: array.c:4420
rb_hash_tbl_raw
struct st_table * rb_hash_tbl_raw(VALUE hash)
Definition: hash.c:1567
rb_float_plus
VALUE rb_float_plus(VALUE x, VALUE y)
Definition: numeric.c:1024
_reent::_result_k
int _result_k
Definition: rb_mjit_min_header-2.7.0.h:1071
rb_respond_to
int rb_respond_to(VALUE, ID)
Definition: vm_method.c:2190
rb_str_shared_replace
void rb_str_shared_replace(VALUE, VALUE)
Definition: string.c:1391
rb_argv0
VALUE rb_argv0
Definition: intern.h:734
sigaction
int sigaction(int, const struct sigaction *, struct sigaction *)
rb_global_vm_lock_struct::lock
rb_nativethread_lock_t lock
Definition: thread_pthread.h:51
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
_atexit::_fns
void(* _fns[32])(void)
Definition: rb_mjit_min_header-2.7.0.h:969
__locale_mb_cur_max
int __locale_mb_cur_max(void)
_fsetpos_r
int _fsetpos_r(struct _reent *, FILE *, const fpos_t *)
alarm
unsigned alarm(unsigned __secs)
blksize_t
__blksize_t blksize_t
Definition: rb_mjit_min_header-2.7.0.h:1301
YARVINSN_freezestring
@ YARVINSN_freezestring
Definition: rb_mjit_min_header-2.7.0.h:11993
rb_nativethread_cond_t
pthread_cond_t rb_nativethread_cond_t
Definition: rb_mjit_min_header-2.7.0.h:9359
itoa
char * itoa(int, char *, int)
rb_control_frame_t
struct rb_control_frame_struct rb_control_frame_t
rb_eFrozenError
VALUE rb_eFrozenError
Definition: error.c:921
sinh
double sinh(double)
Definition: math.c:256
SI_KERNEL
#define SI_KERNEL
Definition: rb_mjit_min_header-2.7.0.h:2187
iseq_insn_info_entry::line_no
int line_no
Definition: iseq.h:221
vm_object_t
void * vm_object_t
Definition: rb_mjit_min_header-2.7.0.h:1414
rb_check_to_float
VALUE rb_check_to_float(VALUE)
Tries to convert an object into Float.
Definition: object.c:3559
BOP_CALL
@ BOP_CALL
Definition: rb_mjit_min_header-2.7.0.h:9660
YARVINSN_getlocal
@ YARVINSN_getlocal
Definition: rb_mjit_min_header-2.7.0.h:11971
rb_syserr_fail_str
void rb_syserr_fail_str(int e, VALUE mesg)
Definition: error.c:2787
rb_vm_struct::waitpid_lock
rb_nativethread_lock_t waitpid_lock
Definition: vm_core.h:591
rb_iseq_constant_body::iseq_type
iseq_type
Definition: vm_core.h:312
DEFINED_EXPR
@ DEFINED_EXPR
Definition: rb_mjit_min_header-2.7.0.h:10894
rb_vm_thread_backtrace
VALUE rb_vm_thread_backtrace(int argc, const VALUE *argv, VALUE thval)
Definition: vm_backtrace.c:960
RClass
Definition: internal.h:1048
idNUMPARAM_4
@ idNUMPARAM_4
Definition: rb_mjit_min_header-2.7.0.h:8744
tTOKEN_GLOBAL_END
@ tTOKEN_GLOBAL_END
Definition: rb_mjit_min_header-2.7.0.h:8676
cfp
rb_control_frame_t * cfp
Definition: rb_mjit_min_header-2.7.0.h:14544
logl
long double logl(long double)
_findenv
char * _findenv(const char *, int *)
iseq_catch_table_entry::CATCH_TYPE_RETRY
@ CATCH_TYPE_RETRY
Definition: iseq.h:229
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
ldexp
double ldexp(double, int)
YARVINSN_newarraykwsplat
@ YARVINSN_newarraykwsplat
Definition: rb_mjit_min_header-2.7.0.h:11997
rb_define_method_id
void rb_define_method_id(VALUE, ID, VALUE(*)(), int)
RB_DEBUG_COUNTER_obj_ary_transient
@ RB_DEBUG_COUNTER_obj_ary_transient
Definition: rb_mjit_min_header-2.7.0.h:11622
CALL_DATA
struct rb_call_data * CALL_DATA
Definition: rb_mjit_min_header-2.7.0.h:10047
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_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_mem_clear
void rb_mem_clear(VALUE *, long)
Definition: array.c:243
uint64_t
__uint64_t uint64_t
Definition: rb_mjit_min_header-2.7.0.h:1182
rb_proc_t::is_lambda
unsigned int is_lambda
Definition: vm_core.h:1052
rb_hash_stlike_lookup
int rb_hash_stlike_lookup(VALUE hash, st_data_t key, st_data_t *pval)
Definition: hash.c:1944
iseq_compile_data::label_no
int label_no
Definition: iseq.h:113
iseq_inline_storage_entry
Definition: vm_core.h:231
rb_scope_visibility_t
struct rb_scope_visi_struct rb_scope_visibility_t
idEqTilde
@ idEqTilde
Definition: rb_mjit_min_header-2.7.0.h:8575
rb_iseq_pathobj_set
void rb_iseq_pathobj_set(const rb_iseq_t *iseq, VALUE path, VALUE realpath)
Definition: iseq.c:469
idMin
@ idMin
Definition: rb_mjit_min_header-2.7.0.h:8686
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_check_inheritable
void rb_check_inheritable(VALUE)
Ensures a class can be derived from super.
Definition: class.c:219
tTo_f
@ tTo_f
Definition: rb_mjit_min_header-2.7.0.h:8642
chdir
int chdir(const char *__path)
memchr
void * memchr(const void *, int, size_t)
iseq_inline_storage_entry::once
struct iseq_inline_storage_entry::@177 once
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
RUBY_FL_TAINT
@ RUBY_FL_TAINT
Definition: ruby.h:847
n_lead
const VALUE int n_lead
Definition: rb_mjit_min_header-2.7.0.h:6462
name
const char * name
Definition: nkf.c:208
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
rb_check_funcall_kw
VALUE rb_check_funcall_kw(VALUE, ID, int, const VALUE *, int)
Definition: vm_eval.c:499
mjit_options::debug
char debug
Definition: rb_mjit_min_header-2.7.0.h:11728
rb_execution_context_struct::root_lep
const VALUE * root_lep
Definition: vm_core.h:865
rb_parser_compile_file_path
rb_ast_t * rb_parser_compile_file_path(VALUE vparser, VALUE fname, VALUE input, int line)
Definition: ripper.c:12912
rb_execution_context_struct
Definition: vm_core.h:843
open_memstream
FILE * open_memstream(char **, size_t *)
BOP_MIN
@ BOP_MIN
Definition: rb_mjit_min_header-2.7.0.h:9659
sigevent_t
struct sigevent sigevent_t
PENDING_INTERRUPT_MASK
@ PENDING_INTERRUPT_MASK
Definition: rb_mjit_min_header-2.7.0.h:10568
rb_str_update
void rb_str_update(VALUE, long, long, VALUE)
Definition: string.c:4643
expm1
double expm1(double)
ruby_dtoa
char * ruby_dtoa(double d_, int mode, int ndigits, int *decpt, int *sign, char **rve)
mcontext_t
struct __mcontext mcontext_t
Definition: rb_mjit_min_header-2.7.0.h:2328
defined_type
defined_type
Definition: rb_mjit_min_header-2.7.0.h:10879
_fopen_r
FILE * _fopen_r(struct _reent *, const char *__restrict, const char *__restrict)
RB_DEBUG_COUNTER_mjit_length_unit_queue
@ RB_DEBUG_COUNTER_mjit_length_unit_queue
Definition: rb_mjit_min_header-2.7.0.h:11697
rb_struct_initialize
VALUE rb_struct_initialize(VALUE, VALUE)
Definition: struct.c:662
RUBY_IMMEDIATE_MASK
@ RUBY_IMMEDIATE_MASK
Definition: rb_mjit_min_header-2.7.0.h:4300
__sFILE64::_seek64
_fpos64_t(* _seek64)(struct _reent *, void *, _fpos64_t, int)
Definition: rb_mjit_min_header-2.7.0.h:1034
ruby_set_stack_size
void ruby_set_stack_size(size_t)
mjit_options::min_calls
unsigned int min_calls
Definition: rb_mjit_min_header-2.7.0.h:11731
rb_equal
VALUE rb_equal(VALUE, VALUE)
Same as Object#===, case equality.
Definition: object.c:124
RB_DEBUG_COUNTER_obj_imemo_svar
@ RB_DEBUG_COUNTER_obj_imemo_svar
Definition: rb_mjit_min_header-2.7.0.h:11668
tMesg
@ tMesg
Definition: rb_mjit_min_header-2.7.0.h:8647
rb_compile_option_struct::operands_unification
unsigned int operands_unification
Definition: iseq.h:211
rb_hash_stlike_delete
int rb_hash_stlike_delete(VALUE hash, st_data_t *pkey, st_data_t *pval)
Definition: hash.c:2237
getegid
gid_t getegid(void)
Definition: win32.c:2786