debase-ruby_core_source 0.10.2 → 0.10.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/addr2line.h +21 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/build_assert/build_assert.h +40 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/check_type/check_type.h +63 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/container_of/container_of.h +142 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/list/list.h +773 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/str/str.h +16 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/constant.h +51 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/debug_counter.h +109 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/dln.h +51 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/encindex.h +69 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/eval_intern.h +334 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/gc.h +116 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/id.h +250 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/id_table.h +31 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/insns.inc +217 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/insns_info.inc +1570 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/internal.h +2036 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/iseq.h +307 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/known_errors.inc +746 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/method.h +218 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/node.h +540 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/node_name.inc +198 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/opt_sc.inc +1601 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/optinsn.inc +103 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/optunifs.inc +61 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/parse.h +206 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/probes_helper.h +43 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regenc.h +254 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regint.h +938 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regparse.h +370 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/revision.h +1 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ruby_assert.h +54 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ruby_atomic.h +233 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/siphash.h +48 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/symbol.h +108 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/thread_pthread.h +54 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/thread_win32.h +36 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/timev.h +42 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/transcode_data.h +139 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/version.h +73 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm.inc +3667 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_call_iseq_optimized.inc +213 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_core.h +1767 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_debug.h +37 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_exec.h +192 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_insnhelper.h +255 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_opts.h +56 -0
- data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vmtc.inc +214 -0
- data/lib/debase/ruby_core_source/version.rb +1 -1
- metadata +51 -3
@@ -0,0 +1,116 @@
|
|
1
|
+
|
2
|
+
#ifndef RUBY_GC_H
|
3
|
+
#define RUBY_GC_H 1
|
4
|
+
|
5
|
+
#if defined(__x86_64__) && !defined(_ILP32) && defined(__GNUC__)
|
6
|
+
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movq\t%%rsp, %0" : "=r" (*(p)))
|
7
|
+
#elif defined(__i386) && defined(__GNUC__)
|
8
|
+
#define SET_MACHINE_STACK_END(p) __asm__ __volatile__ ("movl\t%%esp, %0" : "=r" (*(p)))
|
9
|
+
#else
|
10
|
+
NOINLINE(void rb_gc_set_stack_end(VALUE **stack_end_p));
|
11
|
+
#define SET_MACHINE_STACK_END(p) rb_gc_set_stack_end(p)
|
12
|
+
#define USE_CONSERVATIVE_STACK_END
|
13
|
+
#endif
|
14
|
+
|
15
|
+
/* for GC debug */
|
16
|
+
|
17
|
+
#ifndef RUBY_MARK_FREE_DEBUG
|
18
|
+
#define RUBY_MARK_FREE_DEBUG 0
|
19
|
+
#endif
|
20
|
+
|
21
|
+
#if RUBY_MARK_FREE_DEBUG
|
22
|
+
extern int ruby_gc_debug_indent;
|
23
|
+
|
24
|
+
static inline void
|
25
|
+
rb_gc_debug_indent(void)
|
26
|
+
{
|
27
|
+
printf("%*s", ruby_gc_debug_indent, "");
|
28
|
+
}
|
29
|
+
|
30
|
+
static inline void
|
31
|
+
rb_gc_debug_body(const char *mode, const char *msg, int st, void *ptr)
|
32
|
+
{
|
33
|
+
if (st == 0) {
|
34
|
+
ruby_gc_debug_indent--;
|
35
|
+
}
|
36
|
+
rb_gc_debug_indent();
|
37
|
+
printf("%s: %s %s (%p)\n", mode, st ? "->" : "<-", msg, ptr);
|
38
|
+
|
39
|
+
if (st) {
|
40
|
+
ruby_gc_debug_indent++;
|
41
|
+
}
|
42
|
+
|
43
|
+
fflush(stdout);
|
44
|
+
}
|
45
|
+
|
46
|
+
#define RUBY_MARK_ENTER(msg) rb_gc_debug_body("mark", (msg), 1, ptr)
|
47
|
+
#define RUBY_MARK_LEAVE(msg) rb_gc_debug_body("mark", (msg), 0, ptr)
|
48
|
+
#define RUBY_FREE_ENTER(msg) rb_gc_debug_body("free", (msg), 1, ptr)
|
49
|
+
#define RUBY_FREE_LEAVE(msg) rb_gc_debug_body("free", (msg), 0, ptr)
|
50
|
+
#define RUBY_GC_INFO rb_gc_debug_indent(); printf
|
51
|
+
|
52
|
+
#else
|
53
|
+
#define RUBY_MARK_ENTER(msg)
|
54
|
+
#define RUBY_MARK_LEAVE(msg)
|
55
|
+
#define RUBY_FREE_ENTER(msg)
|
56
|
+
#define RUBY_FREE_LEAVE(msg)
|
57
|
+
#define RUBY_GC_INFO if(0)printf
|
58
|
+
#endif
|
59
|
+
|
60
|
+
#define RUBY_MARK_UNLESS_NULL(ptr) do { \
|
61
|
+
VALUE markobj = (ptr); \
|
62
|
+
if (RTEST(markobj)) {rb_gc_mark(markobj);} \
|
63
|
+
} while (0)
|
64
|
+
#define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
|
65
|
+
|
66
|
+
#if STACK_GROW_DIRECTION > 0
|
67
|
+
# define STACK_UPPER(x, a, b) (a)
|
68
|
+
#elif STACK_GROW_DIRECTION < 0
|
69
|
+
# define STACK_UPPER(x, a, b) (b)
|
70
|
+
#else
|
71
|
+
RUBY_EXTERN int ruby_stack_grow_direction;
|
72
|
+
int ruby_get_stack_grow_direction(volatile VALUE *addr);
|
73
|
+
# define stack_growup_p(x) ( \
|
74
|
+
(ruby_stack_grow_direction ? \
|
75
|
+
ruby_stack_grow_direction : \
|
76
|
+
ruby_get_stack_grow_direction(x)) > 0)
|
77
|
+
# define STACK_UPPER(x, a, b) (stack_growup_p(x) ? (a) : (b))
|
78
|
+
#endif
|
79
|
+
|
80
|
+
#if STACK_GROW_DIRECTION
|
81
|
+
#define STACK_GROW_DIR_DETECTION
|
82
|
+
#define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
|
83
|
+
#else
|
84
|
+
#define STACK_GROW_DIR_DETECTION VALUE stack_grow_dir_detection
|
85
|
+
#define STACK_DIR_UPPER(a,b) STACK_UPPER(&stack_grow_dir_detection, (a), (b))
|
86
|
+
#endif
|
87
|
+
#define IS_STACK_DIR_UPPER() STACK_DIR_UPPER(1,0)
|
88
|
+
|
89
|
+
const char *rb_obj_info(VALUE obj);
|
90
|
+
const char *rb_raw_obj_info(char *buff, const int buff_size, VALUE obj);
|
91
|
+
void rb_obj_info_dump(VALUE obj);
|
92
|
+
|
93
|
+
struct rb_thread_struct;
|
94
|
+
|
95
|
+
RUBY_SYMBOL_EXPORT_BEGIN
|
96
|
+
|
97
|
+
/* exports for objspace module */
|
98
|
+
size_t rb_objspace_data_type_memsize(VALUE obj);
|
99
|
+
void rb_objspace_reachable_objects_from(VALUE obj, void (func)(VALUE, void *), void *data);
|
100
|
+
void rb_objspace_reachable_objects_from_root(void (func)(const char *category, VALUE, void *), void *data);
|
101
|
+
int rb_objspace_markable_object_p(VALUE obj);
|
102
|
+
int rb_objspace_internal_object_p(VALUE obj);
|
103
|
+
int rb_objspace_marked_object_p(VALUE obj);
|
104
|
+
int rb_objspace_garbage_object_p(VALUE obj);
|
105
|
+
|
106
|
+
void rb_objspace_each_objects(
|
107
|
+
int (*callback)(void *start, void *end, size_t stride, void *data),
|
108
|
+
void *data);
|
109
|
+
|
110
|
+
void rb_objspace_each_objects_without_setup(
|
111
|
+
int (*callback)(void *, void *, size_t, void *),
|
112
|
+
void *data);
|
113
|
+
|
114
|
+
RUBY_SYMBOL_EXPORT_END
|
115
|
+
|
116
|
+
#endif /* RUBY_GC_H */
|
@@ -0,0 +1,250 @@
|
|
1
|
+
/* DO NOT EDIT THIS FILE DIRECTLY */
|
2
|
+
/**********************************************************************
|
3
|
+
|
4
|
+
id.h -
|
5
|
+
|
6
|
+
$Author: nobu $
|
7
|
+
created at: Sun Oct 19 21:12:51 2008
|
8
|
+
|
9
|
+
Copyright (C) 2007 Koichi Sasada
|
10
|
+
|
11
|
+
**********************************************************************/
|
12
|
+
|
13
|
+
#ifndef RUBY_ID_H
|
14
|
+
#define RUBY_ID_H
|
15
|
+
|
16
|
+
enum ruby_id_types {
|
17
|
+
RUBY_ID_STATIC_SYM = 0x01,
|
18
|
+
RUBY_ID_LOCAL = 0x00,
|
19
|
+
RUBY_ID_INSTANCE = (0x01<<1),
|
20
|
+
RUBY_ID_GLOBAL = (0x03<<1),
|
21
|
+
RUBY_ID_ATTRSET = (0x04<<1),
|
22
|
+
RUBY_ID_CONST = (0x05<<1),
|
23
|
+
RUBY_ID_CLASS = (0x06<<1),
|
24
|
+
RUBY_ID_JUNK = (0x07<<1),
|
25
|
+
RUBY_ID_INTERNAL = RUBY_ID_JUNK,
|
26
|
+
RUBY_ID_SCOPE_SHIFT = 4,
|
27
|
+
RUBY_ID_SCOPE_MASK = (~(~0U<<(RUBY_ID_SCOPE_SHIFT-1))<<1)
|
28
|
+
};
|
29
|
+
|
30
|
+
#define ID_STATIC_SYM RUBY_ID_STATIC_SYM
|
31
|
+
#define ID_SCOPE_SHIFT RUBY_ID_SCOPE_SHIFT
|
32
|
+
#define ID_SCOPE_MASK RUBY_ID_SCOPE_MASK
|
33
|
+
#define ID_LOCAL RUBY_ID_LOCAL
|
34
|
+
#define ID_INSTANCE RUBY_ID_INSTANCE
|
35
|
+
#define ID_GLOBAL RUBY_ID_GLOBAL
|
36
|
+
#define ID_ATTRSET RUBY_ID_ATTRSET
|
37
|
+
#define ID_CONST RUBY_ID_CONST
|
38
|
+
#define ID_CLASS RUBY_ID_CLASS
|
39
|
+
#define ID_JUNK RUBY_ID_JUNK
|
40
|
+
#define ID_INTERNAL RUBY_ID_INTERNAL
|
41
|
+
|
42
|
+
#define symIFUNC ID2SYM(idIFUNC)
|
43
|
+
#define symCFUNC ID2SYM(idCFUNC)
|
44
|
+
|
45
|
+
#define RUBY_TOKEN_DOT2 128
|
46
|
+
#define RUBY_TOKEN_DOT3 129
|
47
|
+
#define RUBY_TOKEN_UPLUS 130
|
48
|
+
#define RUBY_TOKEN_UMINUS 131
|
49
|
+
#define RUBY_TOKEN_POW 132
|
50
|
+
#define RUBY_TOKEN_CMP 133
|
51
|
+
#define RUBY_TOKEN_LSHFT 134
|
52
|
+
#define RUBY_TOKEN_RSHFT 135
|
53
|
+
#define RUBY_TOKEN_LEQ 136
|
54
|
+
#define RUBY_TOKEN_GEQ 137
|
55
|
+
#define RUBY_TOKEN_EQ 138
|
56
|
+
#define RUBY_TOKEN_EQQ 139
|
57
|
+
#define RUBY_TOKEN_NEQ 140
|
58
|
+
#define RUBY_TOKEN_MATCH 141
|
59
|
+
#define RUBY_TOKEN_NMATCH 142
|
60
|
+
#define RUBY_TOKEN_AREF 143
|
61
|
+
#define RUBY_TOKEN_ASET 144
|
62
|
+
#define RUBY_TOKEN_COLON2 145
|
63
|
+
#define RUBY_TOKEN_ANDOP 146
|
64
|
+
#define RUBY_TOKEN_OROP 147
|
65
|
+
#define RUBY_TOKEN_ANDDOT 148
|
66
|
+
#define RUBY_TOKEN(t) RUBY_TOKEN_##t
|
67
|
+
|
68
|
+
#define RUBY_TOKEN2ID_TYPE(tok, type) ((tok<<RUBY_ID_SCOPE_SHIFT)|type|RUBY_ID_STATIC_SYM)
|
69
|
+
#define TOKEN2LOCALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_LOCAL)
|
70
|
+
#define TOKEN2INSTANCEID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_INSTANCE)
|
71
|
+
#define TOKEN2GLOBALID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_GLOBAL)
|
72
|
+
#define TOKEN2CONSTID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CONST)
|
73
|
+
#define TOKEN2CLASSID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_CLASS)
|
74
|
+
#define TOKEN2ATTRSETID(tok) RUBY_TOKEN2ID_TYPE(tok, RUBY_ID_ATTRSET)
|
75
|
+
|
76
|
+
enum ruby_method_ids {
|
77
|
+
idDot2 = RUBY_TOKEN(DOT2),
|
78
|
+
idDot3 = RUBY_TOKEN(DOT3),
|
79
|
+
idUPlus = RUBY_TOKEN(UPLUS),
|
80
|
+
idUMinus = RUBY_TOKEN(UMINUS),
|
81
|
+
idPow = RUBY_TOKEN(POW),
|
82
|
+
idCmp = RUBY_TOKEN(CMP),
|
83
|
+
idPLUS = '+',
|
84
|
+
idMINUS = '-',
|
85
|
+
idMULT = '*',
|
86
|
+
idDIV = '/',
|
87
|
+
idMOD = '%',
|
88
|
+
idLTLT = RUBY_TOKEN(LSHFT),
|
89
|
+
idGTGT = RUBY_TOKEN(RSHFT),
|
90
|
+
idLT = '<',
|
91
|
+
idLE = RUBY_TOKEN(LEQ),
|
92
|
+
idGT = '>',
|
93
|
+
idGE = RUBY_TOKEN(GEQ),
|
94
|
+
idEq = RUBY_TOKEN(EQ),
|
95
|
+
idEqq = RUBY_TOKEN(EQQ),
|
96
|
+
idNeq = RUBY_TOKEN(NEQ),
|
97
|
+
idNot = '!',
|
98
|
+
idBackquote = '`',
|
99
|
+
idEqTilde = RUBY_TOKEN(MATCH),
|
100
|
+
idNeqTilde = RUBY_TOKEN(NMATCH),
|
101
|
+
idAREF = RUBY_TOKEN(AREF),
|
102
|
+
idASET = RUBY_TOKEN(ASET),
|
103
|
+
idCOLON2 = RUBY_TOKEN(COLON2),
|
104
|
+
idANDOP = RUBY_TOKEN(ANDOP),
|
105
|
+
idOROP = RUBY_TOKEN(OROP),
|
106
|
+
idANDDOT = RUBY_TOKEN(ANDDOT),
|
107
|
+
tPRESERVED_ID_BEGIN = 148,
|
108
|
+
idNULL,
|
109
|
+
idEmptyP,
|
110
|
+
idEqlP,
|
111
|
+
idRespond_to,
|
112
|
+
idRespond_to_missing,
|
113
|
+
idIFUNC,
|
114
|
+
idCFUNC,
|
115
|
+
id_core_set_method_alias,
|
116
|
+
id_core_set_variable_alias,
|
117
|
+
id_core_undef_method,
|
118
|
+
id_core_define_method,
|
119
|
+
id_core_define_singleton_method,
|
120
|
+
id_core_set_postexe,
|
121
|
+
id_core_hash_from_ary,
|
122
|
+
id_core_hash_merge_ary,
|
123
|
+
id_core_hash_merge_ptr,
|
124
|
+
id_core_hash_merge_kwd,
|
125
|
+
id_debug_created_info,
|
126
|
+
tPRESERVED_ID_END,
|
127
|
+
tTOKEN_LOCAL_BEGIN = tPRESERVED_ID_END-1,
|
128
|
+
tMax,
|
129
|
+
tMin,
|
130
|
+
tFreeze,
|
131
|
+
tInspect,
|
132
|
+
tIntern,
|
133
|
+
tObject_id,
|
134
|
+
tConst_missing,
|
135
|
+
tMethodMissing,
|
136
|
+
tMethod_added,
|
137
|
+
tSingleton_method_added,
|
138
|
+
tMethod_removed,
|
139
|
+
tSingleton_method_removed,
|
140
|
+
tMethod_undefined,
|
141
|
+
tSingleton_method_undefined,
|
142
|
+
tLength,
|
143
|
+
tSize,
|
144
|
+
tGets,
|
145
|
+
tSucc,
|
146
|
+
tEach,
|
147
|
+
tProc,
|
148
|
+
tLambda,
|
149
|
+
tSend,
|
150
|
+
t__send__,
|
151
|
+
t__attached__,
|
152
|
+
tInitialize,
|
153
|
+
tInitialize_copy,
|
154
|
+
tInitialize_clone,
|
155
|
+
tInitialize_dup,
|
156
|
+
tTo_int,
|
157
|
+
tTo_ary,
|
158
|
+
tTo_str,
|
159
|
+
tTo_sym,
|
160
|
+
tTo_hash,
|
161
|
+
tTo_proc,
|
162
|
+
tTo_io,
|
163
|
+
tTo_a,
|
164
|
+
tTo_s,
|
165
|
+
tTo_i,
|
166
|
+
tTo_r,
|
167
|
+
tBt,
|
168
|
+
tBt_locations,
|
169
|
+
tCall,
|
170
|
+
tMesg,
|
171
|
+
tException,
|
172
|
+
tNOT,
|
173
|
+
tAND,
|
174
|
+
tOR,
|
175
|
+
tUScore,
|
176
|
+
tTOKEN_LOCAL_END,
|
177
|
+
tTOKEN_INSTANCE_BEGIN = tTOKEN_LOCAL_END-1,
|
178
|
+
tTOKEN_INSTANCE_END,
|
179
|
+
tTOKEN_GLOBAL_BEGIN = tTOKEN_INSTANCE_END-1,
|
180
|
+
tLASTLINE,
|
181
|
+
tBACKREF,
|
182
|
+
tTOKEN_GLOBAL_END,
|
183
|
+
tTOKEN_CONST_BEGIN = tTOKEN_GLOBAL_END-1,
|
184
|
+
tTOKEN_CONST_END,
|
185
|
+
tTOKEN_CLASS_BEGIN = tTOKEN_CONST_END-1,
|
186
|
+
tTOKEN_CLASS_END,
|
187
|
+
tTOKEN_ATTRSET_BEGIN = tTOKEN_CLASS_END-1,
|
188
|
+
tTOKEN_ATTRSET_END,
|
189
|
+
tNEXT_ID = tTOKEN_ATTRSET_END,
|
190
|
+
#define DEFINE_LOCALID_FROM_TOKEN(n) id##n = TOKEN2LOCALID(t##n)
|
191
|
+
DEFINE_LOCALID_FROM_TOKEN(Max),
|
192
|
+
DEFINE_LOCALID_FROM_TOKEN(Min),
|
193
|
+
DEFINE_LOCALID_FROM_TOKEN(Freeze),
|
194
|
+
DEFINE_LOCALID_FROM_TOKEN(Inspect),
|
195
|
+
DEFINE_LOCALID_FROM_TOKEN(Intern),
|
196
|
+
DEFINE_LOCALID_FROM_TOKEN(Object_id),
|
197
|
+
DEFINE_LOCALID_FROM_TOKEN(Const_missing),
|
198
|
+
DEFINE_LOCALID_FROM_TOKEN(MethodMissing),
|
199
|
+
DEFINE_LOCALID_FROM_TOKEN(Method_added),
|
200
|
+
DEFINE_LOCALID_FROM_TOKEN(Singleton_method_added),
|
201
|
+
DEFINE_LOCALID_FROM_TOKEN(Method_removed),
|
202
|
+
DEFINE_LOCALID_FROM_TOKEN(Singleton_method_removed),
|
203
|
+
DEFINE_LOCALID_FROM_TOKEN(Method_undefined),
|
204
|
+
DEFINE_LOCALID_FROM_TOKEN(Singleton_method_undefined),
|
205
|
+
DEFINE_LOCALID_FROM_TOKEN(Length),
|
206
|
+
DEFINE_LOCALID_FROM_TOKEN(Size),
|
207
|
+
DEFINE_LOCALID_FROM_TOKEN(Gets),
|
208
|
+
DEFINE_LOCALID_FROM_TOKEN(Succ),
|
209
|
+
DEFINE_LOCALID_FROM_TOKEN(Each),
|
210
|
+
DEFINE_LOCALID_FROM_TOKEN(Proc),
|
211
|
+
DEFINE_LOCALID_FROM_TOKEN(Lambda),
|
212
|
+
DEFINE_LOCALID_FROM_TOKEN(Send),
|
213
|
+
DEFINE_LOCALID_FROM_TOKEN(__send__),
|
214
|
+
DEFINE_LOCALID_FROM_TOKEN(__attached__),
|
215
|
+
DEFINE_LOCALID_FROM_TOKEN(Initialize),
|
216
|
+
DEFINE_LOCALID_FROM_TOKEN(Initialize_copy),
|
217
|
+
DEFINE_LOCALID_FROM_TOKEN(Initialize_clone),
|
218
|
+
DEFINE_LOCALID_FROM_TOKEN(Initialize_dup),
|
219
|
+
DEFINE_LOCALID_FROM_TOKEN(To_int),
|
220
|
+
DEFINE_LOCALID_FROM_TOKEN(To_ary),
|
221
|
+
DEFINE_LOCALID_FROM_TOKEN(To_str),
|
222
|
+
DEFINE_LOCALID_FROM_TOKEN(To_sym),
|
223
|
+
DEFINE_LOCALID_FROM_TOKEN(To_hash),
|
224
|
+
DEFINE_LOCALID_FROM_TOKEN(To_proc),
|
225
|
+
DEFINE_LOCALID_FROM_TOKEN(To_io),
|
226
|
+
DEFINE_LOCALID_FROM_TOKEN(To_a),
|
227
|
+
DEFINE_LOCALID_FROM_TOKEN(To_s),
|
228
|
+
DEFINE_LOCALID_FROM_TOKEN(To_i),
|
229
|
+
DEFINE_LOCALID_FROM_TOKEN(To_r),
|
230
|
+
DEFINE_LOCALID_FROM_TOKEN(Bt),
|
231
|
+
DEFINE_LOCALID_FROM_TOKEN(Bt_locations),
|
232
|
+
DEFINE_LOCALID_FROM_TOKEN(Call),
|
233
|
+
DEFINE_LOCALID_FROM_TOKEN(Mesg),
|
234
|
+
DEFINE_LOCALID_FROM_TOKEN(Exception),
|
235
|
+
DEFINE_LOCALID_FROM_TOKEN(NOT),
|
236
|
+
DEFINE_LOCALID_FROM_TOKEN(AND),
|
237
|
+
DEFINE_LOCALID_FROM_TOKEN(OR),
|
238
|
+
DEFINE_LOCALID_FROM_TOKEN(UScore),
|
239
|
+
#define DEFINE_INSTANCEID_FROM_TOKEN(n) id##n = TOKEN2INSTANCEID(t##n)
|
240
|
+
#define DEFINE_GLOBALID_FROM_TOKEN(n) id##n = TOKEN2GLOBALID(t##n)
|
241
|
+
DEFINE_GLOBALID_FROM_TOKEN(LASTLINE),
|
242
|
+
DEFINE_GLOBALID_FROM_TOKEN(BACKREF),
|
243
|
+
#define DEFINE_CONSTID_FROM_TOKEN(n) id##n = TOKEN2CONSTID(t##n)
|
244
|
+
#define DEFINE_CLASSID_FROM_TOKEN(n) id##n = TOKEN2CLASSID(t##n)
|
245
|
+
#define DEFINE_ATTRSETID_FROM_TOKEN(n) id##n = TOKEN2ATTRSETID(t##n)
|
246
|
+
tLAST_OP_ID = tPRESERVED_ID_END-1,
|
247
|
+
idLAST_OP_ID = tLAST_OP_ID >> ID_SCOPE_SHIFT
|
248
|
+
};
|
249
|
+
|
250
|
+
#endif /* RUBY_ID_H */
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#ifndef RUBY_ID_TABLE_H
|
2
|
+
#define RUBY_ID_TABLE_H 1
|
3
|
+
#include "ruby/ruby.h"
|
4
|
+
|
5
|
+
struct rb_id_table;
|
6
|
+
|
7
|
+
/* compatible with ST_* */
|
8
|
+
enum rb_id_table_iterator_result {
|
9
|
+
ID_TABLE_CONTINUE = ST_CONTINUE,
|
10
|
+
ID_TABLE_STOP = ST_STOP,
|
11
|
+
ID_TABLE_DELETE = ST_DELETE,
|
12
|
+
ID_TABLE_ITERATOR_RESULT_END
|
13
|
+
};
|
14
|
+
|
15
|
+
struct rb_id_table *rb_id_table_create(size_t size);
|
16
|
+
void rb_id_table_free(struct rb_id_table *tbl);
|
17
|
+
void rb_id_table_clear(struct rb_id_table *tbl);
|
18
|
+
|
19
|
+
size_t rb_id_table_size(const struct rb_id_table *tbl);
|
20
|
+
size_t rb_id_table_memsize(const struct rb_id_table *tbl);
|
21
|
+
|
22
|
+
int rb_id_table_insert(struct rb_id_table *tbl, ID id, VALUE val);
|
23
|
+
int rb_id_table_lookup(struct rb_id_table *tbl, ID id, VALUE *valp);
|
24
|
+
int rb_id_table_delete(struct rb_id_table *tbl, ID id);
|
25
|
+
|
26
|
+
typedef enum rb_id_table_iterator_result rb_id_table_foreach_func_t(ID id, VALUE val, void *data);
|
27
|
+
typedef enum rb_id_table_iterator_result rb_id_table_foreach_values_func_t(VALUE val, void *data);
|
28
|
+
void rb_id_table_foreach(struct rb_id_table *tbl, rb_id_table_foreach_func_t *func, void *data);
|
29
|
+
void rb_id_table_foreach_values(struct rb_id_table *tbl, rb_id_table_foreach_values_func_t *func, void *data);
|
30
|
+
|
31
|
+
#endif /* RUBY_ID_TABLE_H */
|
@@ -0,0 +1,217 @@
|
|
1
|
+
/** -*-c-*-
|
2
|
+
This file contains YARV instructions list.
|
3
|
+
|
4
|
+
----
|
5
|
+
This file is auto generated by insns2vm.rb
|
6
|
+
DO NOT TOUCH!
|
7
|
+
|
8
|
+
If you want to fix something, you must edit 'template/insns.inc.tmpl'
|
9
|
+
or tool/insns2vm.rb
|
10
|
+
*/
|
11
|
+
|
12
|
+
|
13
|
+
/* BIN : Basic Instruction Name */
|
14
|
+
#define BIN(n) YARVINSN_##n
|
15
|
+
|
16
|
+
enum ruby_vminsn_type {
|
17
|
+
BIN(nop),
|
18
|
+
BIN(getlocal),
|
19
|
+
BIN(setlocal),
|
20
|
+
BIN(getblockparam),
|
21
|
+
BIN(setblockparam),
|
22
|
+
BIN(getspecial),
|
23
|
+
BIN(setspecial),
|
24
|
+
BIN(getinstancevariable),
|
25
|
+
BIN(setinstancevariable),
|
26
|
+
BIN(getclassvariable),
|
27
|
+
BIN(setclassvariable),
|
28
|
+
BIN(getconstant),
|
29
|
+
BIN(setconstant),
|
30
|
+
BIN(getglobal),
|
31
|
+
BIN(setglobal),
|
32
|
+
BIN(putnil),
|
33
|
+
BIN(putself),
|
34
|
+
BIN(putobject),
|
35
|
+
BIN(putspecialobject),
|
36
|
+
BIN(putiseq),
|
37
|
+
BIN(putstring),
|
38
|
+
BIN(concatstrings),
|
39
|
+
BIN(tostring),
|
40
|
+
BIN(freezestring),
|
41
|
+
BIN(toregexp),
|
42
|
+
BIN(intern),
|
43
|
+
BIN(newarray),
|
44
|
+
BIN(duparray),
|
45
|
+
BIN(expandarray),
|
46
|
+
BIN(concatarray),
|
47
|
+
BIN(splatarray),
|
48
|
+
BIN(newhash),
|
49
|
+
BIN(newrange),
|
50
|
+
BIN(pop),
|
51
|
+
BIN(dup),
|
52
|
+
BIN(dupn),
|
53
|
+
BIN(swap),
|
54
|
+
BIN(reverse),
|
55
|
+
BIN(reput),
|
56
|
+
BIN(topn),
|
57
|
+
BIN(setn),
|
58
|
+
BIN(adjuststack),
|
59
|
+
BIN(defined),
|
60
|
+
BIN(checkmatch),
|
61
|
+
BIN(checkkeyword),
|
62
|
+
BIN(tracecoverage),
|
63
|
+
BIN(defineclass),
|
64
|
+
BIN(send),
|
65
|
+
BIN(opt_str_freeze),
|
66
|
+
BIN(opt_str_uminus),
|
67
|
+
BIN(opt_newarray_max),
|
68
|
+
BIN(opt_newarray_min),
|
69
|
+
BIN(opt_send_without_block),
|
70
|
+
BIN(invokesuper),
|
71
|
+
BIN(invokeblock),
|
72
|
+
BIN(leave),
|
73
|
+
BIN(throw),
|
74
|
+
BIN(jump),
|
75
|
+
BIN(branchif),
|
76
|
+
BIN(branchunless),
|
77
|
+
BIN(branchnil),
|
78
|
+
BIN(branchiftype),
|
79
|
+
BIN(getinlinecache),
|
80
|
+
BIN(setinlinecache),
|
81
|
+
BIN(once),
|
82
|
+
BIN(opt_case_dispatch),
|
83
|
+
BIN(opt_plus),
|
84
|
+
BIN(opt_minus),
|
85
|
+
BIN(opt_mult),
|
86
|
+
BIN(opt_div),
|
87
|
+
BIN(opt_mod),
|
88
|
+
BIN(opt_eq),
|
89
|
+
BIN(opt_neq),
|
90
|
+
BIN(opt_lt),
|
91
|
+
BIN(opt_le),
|
92
|
+
BIN(opt_gt),
|
93
|
+
BIN(opt_ge),
|
94
|
+
BIN(opt_ltlt),
|
95
|
+
BIN(opt_aref),
|
96
|
+
BIN(opt_aset),
|
97
|
+
BIN(opt_aset_with),
|
98
|
+
BIN(opt_aref_with),
|
99
|
+
BIN(opt_length),
|
100
|
+
BIN(opt_size),
|
101
|
+
BIN(opt_empty_p),
|
102
|
+
BIN(opt_succ),
|
103
|
+
BIN(opt_not),
|
104
|
+
BIN(opt_regexpmatch1),
|
105
|
+
BIN(opt_regexpmatch2),
|
106
|
+
BIN(opt_call_c_function),
|
107
|
+
BIN(bitblt),
|
108
|
+
BIN(answer),
|
109
|
+
BIN(getlocal_OP__WC__0),
|
110
|
+
BIN(getlocal_OP__WC__1),
|
111
|
+
BIN(setlocal_OP__WC__0),
|
112
|
+
BIN(setlocal_OP__WC__1),
|
113
|
+
BIN(putobject_OP_INT2FIX_O_0_C_),
|
114
|
+
BIN(putobject_OP_INT2FIX_O_1_C_),
|
115
|
+
BIN(trace_nop),
|
116
|
+
BIN(trace_getlocal),
|
117
|
+
BIN(trace_setlocal),
|
118
|
+
BIN(trace_getblockparam),
|
119
|
+
BIN(trace_setblockparam),
|
120
|
+
BIN(trace_getspecial),
|
121
|
+
BIN(trace_setspecial),
|
122
|
+
BIN(trace_getinstancevariable),
|
123
|
+
BIN(trace_setinstancevariable),
|
124
|
+
BIN(trace_getclassvariable),
|
125
|
+
BIN(trace_setclassvariable),
|
126
|
+
BIN(trace_getconstant),
|
127
|
+
BIN(trace_setconstant),
|
128
|
+
BIN(trace_getglobal),
|
129
|
+
BIN(trace_setglobal),
|
130
|
+
BIN(trace_putnil),
|
131
|
+
BIN(trace_putself),
|
132
|
+
BIN(trace_putobject),
|
133
|
+
BIN(trace_putspecialobject),
|
134
|
+
BIN(trace_putiseq),
|
135
|
+
BIN(trace_putstring),
|
136
|
+
BIN(trace_concatstrings),
|
137
|
+
BIN(trace_tostring),
|
138
|
+
BIN(trace_freezestring),
|
139
|
+
BIN(trace_toregexp),
|
140
|
+
BIN(trace_intern),
|
141
|
+
BIN(trace_newarray),
|
142
|
+
BIN(trace_duparray),
|
143
|
+
BIN(trace_expandarray),
|
144
|
+
BIN(trace_concatarray),
|
145
|
+
BIN(trace_splatarray),
|
146
|
+
BIN(trace_newhash),
|
147
|
+
BIN(trace_newrange),
|
148
|
+
BIN(trace_pop),
|
149
|
+
BIN(trace_dup),
|
150
|
+
BIN(trace_dupn),
|
151
|
+
BIN(trace_swap),
|
152
|
+
BIN(trace_reverse),
|
153
|
+
BIN(trace_reput),
|
154
|
+
BIN(trace_topn),
|
155
|
+
BIN(trace_setn),
|
156
|
+
BIN(trace_adjuststack),
|
157
|
+
BIN(trace_defined),
|
158
|
+
BIN(trace_checkmatch),
|
159
|
+
BIN(trace_checkkeyword),
|
160
|
+
BIN(trace_tracecoverage),
|
161
|
+
BIN(trace_defineclass),
|
162
|
+
BIN(trace_send),
|
163
|
+
BIN(trace_opt_str_freeze),
|
164
|
+
BIN(trace_opt_str_uminus),
|
165
|
+
BIN(trace_opt_newarray_max),
|
166
|
+
BIN(trace_opt_newarray_min),
|
167
|
+
BIN(trace_opt_send_without_block),
|
168
|
+
BIN(trace_invokesuper),
|
169
|
+
BIN(trace_invokeblock),
|
170
|
+
BIN(trace_leave),
|
171
|
+
BIN(trace_throw),
|
172
|
+
BIN(trace_jump),
|
173
|
+
BIN(trace_branchif),
|
174
|
+
BIN(trace_branchunless),
|
175
|
+
BIN(trace_branchnil),
|
176
|
+
BIN(trace_branchiftype),
|
177
|
+
BIN(trace_getinlinecache),
|
178
|
+
BIN(trace_setinlinecache),
|
179
|
+
BIN(trace_once),
|
180
|
+
BIN(trace_opt_case_dispatch),
|
181
|
+
BIN(trace_opt_plus),
|
182
|
+
BIN(trace_opt_minus),
|
183
|
+
BIN(trace_opt_mult),
|
184
|
+
BIN(trace_opt_div),
|
185
|
+
BIN(trace_opt_mod),
|
186
|
+
BIN(trace_opt_eq),
|
187
|
+
BIN(trace_opt_neq),
|
188
|
+
BIN(trace_opt_lt),
|
189
|
+
BIN(trace_opt_le),
|
190
|
+
BIN(trace_opt_gt),
|
191
|
+
BIN(trace_opt_ge),
|
192
|
+
BIN(trace_opt_ltlt),
|
193
|
+
BIN(trace_opt_aref),
|
194
|
+
BIN(trace_opt_aset),
|
195
|
+
BIN(trace_opt_aset_with),
|
196
|
+
BIN(trace_opt_aref_with),
|
197
|
+
BIN(trace_opt_length),
|
198
|
+
BIN(trace_opt_size),
|
199
|
+
BIN(trace_opt_empty_p),
|
200
|
+
BIN(trace_opt_succ),
|
201
|
+
BIN(trace_opt_not),
|
202
|
+
BIN(trace_opt_regexpmatch1),
|
203
|
+
BIN(trace_opt_regexpmatch2),
|
204
|
+
BIN(trace_opt_call_c_function),
|
205
|
+
BIN(trace_bitblt),
|
206
|
+
BIN(trace_answer),
|
207
|
+
BIN(trace_getlocal_OP__WC__0),
|
208
|
+
BIN(trace_getlocal_OP__WC__1),
|
209
|
+
BIN(trace_setlocal_OP__WC__0),
|
210
|
+
BIN(trace_setlocal_OP__WC__1),
|
211
|
+
BIN(trace_putobject_OP_INT2FIX_O_0_C_),
|
212
|
+
BIN(trace_putobject_OP_INT2FIX_O_1_C_),
|
213
|
+
VM_INSTRUCTION_SIZE
|
214
|
+
};
|
215
|
+
|
216
|
+
#define ASSERT_VM_INSTRUCTION_SIZE(array) \
|
217
|
+
STATIC_ASSERT(numberof_##array, numberof(array) == VM_INSTRUCTION_SIZE)
|