kanayago 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rubocop.yml +15 -0
- data/.rubocop_todo.yml +23 -0
- data/LICENSE.txt +21 -0
- data/README.md +79 -0
- data/Rakefile +182 -0
- data/ext/kanayago/ccan/check_type/check_type.h +63 -0
- data/ext/kanayago/ccan/container_of/container_of.h +142 -0
- data/ext/kanayago/ccan/list/list.h +791 -0
- data/ext/kanayago/ccan/str/str.h +17 -0
- data/ext/kanayago/constant.h +53 -0
- data/ext/kanayago/extconf.rb +21 -0
- data/ext/kanayago/id.h +347 -0
- data/ext/kanayago/id_table.h +39 -0
- data/ext/kanayago/internal/array.h +151 -0
- data/ext/kanayago/internal/basic_operators.h +64 -0
- data/ext/kanayago/internal/bignum.h +244 -0
- data/ext/kanayago/internal/bits.h +568 -0
- data/ext/kanayago/internal/compile.h +34 -0
- data/ext/kanayago/internal/compilers.h +107 -0
- data/ext/kanayago/internal/complex.h +29 -0
- data/ext/kanayago/internal/encoding.h +36 -0
- data/ext/kanayago/internal/error.h +218 -0
- data/ext/kanayago/internal/fixnum.h +184 -0
- data/ext/kanayago/internal/gc.h +322 -0
- data/ext/kanayago/internal/hash.h +191 -0
- data/ext/kanayago/internal/imemo.h +261 -0
- data/ext/kanayago/internal/io.h +140 -0
- data/ext/kanayago/internal/numeric.h +274 -0
- data/ext/kanayago/internal/parse.h +117 -0
- data/ext/kanayago/internal/rational.h +71 -0
- data/ext/kanayago/internal/re.h +28 -0
- data/ext/kanayago/internal/ruby_parser.h +125 -0
- data/ext/kanayago/internal/sanitizers.h +297 -0
- data/ext/kanayago/internal/serial.h +23 -0
- data/ext/kanayago/internal/static_assert.h +16 -0
- data/ext/kanayago/internal/string.h +186 -0
- data/ext/kanayago/internal/symbol.h +45 -0
- data/ext/kanayago/internal/thread.h +79 -0
- data/ext/kanayago/internal/variable.h +72 -0
- data/ext/kanayago/internal/vm.h +137 -0
- data/ext/kanayago/internal/warnings.h +16 -0
- data/ext/kanayago/internal.h +108 -0
- data/ext/kanayago/kanayago.c +420 -0
- data/ext/kanayago/kanayago.h +21 -0
- data/ext/kanayago/lex.c +302 -0
- data/ext/kanayago/method.h +255 -0
- data/ext/kanayago/node.c +440 -0
- data/ext/kanayago/node.h +111 -0
- data/ext/kanayago/node_name.inc +224 -0
- data/ext/kanayago/parse.c +26931 -0
- data/ext/kanayago/parse.h +244 -0
- data/ext/kanayago/parse.tmp.y +16145 -0
- data/ext/kanayago/parser_bits.h +564 -0
- data/ext/kanayago/parser_node.h +32 -0
- data/ext/kanayago/parser_st.c +164 -0
- data/ext/kanayago/parser_st.h +162 -0
- data/ext/kanayago/parser_value.h +106 -0
- data/ext/kanayago/probes.h +4 -0
- data/ext/kanayago/ruby_assert.h +14 -0
- data/ext/kanayago/ruby_atomic.h +23 -0
- data/ext/kanayago/ruby_parser.c +1165 -0
- data/ext/kanayago/rubyparser.h +1391 -0
- data/ext/kanayago/shape.h +234 -0
- data/ext/kanayago/st.c +2339 -0
- data/ext/kanayago/symbol.h +123 -0
- data/ext/kanayago/thread_pthread.h +168 -0
- data/ext/kanayago/universal_parser.c +230 -0
- data/ext/kanayago/vm_core.h +2215 -0
- data/ext/kanayago/vm_opts.h +67 -0
- data/lib/kanayago/version.rb +5 -0
- data/lib/kanayago.rb +11 -0
- data/sig/kanayago.rbs +4 -0
- metadata +116 -0
@@ -0,0 +1,123 @@
|
|
1
|
+
#ifndef RUBY_SYMBOL_H
|
2
|
+
#define RUBY_SYMBOL_H 1
|
3
|
+
/**********************************************************************
|
4
|
+
|
5
|
+
symbol.h -
|
6
|
+
|
7
|
+
$Author$
|
8
|
+
created at: Tue Jul 8 15:49:54 JST 2014
|
9
|
+
|
10
|
+
Copyright (C) 2014 Yukihiro Matsumoto
|
11
|
+
|
12
|
+
**********************************************************************/
|
13
|
+
|
14
|
+
#include "id.h"
|
15
|
+
#include "ruby/encoding.h"
|
16
|
+
|
17
|
+
#define DYNAMIC_ID_P(id) (!(id&ID_STATIC_SYM)&&id>tLAST_OP_ID)
|
18
|
+
#define STATIC_ID2SYM(id) (((VALUE)(id)<<RUBY_SPECIAL_SHIFT)|SYMBOL_FLAG)
|
19
|
+
|
20
|
+
#ifdef HAVE_BUILTIN___BUILTIN_CONSTANT_P
|
21
|
+
#define rb_id2sym(id) \
|
22
|
+
RB_GNUC_EXTENSION_BLOCK(__builtin_constant_p(id) && !DYNAMIC_ID_P(id) ? \
|
23
|
+
STATIC_ID2SYM(id) : rb_id2sym(id))
|
24
|
+
#endif
|
25
|
+
|
26
|
+
struct RSymbol {
|
27
|
+
struct RBasic basic;
|
28
|
+
st_index_t hashval;
|
29
|
+
VALUE fstr;
|
30
|
+
ID id;
|
31
|
+
};
|
32
|
+
|
33
|
+
#define RSYMBOL(obj) ((struct RSymbol *)(obj))
|
34
|
+
|
35
|
+
#define is_notop_id(id) ((id)>tLAST_OP_ID)
|
36
|
+
#define is_local_id(id) (id_type(id)==ID_LOCAL)
|
37
|
+
#define is_global_id(id) (id_type(id)==ID_GLOBAL)
|
38
|
+
#define is_instance_id(id) (id_type(id)==ID_INSTANCE)
|
39
|
+
#define is_attrset_id(id) ((id)==idASET||id_type(id)==ID_ATTRSET)
|
40
|
+
#define is_const_id(id) (id_type(id)==ID_CONST)
|
41
|
+
#define is_class_id(id) (id_type(id)==ID_CLASS)
|
42
|
+
#define is_junk_id(id) (id_type(id)==ID_JUNK)
|
43
|
+
|
44
|
+
static inline int
|
45
|
+
id_type(ID id)
|
46
|
+
{
|
47
|
+
if (is_notop_id(id)) {
|
48
|
+
return (int)(id&ID_SCOPE_MASK);
|
49
|
+
}
|
50
|
+
else {
|
51
|
+
return -1;
|
52
|
+
}
|
53
|
+
}
|
54
|
+
|
55
|
+
typedef uint32_t rb_id_serial_t;
|
56
|
+
static const uint32_t RB_ID_SERIAL_MAX = /* 256M on LP32 */
|
57
|
+
UINT32_MAX >>
|
58
|
+
((sizeof(ID)-sizeof(rb_id_serial_t))*CHAR_BIT < RUBY_ID_SCOPE_SHIFT ?
|
59
|
+
RUBY_ID_SCOPE_SHIFT : 0);
|
60
|
+
|
61
|
+
typedef struct {
|
62
|
+
rb_id_serial_t last_id;
|
63
|
+
st_table *str_sym;
|
64
|
+
VALUE ids;
|
65
|
+
VALUE dsymbol_fstr_hash;
|
66
|
+
} rb_symbols_t;
|
67
|
+
|
68
|
+
static inline rb_id_serial_t
|
69
|
+
rb_id_to_serial(ID id)
|
70
|
+
{
|
71
|
+
if (is_notop_id(id)) {
|
72
|
+
return (rb_id_serial_t)(id >> ID_SCOPE_SHIFT);
|
73
|
+
}
|
74
|
+
else {
|
75
|
+
return (rb_id_serial_t)id;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
|
79
|
+
static inline int
|
80
|
+
sym_type(VALUE sym)
|
81
|
+
{
|
82
|
+
ID id;
|
83
|
+
if (STATIC_SYM_P(sym)) {
|
84
|
+
id = RSHIFT(sym, RUBY_SPECIAL_SHIFT);
|
85
|
+
if (id<=tLAST_OP_ID) {
|
86
|
+
return -1;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
else {
|
90
|
+
id = RSYMBOL(sym)->id;
|
91
|
+
}
|
92
|
+
return (int)(id&ID_SCOPE_MASK);
|
93
|
+
}
|
94
|
+
|
95
|
+
#define is_local_sym(sym) (sym_type(sym)==ID_LOCAL)
|
96
|
+
#define is_global_sym(sym) (sym_type(sym)==ID_GLOBAL)
|
97
|
+
#define is_instance_sym(sym) (sym_type(sym)==ID_INSTANCE)
|
98
|
+
#define is_attrset_sym(sym) (sym_type(sym)==ID_ATTRSET)
|
99
|
+
#define is_const_sym(sym) (sym_type(sym)==ID_CONST)
|
100
|
+
#define is_class_sym(sym) (sym_type(sym)==ID_CLASS)
|
101
|
+
#define is_junk_sym(sym) (sym_type(sym)==ID_JUNK)
|
102
|
+
|
103
|
+
#ifndef RIPPER
|
104
|
+
RUBY_FUNC_EXPORTED
|
105
|
+
#else
|
106
|
+
RUBY_EXTERN
|
107
|
+
#endif
|
108
|
+
const uint_least32_t ruby_global_name_punct_bits[(0x7e - 0x20 + 31) / 32];
|
109
|
+
|
110
|
+
static inline int
|
111
|
+
is_global_name_punct(const int c)
|
112
|
+
{
|
113
|
+
if (c <= 0x20 || 0x7e < c) return 0;
|
114
|
+
return (ruby_global_name_punct_bits[(c - 0x20) / 32] >> (c % 32)) & 1;
|
115
|
+
}
|
116
|
+
|
117
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
118
|
+
|
119
|
+
int rb_enc_symname_type(const char *name, long len, rb_encoding *enc, unsigned int allowed_attrset);
|
120
|
+
size_t rb_sym_immortal_count(void);
|
121
|
+
|
122
|
+
RUBY_SYMBOL_EXPORT_END
|
123
|
+
#endif
|
@@ -0,0 +1,168 @@
|
|
1
|
+
#ifndef RUBY_THREAD_PTHREAD_H
|
2
|
+
#define RUBY_THREAD_PTHREAD_H
|
3
|
+
/**********************************************************************
|
4
|
+
|
5
|
+
thread_pthread.h -
|
6
|
+
|
7
|
+
$Author$
|
8
|
+
|
9
|
+
Copyright (C) 2004-2007 Koichi Sasada
|
10
|
+
|
11
|
+
**********************************************************************/
|
12
|
+
|
13
|
+
#ifdef HAVE_PTHREAD_NP_H
|
14
|
+
#include <pthread_np.h>
|
15
|
+
#endif
|
16
|
+
|
17
|
+
#define RB_NATIVETHREAD_LOCK_INIT PTHREAD_MUTEX_INITIALIZER
|
18
|
+
#define RB_NATIVETHREAD_COND_INIT PTHREAD_COND_INITIALIZER
|
19
|
+
|
20
|
+
// this data should be protected by timer_th.waiting_lock
|
21
|
+
struct rb_thread_sched_waiting {
|
22
|
+
enum thread_sched_waiting_flag {
|
23
|
+
thread_sched_waiting_none = 0x00,
|
24
|
+
thread_sched_waiting_timeout = 0x01,
|
25
|
+
thread_sched_waiting_io_read = 0x02,
|
26
|
+
thread_sched_waiting_io_write = 0x08,
|
27
|
+
thread_sched_waiting_io_force = 0x40, // ignore readable
|
28
|
+
} flags;
|
29
|
+
|
30
|
+
struct {
|
31
|
+
// should be compat with hrtime.h
|
32
|
+
#ifdef MY_RUBY_BUILD_MAY_TIME_TRAVEL
|
33
|
+
int128_t timeout;
|
34
|
+
#else
|
35
|
+
uint64_t timeout;
|
36
|
+
#endif
|
37
|
+
int fd; // -1 for timeout only
|
38
|
+
int result;
|
39
|
+
} data;
|
40
|
+
|
41
|
+
// connected to timer_th.waiting
|
42
|
+
struct ccan_list_node node;
|
43
|
+
};
|
44
|
+
|
45
|
+
// per-Thead scheduler helper data
|
46
|
+
struct rb_thread_sched_item {
|
47
|
+
struct {
|
48
|
+
struct ccan_list_node ubf;
|
49
|
+
|
50
|
+
// connected to ractor->threads.sched.reqdyq
|
51
|
+
// locked by ractor->threads.sched.lock
|
52
|
+
struct ccan_list_node readyq;
|
53
|
+
|
54
|
+
// connected to vm->ractor.sched.timeslice_threads
|
55
|
+
// locked by vm->ractor.sched.lock
|
56
|
+
struct ccan_list_node timeslice_threads;
|
57
|
+
|
58
|
+
// connected to vm->ractor.sched.running_threads
|
59
|
+
// locked by vm->ractor.sched.lock
|
60
|
+
struct ccan_list_node running_threads;
|
61
|
+
|
62
|
+
// connected to vm->ractor.sched.zombie_threads
|
63
|
+
struct ccan_list_node zombie_threads;
|
64
|
+
} node;
|
65
|
+
|
66
|
+
struct rb_thread_sched_waiting waiting_reason;
|
67
|
+
|
68
|
+
bool finished;
|
69
|
+
bool malloc_stack;
|
70
|
+
void *context_stack;
|
71
|
+
struct coroutine_context *context;
|
72
|
+
};
|
73
|
+
|
74
|
+
struct rb_native_thread {
|
75
|
+
rb_atomic_t serial;
|
76
|
+
struct rb_vm_struct *vm;
|
77
|
+
|
78
|
+
rb_nativethread_id_t thread_id;
|
79
|
+
|
80
|
+
#ifdef RB_THREAD_T_HAS_NATIVE_ID
|
81
|
+
int tid;
|
82
|
+
#endif
|
83
|
+
|
84
|
+
struct rb_thread_struct *running_thread;
|
85
|
+
|
86
|
+
// to control native thread
|
87
|
+
#if defined(__GLIBC__) || defined(__FreeBSD__)
|
88
|
+
union
|
89
|
+
#else
|
90
|
+
/*
|
91
|
+
* assume the platform condvars are badly implemented and have a
|
92
|
+
* "memory" of which mutex they're associated with
|
93
|
+
*/
|
94
|
+
struct
|
95
|
+
#endif
|
96
|
+
{
|
97
|
+
rb_nativethread_cond_t intr; /* th->interrupt_lock */
|
98
|
+
rb_nativethread_cond_t readyq; /* use sched->lock */
|
99
|
+
} cond;
|
100
|
+
|
101
|
+
#ifdef USE_SIGALTSTACK
|
102
|
+
void *altstack;
|
103
|
+
#endif
|
104
|
+
|
105
|
+
struct coroutine_context *nt_context;
|
106
|
+
int dedicated;
|
107
|
+
|
108
|
+
size_t machine_stack_maxsize;
|
109
|
+
};
|
110
|
+
|
111
|
+
#undef except
|
112
|
+
#undef try
|
113
|
+
#undef leave
|
114
|
+
#undef finally
|
115
|
+
|
116
|
+
// per-Ractor
|
117
|
+
struct rb_thread_sched {
|
118
|
+
rb_nativethread_lock_t lock_;
|
119
|
+
#if VM_CHECK_MODE
|
120
|
+
struct rb_thread_struct *lock_owner;
|
121
|
+
#endif
|
122
|
+
struct rb_thread_struct *running; // running thread or NULL
|
123
|
+
bool is_running;
|
124
|
+
bool is_running_timeslice;
|
125
|
+
bool enable_mn_threads;
|
126
|
+
|
127
|
+
struct ccan_list_head readyq;
|
128
|
+
int readyq_cnt;
|
129
|
+
// ractor scheduling
|
130
|
+
struct ccan_list_node grq_node;
|
131
|
+
};
|
132
|
+
|
133
|
+
#ifdef RB_THREAD_LOCAL_SPECIFIER
|
134
|
+
NOINLINE(void rb_current_ec_set(struct rb_execution_context_struct *));
|
135
|
+
NOINLINE(struct rb_execution_context_struct *rb_current_ec_noinline(void));
|
136
|
+
|
137
|
+
# ifdef __APPLE__
|
138
|
+
// on Darwin, TLS can not be accessed across .so
|
139
|
+
NOINLINE(struct rb_execution_context_struct *rb_current_ec(void));
|
140
|
+
# else
|
141
|
+
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER struct rb_execution_context_struct *ruby_current_ec;
|
142
|
+
|
143
|
+
// for RUBY_DEBUG_LOG()
|
144
|
+
RUBY_EXTERN RB_THREAD_LOCAL_SPECIFIER rb_atomic_t ruby_nt_serial;
|
145
|
+
#define RUBY_NT_SERIAL 1
|
146
|
+
# endif
|
147
|
+
#else
|
148
|
+
typedef pthread_key_t native_tls_key_t;
|
149
|
+
|
150
|
+
static inline void *
|
151
|
+
native_tls_get(native_tls_key_t key)
|
152
|
+
{
|
153
|
+
// return value should be checked by caller
|
154
|
+
return pthread_getspecific(key);
|
155
|
+
}
|
156
|
+
|
157
|
+
static inline void
|
158
|
+
native_tls_set(native_tls_key_t key, void *ptr)
|
159
|
+
{
|
160
|
+
if (UNLIKELY(pthread_setspecific(key, ptr) != 0)) {
|
161
|
+
rb_bug("pthread_setspecific error");
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
165
|
+
RUBY_EXTERN native_tls_key_t ruby_current_ec_key;
|
166
|
+
#endif
|
167
|
+
|
168
|
+
#endif /* RUBY_THREAD_PTHREAD_H */
|
@@ -0,0 +1,230 @@
|
|
1
|
+
#include <alloca.h>
|
2
|
+
#include <string.h>
|
3
|
+
#include <stdarg.h>
|
4
|
+
#include <stdbool.h>
|
5
|
+
#include <stddef.h>
|
6
|
+
|
7
|
+
/* Dependency */
|
8
|
+
#include "internal/parse.h"
|
9
|
+
#include "node.h"
|
10
|
+
#include "id.h"
|
11
|
+
|
12
|
+
#include "internal/compilers.h"
|
13
|
+
#include "ruby/backward/2/inttypes.h"
|
14
|
+
#include "probes.h"
|
15
|
+
|
16
|
+
#define LIKELY(x) RB_LIKELY(x)
|
17
|
+
#define UNLIKELY(x) RB_UNLIKELY(x)
|
18
|
+
#ifndef TRUE
|
19
|
+
# define TRUE 1
|
20
|
+
#endif
|
21
|
+
|
22
|
+
#ifndef FALSE
|
23
|
+
# define FALSE 0
|
24
|
+
#endif
|
25
|
+
#define numberof(array) ((int)(sizeof(array) / sizeof((array)[0])))
|
26
|
+
#define rb_strlen_lit(str) (sizeof(str "") - 1)
|
27
|
+
#undef FIXNUM_MAX
|
28
|
+
#define FIXNUM_MAX (LONG_MAX / 2)
|
29
|
+
#undef RSTRING_GETMEM
|
30
|
+
#define RSTRING_GETMEM(str, ptrvar, lenvar) \
|
31
|
+
((ptrvar) = RSTRING_PTR(str), \
|
32
|
+
(lenvar) = RSTRING_LEN(str))
|
33
|
+
|
34
|
+
/* parser_st */
|
35
|
+
#define st_table parser_st_table
|
36
|
+
#define st_data_t parser_st_data_t
|
37
|
+
#define st_hash_type parser_st_hash_type
|
38
|
+
#define ST_CONTINUE ST2_CONTINUE
|
39
|
+
#define ST_STOP ST2_STOP
|
40
|
+
#define ST_DELETE ST2_DELETE
|
41
|
+
#define ST_CHECK ST2_CHECK
|
42
|
+
#define ST_REPLACE ST2_REPLACE
|
43
|
+
#undef st_init_numtable
|
44
|
+
#define st_init_numtable rb_parser_st_init_numtable
|
45
|
+
#undef st_free_table
|
46
|
+
#define st_free_table rb_parser_st_free_table
|
47
|
+
#undef st_init_table_with_size
|
48
|
+
#define st_init_table_with_size rb_parser_st_init_table_with_size
|
49
|
+
#undef st_insert
|
50
|
+
#define st_insert rb_parser_st_insert
|
51
|
+
#undef st_foreach
|
52
|
+
#define st_foreach rb_parser_st_foreach
|
53
|
+
#undef st_delete
|
54
|
+
#define st_delete rb_parser_st_delete
|
55
|
+
#undef st_is_member
|
56
|
+
#define st_is_member parser_st_is_member
|
57
|
+
#undef st_init_table
|
58
|
+
#define st_init_table rb_parser_st_init_table
|
59
|
+
#undef st_lookup
|
60
|
+
#define st_lookup rb_parser_st_lookup
|
61
|
+
|
62
|
+
#define rb_encoding const void
|
63
|
+
|
64
|
+
#undef xmalloc
|
65
|
+
#define xmalloc p->config->malloc
|
66
|
+
#undef xcalloc
|
67
|
+
#define xcalloc p->config->calloc
|
68
|
+
#undef xrealloc
|
69
|
+
#define xrealloc p->config->realloc
|
70
|
+
#undef ALLOC_N
|
71
|
+
#define ALLOC_N(type,n) ((type *)p->config->alloc_n((n), sizeof(type)))
|
72
|
+
#undef ALLOC
|
73
|
+
#define ALLOC(type) ((type *)p->config->alloc(sizeof(type)))
|
74
|
+
#undef xfree
|
75
|
+
#define xfree p->config->free
|
76
|
+
#undef ALLOCA_N
|
77
|
+
// alloca(rbimpl_size_mul_or_raise(x, y));
|
78
|
+
#define ALLOCA_N(type,n) ((type *)alloca(sizeof(type) * (n)))
|
79
|
+
#undef REALLOC_N
|
80
|
+
#define REALLOC_N(var,type,n) ((var) = (type *)p->config->realloc_n((void *)var, n, sizeof(type)))
|
81
|
+
#undef ZALLOC
|
82
|
+
#define ZALLOC(type) ((type *)p->config->zalloc(sizeof(type)))
|
83
|
+
#undef MEMMOVE
|
84
|
+
#define MEMMOVE(p1,p2,type,n) (p->config->rb_memmove((p1), (p2), sizeof(type), (n)))
|
85
|
+
#undef MEMCPY
|
86
|
+
#define MEMCPY(p1,p2,type,n) (p->config->nonempty_memcpy((p1), (p2), sizeof(type), (n)))
|
87
|
+
|
88
|
+
#define compile_callback p->config->compile_callback
|
89
|
+
#define reg_named_capture_assign p->config->reg_named_capture_assign
|
90
|
+
|
91
|
+
#define rb_attr_get p->config->attr_get
|
92
|
+
|
93
|
+
#define rb_ary_new p->config->ary_new
|
94
|
+
#define rb_ary_push p->config->ary_push
|
95
|
+
#undef rb_ary_new_from_args
|
96
|
+
#define rb_ary_new_from_args p->config->ary_new_from_args
|
97
|
+
#define rb_ary_unshift p->config->ary_unshift
|
98
|
+
|
99
|
+
#define rb_make_temporary_id p->config->make_temporary_id
|
100
|
+
#define is_local_id p->config->is_local_id
|
101
|
+
#define is_attrset_id p->config->is_attrset_id
|
102
|
+
#define is_global_name_punct p->config->is_global_name_punct
|
103
|
+
#define id_type p->config->id_type
|
104
|
+
#define rb_id_attrset p->config->id_attrset
|
105
|
+
#undef rb_intern
|
106
|
+
#define rb_intern p->config->intern
|
107
|
+
#define rb_intern2 p->config->intern2
|
108
|
+
#define rb_intern3 p->config->intern3
|
109
|
+
#define rb_intern_str p->config->intern_str
|
110
|
+
#define is_notop_id p->config->is_notop_id
|
111
|
+
#define rb_enc_symname_type p->config->enc_symname_type
|
112
|
+
#define rb_id2name p->config->id2name
|
113
|
+
#define rb_id2str p->config->id2str
|
114
|
+
#undef ID2SYM
|
115
|
+
#define ID2SYM p->config->id2sym
|
116
|
+
#undef SYM2ID
|
117
|
+
#define SYM2ID p->config->sym2id
|
118
|
+
|
119
|
+
#define rb_str_catf p->config->str_catf
|
120
|
+
#undef rb_str_cat_cstr
|
121
|
+
#define rb_str_cat_cstr p->config->str_cat_cstr
|
122
|
+
#define rb_str_modify p->config->str_modify
|
123
|
+
#define rb_str_set_len p->config->str_set_len
|
124
|
+
#define rb_str_cat p->config->str_cat
|
125
|
+
#define rb_str_resize p->config->str_resize
|
126
|
+
#undef rb_str_new
|
127
|
+
#define rb_str_new p->config->str_new
|
128
|
+
#undef rb_str_new_cstr
|
129
|
+
#define rb_str_new_cstr p->config->str_new_cstr
|
130
|
+
#define rb_str_to_interned_str p->config->str_to_interned_str
|
131
|
+
#define is_ascii_string p->config->is_ascii_string
|
132
|
+
#define rb_enc_str_new p->config->enc_str_new
|
133
|
+
#define rb_str_vcatf p->config->str_vcatf
|
134
|
+
#define rb_sprintf p->config->rb_sprintf
|
135
|
+
#undef RSTRING_PTR
|
136
|
+
#define RSTRING_PTR p->config->rstring_ptr
|
137
|
+
#undef RSTRING_END
|
138
|
+
#define RSTRING_END p->config->rstring_end
|
139
|
+
#undef RSTRING_LEN
|
140
|
+
#define RSTRING_LEN p->config->rstring_len
|
141
|
+
#define rb_obj_as_string p->config->obj_as_string
|
142
|
+
|
143
|
+
#undef INT2NUM
|
144
|
+
#define INT2NUM p->config->int2num
|
145
|
+
|
146
|
+
#define rb_stderr_tty_p p->config->stderr_tty_p
|
147
|
+
#define rb_write_error_str p->config->write_error_str
|
148
|
+
#define rb_io_write p->config->io_write
|
149
|
+
#define rb_io_flush p->config->io_flush
|
150
|
+
#define rb_io_puts p->config->io_puts
|
151
|
+
|
152
|
+
#define rb_ractor_stdout p->config->debug_output_stdout
|
153
|
+
#define rb_ractor_stderr p->config->debug_output_stderr
|
154
|
+
|
155
|
+
#define rb_is_usascii_enc p->config->is_usascii_enc
|
156
|
+
#define rb_enc_isalnum p->config->enc_isalnum
|
157
|
+
#define rb_enc_precise_mbclen p->config->enc_precise_mbclen
|
158
|
+
#define MBCLEN_CHARFOUND_P p->config->mbclen_charfound_p
|
159
|
+
#define MBCLEN_CHARFOUND_LEN p->config->mbclen_charfound_len
|
160
|
+
#define rb_enc_name p->config->enc_name
|
161
|
+
#define rb_enc_prev_char p->config->enc_prev_char
|
162
|
+
#define rb_enc_get p->config->enc_get
|
163
|
+
#define rb_enc_asciicompat p->config->enc_asciicompat
|
164
|
+
#define rb_utf8_encoding p->config->utf8_encoding
|
165
|
+
#define rb_enc_associate p->config->enc_associate
|
166
|
+
#define rb_ascii8bit_encoding p->config->ascii8bit_encoding
|
167
|
+
#define rb_enc_codelen p->config->enc_codelen
|
168
|
+
#define rb_enc_mbcput p->config->enc_mbcput
|
169
|
+
#define rb_enc_find_index p->config->enc_find_index
|
170
|
+
#define rb_enc_from_index p->config->enc_from_index
|
171
|
+
#define rb_enc_isspace p->config->enc_isspace
|
172
|
+
#define ENC_CODERANGE_7BIT p->config->enc_coderange_7bit
|
173
|
+
#define ENC_CODERANGE_UNKNOWN p->config->enc_coderange_unknown
|
174
|
+
#define rb_usascii_encoding p->config->usascii_encoding
|
175
|
+
|
176
|
+
#define rb_local_defined p->config->local_defined
|
177
|
+
#define rb_dvar_defined p->config->dvar_defined
|
178
|
+
|
179
|
+
#define rb_syntax_error_append p->config->syntax_error_append
|
180
|
+
#define rb_raise p->config->raise
|
181
|
+
#define syntax_error_new p->config->syntax_error_new
|
182
|
+
|
183
|
+
#define rb_errinfo p->config->errinfo
|
184
|
+
#define rb_set_errinfo p->config->set_errinfo
|
185
|
+
#define rb_exc_raise p->config->exc_raise
|
186
|
+
#define rb_make_exception p->config->make_exception
|
187
|
+
|
188
|
+
#define ruby_sized_xfree p->config->sized_xfree
|
189
|
+
#define SIZED_REALLOC_N(v, T, m, n) ((v) = (T *)p->config->sized_realloc_n((void *)(v), (m), sizeof(T), (n)))
|
190
|
+
#undef RB_GC_GUARD
|
191
|
+
#define RB_GC_GUARD p->config->gc_guard
|
192
|
+
#define rb_gc_mark p->config->gc_mark
|
193
|
+
|
194
|
+
#define rb_reg_compile p->config->reg_compile
|
195
|
+
#define rb_reg_check_preprocess p->config->reg_check_preprocess
|
196
|
+
#define rb_memcicmp p->config->memcicmp
|
197
|
+
|
198
|
+
#define rb_compile_warn p->config->compile_warn
|
199
|
+
#define rb_compile_warning p->config->compile_warning
|
200
|
+
#define rb_bug p->config->bug
|
201
|
+
#define rb_fatal p->config->fatal
|
202
|
+
#undef ruby_verbose
|
203
|
+
#define ruby_verbose p->config->verbose()
|
204
|
+
#undef errno
|
205
|
+
#define errno (*p->config->errno_ptr())
|
206
|
+
|
207
|
+
#define rb_make_backtrace p->config->make_backtrace
|
208
|
+
|
209
|
+
#define ruby_scan_hex p->config->scan_hex
|
210
|
+
#define ruby_scan_oct p->config->scan_oct
|
211
|
+
#define ruby_scan_digits p->config->scan_digits
|
212
|
+
#define strtod p->config->strtod
|
213
|
+
|
214
|
+
#undef RTEST
|
215
|
+
#define RTEST p->config->rtest
|
216
|
+
#undef NIL_P
|
217
|
+
#define NIL_P p->config->nil_p
|
218
|
+
#undef Qnil
|
219
|
+
#define Qnil p->config->qnil
|
220
|
+
#undef Qfalse
|
221
|
+
#define Qfalse p->config->qfalse
|
222
|
+
#define rb_eArgError p->config->eArgError()
|
223
|
+
#undef rb_long2int
|
224
|
+
#define rb_long2int p->config->long2int
|
225
|
+
#define rb_enc_mbminlen p->config->enc_mbminlen
|
226
|
+
#define rb_enc_isascii p->config->enc_isascii
|
227
|
+
#define rb_enc_mbc_to_codepoint p->config->enc_mbc_to_codepoint
|
228
|
+
|
229
|
+
#define rb_ast_new() \
|
230
|
+
rb_ast_new(p->config)
|