ruby-internal 0.8.3 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/ext/internal/yarv-headers/addr2line.h +21 -0
  2. data/ext/internal/yarv-headers/atomic.h +56 -0
  3. data/ext/internal/yarv-headers/constant.h +34 -0
  4. data/ext/internal/yarv-headers/debug.h +41 -0
  5. data/ext/internal/yarv-headers/dln.h +50 -0
  6. data/ext/internal/yarv-headers/encdb.h +167 -0
  7. data/ext/internal/yarv-headers/eval_intern.h +234 -0
  8. data/ext/internal/yarv-headers/gc.h +98 -0
  9. data/ext/internal/yarv-headers/id.h +175 -0
  10. data/ext/internal/yarv-headers/internal.h +232 -0
  11. data/ext/internal/yarv-headers/iseq.h +125 -0
  12. data/ext/internal/yarv-headers/method.h +105 -0
  13. data/ext/internal/yarv-headers/node.h +503 -0
  14. data/ext/internal/yarv-headers/parse.h +186 -0
  15. data/ext/internal/yarv-headers/regenc.h +219 -0
  16. data/ext/internal/yarv-headers/regint.h +850 -0
  17. data/ext/internal/yarv-headers/regparse.h +362 -0
  18. data/ext/internal/yarv-headers/revision.h +1 -0
  19. data/ext/internal/yarv-headers/thread_pthread.h +51 -0
  20. data/ext/internal/yarv-headers/thread_win32.h +40 -0
  21. data/ext/internal/yarv-headers/timev.h +21 -0
  22. data/ext/internal/yarv-headers/transcode_data.h +117 -0
  23. data/ext/internal/yarv-headers/transdb.h +189 -0
  24. data/ext/internal/yarv-headers/version.h +52 -0
  25. data/ext/internal/yarv-headers/vm_core.h +756 -0
  26. data/ext/internal/yarv-headers/vm_exec.h +184 -0
  27. data/ext/internal/yarv-headers/vm_insnhelper.h +220 -0
  28. data/ext/internal/yarv-headers/vm_opts.h +51 -0
  29. data/test/test_module.rb +3 -1
  30. data/test/test_node.rb +1 -1
  31. metadata +30 -3
  32. data/lib/internal/object/as_code.rb +0 -10
@@ -0,0 +1,98 @@
1
+
2
+ #ifndef RUBY_GC_H
3
+ #define RUBY_GC_H 1
4
+
5
+ #if defined(__x86_64__) && defined(__GNUC__)
6
+ #define SET_MACHINE_STACK_END(p) __asm__("movq\t%%rsp, %0" : "=r" (*(p)))
7
+ #elif defined(__i386) && defined(__GNUC__)
8
+ #define SET_MACHINE_STACK_END(p) __asm__("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) if(RTEST(ptr)){rb_gc_mark(ptr);}
61
+ #define RUBY_FREE_UNLESS_NULL(ptr) if(ptr){ruby_xfree(ptr);(ptr)=NULL;}
62
+
63
+ #if STACK_GROW_DIRECTION > 0
64
+ # define STACK_UPPER(x, a, b) (a)
65
+ #elif STACK_GROW_DIRECTION < 0
66
+ # define STACK_UPPER(x, a, b) (b)
67
+ #else
68
+ RUBY_EXTERN int ruby_stack_grow_direction;
69
+ int ruby_get_stack_grow_direction(volatile VALUE *addr);
70
+ # define stack_growup_p(x) ( \
71
+ (ruby_stack_grow_direction ? \
72
+ ruby_stack_grow_direction : \
73
+ ruby_get_stack_grow_direction(x)) > 0)
74
+ # define STACK_UPPER(x, a, b) (stack_growup_p(x) ? (a) : (b))
75
+ #endif
76
+
77
+ #if STACK_GROW_DIRECTION
78
+ #define STACK_GROW_DIR_DETECTION
79
+ #define STACK_DIR_UPPER(a,b) STACK_UPPER(0, (a), (b))
80
+ #else
81
+ #define STACK_GROW_DIR_DETECTION VALUE stack_grow_dir_detection
82
+ #define STACK_DIR_UPPER(a,b) STACK_UPPER(&stack_grow_dir_detection, (a), (b))
83
+ #endif
84
+
85
+ #if defined __GNUC__ && __GNUC__ >= 4
86
+ #pragma GCC visibility push(default)
87
+ #endif
88
+
89
+ size_t rb_objspace_data_type_memsize(VALUE obj);
90
+ void rb_objspace_each_objects(
91
+ int (*callback)(void *start, void *end, size_t stride, void *data),
92
+ void *data);
93
+
94
+ #if defined __GNUC__ && __GNUC__ >= 4
95
+ #pragma GCC visibility pop
96
+ #endif
97
+
98
+ #endif /* RUBY_GC_H */
@@ -0,0 +1,175 @@
1
+ /* DO NOT EDIT THIS FILE DIRECTLY */
2
+ /**********************************************************************
3
+
4
+ id.h -
5
+
6
+ $Author: akr $
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
+ #define ID_SCOPE_SHIFT 3
17
+ #define ID_SCOPE_MASK 0x07
18
+ #define ID_LOCAL 0x00
19
+ #define ID_INSTANCE 0x01
20
+ #define ID_GLOBAL 0x03
21
+ #define ID_ATTRSET 0x04
22
+ #define ID_CONST 0x05
23
+ #define ID_CLASS 0x06
24
+ #define ID_JUNK 0x07
25
+ #define ID_INTERNAL ID_JUNK
26
+
27
+ #ifdef USE_PARSE_H
28
+ #include "parse.h"
29
+ #endif
30
+
31
+ #include "vm_opts.h" /* for SUPPORT_JOKE */
32
+
33
+ #define symIFUNC ID2SYM(idIFUNC)
34
+ #define symCFUNC ID2SYM(idCFUNC)
35
+
36
+ #if !defined tLAST_TOKEN && defined YYTOKENTYPE
37
+ #define tLAST_TOKEN tLAST_TOKEN
38
+ #endif
39
+
40
+ enum ruby_method_ids {
41
+ #ifndef tLAST_TOKEN
42
+ tUPLUS = 321,
43
+ tUMINUS = 322,
44
+ tPOW = 323,
45
+ tCMP = 324,
46
+ tEQ = 325,
47
+ tEQQ = 326,
48
+ tNEQ = 327,
49
+ tGEQ = 328,
50
+ tLEQ = 329,
51
+ tANDOP = 330,
52
+ tOROP = 331,
53
+ tMATCH = 332,
54
+ tNMATCH = 333,
55
+ tDOT2 = 334,
56
+ tDOT3 = 335,
57
+ tAREF = 336,
58
+ tASET = 337,
59
+ tLSHFT = 338,
60
+ tRSHFT = 339,
61
+ tLAMBDA = 352,
62
+ idNULL = 365,
63
+ idRespond_to = 366,
64
+ idIFUNC = 367,
65
+ idCFUNC = 368,
66
+ id_core_set_method_alias = 369,
67
+ id_core_set_variable_alias = 370,
68
+ id_core_undef_method = 371,
69
+ id_core_define_method = 372,
70
+ id_core_define_singleton_method = 373,
71
+ id_core_set_postexe = 374,
72
+ tLAST_TOKEN = 375,
73
+ #endif
74
+ idDot2 = tDOT2,
75
+ idDot3 = tDOT3,
76
+ idUPlus = tUPLUS,
77
+ idUMinus = tUMINUS,
78
+ idPow = tPOW,
79
+ idCmp = tCMP,
80
+ idPLUS = '+',
81
+ idMINUS = '-',
82
+ idMULT = '*',
83
+ idDIV = '/',
84
+ idMOD = '%',
85
+ idLT = '<',
86
+ idLTLT = tLSHFT,
87
+ idLE = tLEQ,
88
+ idGT = '>',
89
+ idGE = tGEQ,
90
+ idEq = tEQ,
91
+ idEqq = tEQQ,
92
+ idNeq = tNEQ,
93
+ idNot = '!',
94
+ idBackquote = '`',
95
+ idEqTilde = tMATCH,
96
+ idNeqTilde = tNMATCH,
97
+ idAREF = tAREF,
98
+ idASET = tASET,
99
+ idLAST_TOKEN = tLAST_TOKEN >> ID_SCOPE_SHIFT,
100
+ tIntern,
101
+ tMethodMissing,
102
+ tLength,
103
+ tSize,
104
+ tGets,
105
+ tSucc,
106
+ tEach,
107
+ tLambda,
108
+ tSend,
109
+ t__send__,
110
+ tInitialize,
111
+ tUScore,
112
+ #if SUPPORT_JOKE
113
+ tBitblt,
114
+ tAnswer,
115
+ #endif
116
+ tLAST_ID,
117
+ #define TOKEN2ID(n) id##n = ((t##n<<ID_SCOPE_SHIFT)|ID_LOCAL)
118
+ #if SUPPORT_JOKE
119
+ TOKEN2ID(Bitblt),
120
+ TOKEN2ID(Answer),
121
+ #endif
122
+ TOKEN2ID(Intern),
123
+ TOKEN2ID(MethodMissing),
124
+ TOKEN2ID(Length),
125
+ TOKEN2ID(Size),
126
+ TOKEN2ID(Gets),
127
+ TOKEN2ID(Succ),
128
+ TOKEN2ID(Each),
129
+ TOKEN2ID(Lambda),
130
+ TOKEN2ID(Send),
131
+ TOKEN2ID(__send__),
132
+ TOKEN2ID(Initialize),
133
+ TOKEN2ID(UScore),
134
+ TOKEN2ID(LAST_ID)
135
+ };
136
+
137
+ #ifdef tLAST_TOKEN
138
+ struct ruby_method_ids_check {
139
+ #define ruby_method_id_check_for(name, value) \
140
+ int checking_for_##name[name == (value) ? 1 : -1]
141
+ ruby_method_id_check_for(tUPLUS, 321);
142
+ ruby_method_id_check_for(tUMINUS, 322);
143
+ ruby_method_id_check_for(tPOW, 323);
144
+ ruby_method_id_check_for(tCMP, 324);
145
+ ruby_method_id_check_for(tEQ, 325);
146
+ ruby_method_id_check_for(tEQQ, 326);
147
+ ruby_method_id_check_for(tNEQ, 327);
148
+ ruby_method_id_check_for(tGEQ, 328);
149
+ ruby_method_id_check_for(tLEQ, 329);
150
+ ruby_method_id_check_for(tANDOP, 330);
151
+ ruby_method_id_check_for(tOROP, 331);
152
+ ruby_method_id_check_for(tMATCH, 332);
153
+ ruby_method_id_check_for(tNMATCH, 333);
154
+ ruby_method_id_check_for(tDOT2, 334);
155
+ ruby_method_id_check_for(tDOT3, 335);
156
+ ruby_method_id_check_for(tAREF, 336);
157
+ ruby_method_id_check_for(tASET, 337);
158
+ ruby_method_id_check_for(tLSHFT, 338);
159
+ ruby_method_id_check_for(tRSHFT, 339);
160
+ ruby_method_id_check_for(tLAMBDA, 352);
161
+ ruby_method_id_check_for(idNULL, 365);
162
+ ruby_method_id_check_for(idRespond_to, 366);
163
+ ruby_method_id_check_for(idIFUNC, 367);
164
+ ruby_method_id_check_for(idCFUNC, 368);
165
+ ruby_method_id_check_for(id_core_set_method_alias, 369);
166
+ ruby_method_id_check_for(id_core_set_variable_alias, 370);
167
+ ruby_method_id_check_for(id_core_undef_method, 371);
168
+ ruby_method_id_check_for(id_core_define_method, 372);
169
+ ruby_method_id_check_for(id_core_define_singleton_method, 373);
170
+ ruby_method_id_check_for(id_core_set_postexe, 374);
171
+ ruby_method_id_check_for(tLAST_TOKEN, 375);
172
+ };
173
+ #endif
174
+
175
+ #endif /* RUBY_ID_H */
@@ -0,0 +1,232 @@
1
+ /**********************************************************************
2
+
3
+ internal.h -
4
+
5
+ $Author$
6
+ created at: Tue May 17 11:42:20 JST 2011
7
+
8
+ Copyright (C) 2011 Yukihiro Matsumoto
9
+
10
+ **********************************************************************/
11
+
12
+ #ifndef RUBY_INTERNAL_H
13
+ #define RUBY_INTERNAL_H 1
14
+
15
+ #if defined(__cplusplus)
16
+ extern "C" {
17
+ #if 0
18
+ } /* satisfy cc-mode */
19
+ #endif
20
+ #endif
21
+
22
+ struct rb_deprecated_classext_struct {
23
+ char conflict[sizeof(VALUE) * 3];
24
+ };
25
+
26
+ struct rb_classext_struct {
27
+ VALUE super;
28
+ struct st_table *iv_tbl;
29
+ struct st_table *const_tbl;
30
+ };
31
+
32
+ #undef RCLASS_SUPER
33
+ #define RCLASS_EXT(c) (RCLASS(c)->ptr)
34
+ #define RCLASS_SUPER(c) (RCLASS_EXT(c)->super)
35
+ #define RCLASS_IV_TBL(c) (RCLASS_EXT(c)->iv_tbl)
36
+ #define RCLASS_CONST_TBL(c) (RCLASS_EXT(c)->const_tbl)
37
+ #define RCLASS_M_TBL(c) (RCLASS(c)->m_tbl)
38
+ #define RCLASS_IV_INDEX_TBL(c) (RCLASS(c)->iv_index_tbl)
39
+
40
+ struct vtm; /* defined by timev.h */
41
+
42
+ /* array.c */
43
+ VALUE rb_ary_last(int, VALUE *, VALUE);
44
+
45
+ /* bignum.c */
46
+ VALUE rb_big_fdiv(VALUE x, VALUE y);
47
+ VALUE rb_big_uminus(VALUE x);
48
+
49
+ /* class.c */
50
+ VALUE rb_obj_methods(int argc, VALUE *argv, VALUE obj);
51
+ VALUE rb_obj_protected_methods(int argc, VALUE *argv, VALUE obj);
52
+ VALUE rb_obj_private_methods(int argc, VALUE *argv, VALUE obj);
53
+ VALUE rb_obj_public_methods(int argc, VALUE *argv, VALUE obj);
54
+ int rb_obj_basic_to_s_p(VALUE);
55
+ void Init_class_hierarchy(void);
56
+
57
+ /* compile.c */
58
+ int rb_dvar_defined(ID);
59
+ int rb_local_defined(ID);
60
+ int rb_parse_in_eval(void);
61
+ int rb_parse_in_main(void);
62
+ VALUE rb_insns_name_array(void);
63
+
64
+ /* cont.c */
65
+ VALUE rb_obj_is_fiber(VALUE);
66
+ void rb_fiber_reset_root_local_storage(VALUE);
67
+
68
+ /* debug.c */
69
+ PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2);
70
+
71
+ /* dmyext.c */
72
+ void Init_ext(void);
73
+
74
+ /* encoding.c */
75
+ ID rb_id_encoding(void);
76
+
77
+ /* encoding.c */
78
+ void rb_gc_mark_encodings(void);
79
+
80
+ /* error.c */
81
+ NORETURN(PRINTF_ARGS(void rb_compile_bug(const char*, int, const char*, ...), 3, 4));
82
+ VALUE rb_check_backtrace(VALUE);
83
+ NORETURN(void rb_async_bug_errno(const char *,int));
84
+
85
+ /* eval_error.c */
86
+ void ruby_error_print(void);
87
+ VALUE rb_get_backtrace(VALUE info);
88
+
89
+ /* eval_jump.c */
90
+ void rb_call_end_proc(VALUE data);
91
+
92
+ /* file.c */
93
+ VALUE rb_home_dir(const char *user, VALUE result);
94
+ VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
95
+ void Init_File(void);
96
+
97
+ /* gc.c */
98
+ void Init_heap(void);
99
+
100
+ /* inits.c */
101
+ void rb_call_inits(void);
102
+
103
+ /* io.c */
104
+ const char *ruby_get_inplace_mode(void);
105
+ void ruby_set_inplace_mode(const char *);
106
+ ssize_t rb_io_bufread(VALUE io, void *buf, size_t size);
107
+ void rb_stdio_set_default_encoding(void);
108
+
109
+ /* iseq.c */
110
+ VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
111
+ VALUE rb_iseq_clone(VALUE iseqval, VALUE newcbase);
112
+
113
+ /* load.c */
114
+ VALUE rb_get_load_path(void);
115
+
116
+ /* math.c */
117
+ VALUE rb_math_atan2(VALUE, VALUE);
118
+ VALUE rb_math_cos(VALUE);
119
+ VALUE rb_math_cosh(VALUE);
120
+ VALUE rb_math_exp(VALUE);
121
+ VALUE rb_math_hypot(VALUE, VALUE);
122
+ VALUE rb_math_log(int argc, VALUE *argv);
123
+ VALUE rb_math_sin(VALUE);
124
+ VALUE rb_math_sinh(VALUE);
125
+ VALUE rb_math_sqrt(VALUE);
126
+
127
+ /* newline.c */
128
+ void Init_newline(void);
129
+
130
+ /* numeric.c */
131
+ int rb_num_to_uint(VALUE val, unsigned int *ret);
132
+ int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl);
133
+ double ruby_float_mod(double x, double y);
134
+
135
+ /* object.c */
136
+ VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
137
+
138
+ /* parse.y */
139
+ VALUE rb_parser_get_yydebug(VALUE);
140
+ VALUE rb_parser_set_yydebug(VALUE, VALUE);
141
+
142
+ /* proc.c */
143
+ VALUE rb_proc_location(VALUE self);
144
+
145
+ /* rational.c */
146
+ VALUE rb_lcm(VALUE x, VALUE y);
147
+ VALUE rb_rational_reciprocal(VALUE x);
148
+
149
+ /* re.c */
150
+ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
151
+ VALUE rb_reg_check_preprocess(VALUE);
152
+
153
+ /* signal.c */
154
+ int rb_get_next_signal(void);
155
+
156
+ /* strftime.c */
157
+ size_t rb_strftime_timespec(char *s, size_t maxsize, const char *format, const struct vtm *vtm, struct timespec *ts, int gmt);
158
+
159
+ /* string.c */
160
+ int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
161
+
162
+ /* struct.c */
163
+ VALUE rb_struct_init_copy(VALUE copy, VALUE s);
164
+
165
+ /* time.c */
166
+ struct timeval rb_time_timeval(VALUE);
167
+
168
+ /* thread.c */
169
+ VALUE rb_obj_is_mutex(VALUE obj);
170
+ VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
171
+ void rb_thread_execute_interrupts(VALUE th);
172
+ void rb_clear_trace_func(void);
173
+ VALUE rb_thread_backtrace(VALUE thval);
174
+ VALUE rb_get_coverages(void);
175
+
176
+ /* thread_pthread.c, thread_win32.c */
177
+ void Init_native_thread(void);
178
+
179
+ /* vm.c */
180
+ VALUE rb_obj_is_thread(VALUE obj);
181
+ void rb_vm_mark(void *ptr);
182
+ void Init_BareVM(void);
183
+ VALUE rb_vm_top_self(void);
184
+ void rb_thread_recycle_stack_release(VALUE *);
185
+ void rb_vm_change_state(void);
186
+ void rb_vm_inc_const_missing_count(void);
187
+ void rb_thread_mark(void *th);
188
+ const void **rb_vm_get_insns_address_table(void);
189
+
190
+ /* vm_dump.c */
191
+ void rb_vm_bugreport(void);
192
+
193
+ /* vm_eval.c */
194
+ void Init_vm_eval(void);
195
+ VALUE rb_current_realfilepath(void);
196
+
197
+ /* vm_method.c */
198
+ void Init_eval_method(void);
199
+
200
+ /* miniprelude.c, prelude.c */
201
+ void Init_prelude(void);
202
+
203
+ #if defined __GNUC__ && __GNUC__ >= 4
204
+ #pragma GCC visibility push(default)
205
+ #endif
206
+ const char *rb_objspace_data_type_name(VALUE obj);
207
+
208
+ /* Temporary. This API will be removed (renamed). */
209
+ VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
210
+
211
+ /* experimental.
212
+ * These APIs can be changed on Ruby 1.9.4 or later.
213
+ * We will change these APIs (spac, name and so on) if there are something wrong.
214
+ * If you use these APIs, catch up future changes.
215
+ */
216
+ void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
217
+ VALUE rb_thread_call_without_gvl(
218
+ rb_blocking_function_t *func, void *data1,
219
+ rb_unblock_function_t *ubf, void *data2);
220
+
221
+ #if defined __GNUC__ && __GNUC__ >= 4
222
+ #pragma GCC visibility pop
223
+ #endif
224
+
225
+ #if defined(__cplusplus)
226
+ #if 0
227
+ { /* satisfy cc-mode */
228
+ #endif
229
+ } /* extern "C" { */
230
+ #endif
231
+
232
+ #endif /* RUBY_INTERNAL_H */