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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/addr2line.h +21 -0
  4. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/build_assert/build_assert.h +40 -0
  5. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/check_type/check_type.h +63 -0
  6. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/container_of/container_of.h +142 -0
  7. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/list/list.h +773 -0
  8. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ccan/str/str.h +16 -0
  9. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/constant.h +51 -0
  10. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/debug_counter.h +109 -0
  11. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/dln.h +51 -0
  12. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/encindex.h +69 -0
  13. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/eval_intern.h +334 -0
  14. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/gc.h +116 -0
  15. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/id.h +250 -0
  16. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/id_table.h +31 -0
  17. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/insns.inc +217 -0
  18. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/insns_info.inc +1570 -0
  19. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/internal.h +2036 -0
  20. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/iseq.h +307 -0
  21. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/known_errors.inc +746 -0
  22. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/method.h +218 -0
  23. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/node.h +540 -0
  24. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/node_name.inc +198 -0
  25. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/opt_sc.inc +1601 -0
  26. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/optinsn.inc +103 -0
  27. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/optunifs.inc +61 -0
  28. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/parse.h +206 -0
  29. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/probes_helper.h +43 -0
  30. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regenc.h +254 -0
  31. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regint.h +938 -0
  32. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/regparse.h +370 -0
  33. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/revision.h +1 -0
  34. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ruby_assert.h +54 -0
  35. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/ruby_atomic.h +233 -0
  36. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/siphash.h +48 -0
  37. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/symbol.h +108 -0
  38. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/thread_pthread.h +54 -0
  39. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/thread_win32.h +36 -0
  40. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/timev.h +42 -0
  41. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/transcode_data.h +139 -0
  42. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/version.h +73 -0
  43. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm.inc +3667 -0
  44. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_call_iseq_optimized.inc +213 -0
  45. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_core.h +1767 -0
  46. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_debug.h +37 -0
  47. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_exec.h +192 -0
  48. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_insnhelper.h +255 -0
  49. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vm_opts.h +56 -0
  50. data/lib/debase/ruby_core_source/ruby-2.5.1-p57/vmtc.inc +214 -0
  51. data/lib/debase/ruby_core_source/version.rb +1 -1
  52. 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)