debase-ruby_core_source 0.10.2 → 0.10.3
Sign up to get free protection for your applications and to get access to all the features.
- 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)
|