looksee 1.0.2 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == 1.0.3 2011-09-05
2
+
3
+ * MRI 1.9.3 support.
4
+
1
5
  == 1.0.2 2011-03-27
2
6
 
3
7
  * Fix JRuby extension name for case-sensitive filesystems.
data/ext/extconf.rb CHANGED
@@ -4,6 +4,10 @@ extension = ruby_engine == 'ruby' ? 'mri' : ruby_engine
4
4
  require 'mkmf'
5
5
  $CPPFLAGS << " -DRUBY_VERSION=#{RUBY_VERSION.tr('.', '')}"
6
6
  if extension == 'mri'
7
- $CPPFLAGS << " -Imri/1.9.2" if RUBY_VERSION >= '1.9.2'
7
+ if RUBY_VERSION >= '1.9.3'
8
+ $CPPFLAGS << " -Imri/1.9.3"
9
+ elsif RUBY_VERSION >= '1.9.2'
10
+ $CPPFLAGS << " -Imri/1.9.2"
11
+ end
8
12
  end
9
13
  create_makefile "looksee/#{extension}", extension
@@ -0,0 +1,56 @@
1
+ #ifndef RUBY_ATOMIC_H
2
+ #define RUBY_ATOMIC_H
3
+
4
+ #ifdef _WIN32
5
+ #if defined _MSC_VER && _MSC_VER > 1200
6
+ #pragma intrinsic(_InterlockedOr)
7
+ #endif
8
+ typedef LONG rb_atomic_t;
9
+
10
+ # define ATOMIC_SET(var, val) InterlockedExchange(&(var), (val))
11
+ # define ATOMIC_INC(var) InterlockedIncrement(&(var))
12
+ # define ATOMIC_DEC(var) InterlockedDecrement(&(var))
13
+ #if defined __GNUC__
14
+ # define ATOMIC_OR(var, val) __asm__("lock\n\t" "orl\t%1, %0" : "=m"(var) : "Ir"(val))
15
+ #elif defined _MSC_VER && _MSC_VER <= 1200
16
+ # define ATOMIC_OR(var, val) rb_w32_atomic_or(&(var), (val))
17
+ static inline void
18
+ rb_w32_atomic_or(volatile rb_atomic_t *var, rb_atomic_t val)
19
+ {
20
+ #ifdef _M_IX86
21
+ __asm mov eax, var;
22
+ __asm mov ecx, val;
23
+ __asm lock or [eax], ecx;
24
+ #else
25
+ #error unsupported architecture
26
+ #endif
27
+ }
28
+ #else
29
+ # define ATOMIC_OR(var, val) _InterlockedOr(&(var), (val))
30
+ #endif
31
+ # define ATOMIC_EXCHANGE(var, val) InterlockedExchange(&(var), (val))
32
+
33
+ #elif defined HAVE_GCC_ATOMIC_BUILTINS
34
+ /* @shyouhei hack to support atomic operations in case of gcc. Gcc
35
+ * has its own pseudo-insns to support them. See info, or
36
+ * http://gcc.gnu.org/onlinedocs/gcc/Atomic-Builtins.html */
37
+
38
+ typedef unsigned int rb_atomic_t; /* Anything OK */
39
+ # define ATOMIC_SET(var, val) __sync_lock_test_and_set(&(var), (val))
40
+ # define ATOMIC_INC(var) __sync_fetch_and_add(&(var), 1)
41
+ # define ATOMIC_DEC(var) __sync_fetch_and_sub(&(var), 1)
42
+ # define ATOMIC_OR(var, val) __sync_or_and_fetch(&(var), (val))
43
+ # define ATOMIC_EXCHANGE(var, val) __sync_lock_test_and_set(&(var), (val))
44
+
45
+ #else
46
+ typedef int rb_atomic_t;
47
+ extern rb_atomic_t ruby_atomic_exchange(rb_atomic_t *ptr, rb_atomic_t val);
48
+
49
+ # define ATOMIC_SET(var, val) ((var) = (val))
50
+ # define ATOMIC_INC(var) (++(var))
51
+ # define ATOMIC_DEC(var) (--(var))
52
+ # define ATOMIC_OR(var, val) ((var) |= (val))
53
+ # define ATOMIC_EXCHANGE(var, val) ruby_atomic_exchange(&(var), (val))
54
+ #endif
55
+
56
+ #endif /* RUBY_ATOMIC_H */
@@ -0,0 +1,41 @@
1
+ /**********************************************************************
2
+
3
+ debug.h - YARV Debug function interface
4
+
5
+ $Author: akr $
6
+ created at: 04/08/25 02:33:49 JST
7
+
8
+ Copyright (C) 2004-2007 Koichi Sasada
9
+
10
+ **********************************************************************/
11
+
12
+ #ifndef RUBY_DEBUG_H
13
+ #define RUBY_DEBUG_H
14
+
15
+ #include "ruby/ruby.h"
16
+ #include "node.h"
17
+
18
+ #if defined __GNUC__ && __GNUC__ >= 4
19
+ #pragma GCC visibility push(default)
20
+ #endif
21
+
22
+ #define dpv(h,v) ruby_debug_print_value(-1, 0, (h), (v))
23
+ #define dp(v) ruby_debug_print_value(-1, 0, "", (v))
24
+ #define dpi(i) ruby_debug_print_id(-1, 0, "", (i))
25
+ #define dpn(n) ruby_debug_print_node(-1, 0, "", (n))
26
+
27
+ #define bp() ruby_debug_breakpoint()
28
+
29
+ VALUE ruby_debug_print_value(int level, int debug_level, const char *header, VALUE v);
30
+ ID ruby_debug_print_id(int level, int debug_level, const char *header, ID id);
31
+ NODE *ruby_debug_print_node(int level, int debug_level, const char *header, const NODE *node);
32
+ int ruby_debug_print_indent(int level, int debug_level, int indent_level);
33
+ void ruby_debug_breakpoint(void);
34
+ void ruby_debug_gc_check_func(void);
35
+ void ruby_set_debug_option(const char *str);
36
+
37
+ #if defined __GNUC__ && __GNUC__ >= 4
38
+ #pragma GCC visibility pop
39
+ #endif
40
+
41
+ #endif /* RUBY_DEBUG_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,227 @@
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
+ /* debug.c */
65
+ PRINTF_ARGS(void ruby_debug_printf(const char*, ...), 1, 2);
66
+
67
+ /* dmyext.c */
68
+ void Init_ext(void);
69
+
70
+ /* encoding.c */
71
+ ID rb_id_encoding(void);
72
+
73
+ /* encoding.c */
74
+ void rb_gc_mark_encodings(void);
75
+
76
+ /* error.c */
77
+ NORETURN(PRINTF_ARGS(void rb_compile_bug(const char*, int, const char*, ...), 3, 4));
78
+ VALUE rb_check_backtrace(VALUE);
79
+ NORETURN(void rb_async_bug_errno(const char *,int));
80
+
81
+ /* eval_error.c */
82
+ void ruby_error_print(void);
83
+ VALUE rb_get_backtrace(VALUE info);
84
+
85
+ /* eval_jump.c */
86
+ void rb_call_end_proc(VALUE data);
87
+
88
+ /* file.c */
89
+ VALUE rb_home_dir(const char *user, VALUE result);
90
+ VALUE rb_realpath_internal(VALUE basedir, VALUE path, int strict);
91
+ void Init_File(void);
92
+
93
+ /* gc.c */
94
+ void Init_heap(void);
95
+
96
+ /* inits.c */
97
+ void rb_call_inits(void);
98
+
99
+ /* io.c */
100
+ const char *ruby_get_inplace_mode(void);
101
+ void ruby_set_inplace_mode(const char *);
102
+ ssize_t rb_io_bufread(VALUE io, void *buf, size_t size);
103
+ void rb_stdio_set_default_encoding(void);
104
+
105
+ /* iseq.c */
106
+ VALUE rb_iseq_compile_with_option(VALUE src, VALUE file, VALUE filepath, VALUE line, VALUE opt);
107
+ VALUE rb_iseq_clone(VALUE iseqval, VALUE newcbase);
108
+
109
+ /* load.c */
110
+ VALUE rb_get_load_path(void);
111
+
112
+ /* math.c */
113
+ VALUE rb_math_atan2(VALUE, VALUE);
114
+ VALUE rb_math_cos(VALUE);
115
+ VALUE rb_math_cosh(VALUE);
116
+ VALUE rb_math_exp(VALUE);
117
+ VALUE rb_math_hypot(VALUE, VALUE);
118
+ VALUE rb_math_log(int argc, VALUE *argv);
119
+ VALUE rb_math_sin(VALUE);
120
+ VALUE rb_math_sinh(VALUE);
121
+ VALUE rb_math_sqrt(VALUE);
122
+
123
+ /* newline.c */
124
+ void Init_newline(void);
125
+
126
+ /* numeric.c */
127
+ int rb_num_to_uint(VALUE val, unsigned int *ret);
128
+ int ruby_float_step(VALUE from, VALUE to, VALUE step, int excl);
129
+
130
+ /* object.c */
131
+ VALUE rb_obj_equal(VALUE obj1, VALUE obj2);
132
+
133
+ /* parse.y */
134
+ VALUE rb_parser_get_yydebug(VALUE);
135
+ VALUE rb_parser_set_yydebug(VALUE, VALUE);
136
+
137
+ /* proc.c */
138
+ VALUE rb_proc_location(VALUE self);
139
+
140
+ /* rational.c */
141
+ VALUE rb_lcm(VALUE x, VALUE y);
142
+ VALUE rb_rational_reciprocal(VALUE x);
143
+
144
+ /* re.c */
145
+ VALUE rb_reg_compile(VALUE str, int options, const char *sourcefile, int sourceline);
146
+ VALUE rb_reg_check_preprocess(VALUE);
147
+
148
+ /* signal.c */
149
+ int rb_get_next_signal(void);
150
+
151
+ /* strftime.c */
152
+ size_t rb_strftime_timespec(char *s, size_t maxsize, const char *format, const struct vtm *vtm, struct timespec *ts, int gmt);
153
+
154
+ /* string.c */
155
+ int rb_str_buf_cat_escaped_char(VALUE result, unsigned int c, int unicode_p);
156
+
157
+ /* struct.c */
158
+ VALUE rb_struct_init_copy(VALUE copy, VALUE s);
159
+
160
+ /* time.c */
161
+ struct timeval rb_time_timeval(VALUE);
162
+
163
+ /* thread.c */
164
+ VALUE rb_obj_is_mutex(VALUE obj);
165
+ VALUE ruby_suppress_tracing(VALUE (*func)(VALUE, int), VALUE arg, int always);
166
+ void rb_thread_execute_interrupts(VALUE th);
167
+ void rb_clear_trace_func(void);
168
+ VALUE rb_thread_backtrace(VALUE thval);
169
+ VALUE rb_get_coverages(void);
170
+
171
+ /* thread_pthread.c, thread_win32.c */
172
+ void Init_native_thread(void);
173
+
174
+ /* vm.c */
175
+ VALUE rb_obj_is_thread(VALUE obj);
176
+ void rb_vm_mark(void *ptr);
177
+ void Init_BareVM(void);
178
+ VALUE rb_vm_top_self(void);
179
+ void rb_thread_recycle_stack_release(VALUE *);
180
+ void rb_vm_change_state(void);
181
+ void rb_vm_inc_const_missing_count(void);
182
+ void rb_thread_mark(void *th);
183
+ const void **rb_vm_get_insns_address_table(void);
184
+
185
+ /* vm_dump.c */
186
+ void rb_vm_bugreport(void);
187
+
188
+ /* vm_eval.c */
189
+ void Init_vm_eval(void);
190
+ VALUE rb_current_realfilepath(void);
191
+
192
+ /* vm_method.c */
193
+ void Init_eval_method(void);
194
+
195
+ /* miniprelude.c, prelude.c */
196
+ void Init_prelude(void);
197
+
198
+ #if defined __GNUC__ && __GNUC__ >= 4
199
+ #pragma GCC visibility push(default)
200
+ #endif
201
+ const char *rb_objspace_data_type_name(VALUE obj);
202
+
203
+ /* Temporary. This API will be removed (renamed). */
204
+ VALUE rb_thread_io_blocking_region(rb_blocking_function_t *func, void *data1, int fd);
205
+
206
+ /* experimental.
207
+ * These APIs can be changed on Ruby 1.9.4 or later.
208
+ * We will change these APIs (spac, name and so on) if there are something wrong.
209
+ * If you use these APIs, catch up future changes.
210
+ */
211
+ void *rb_thread_call_with_gvl(void *(*func)(void *), void *data1);
212
+ VALUE rb_thread_call_without_gvl(
213
+ rb_blocking_function_t *func, void *data1,
214
+ rb_unblock_function_t *ubf, void *data2);
215
+
216
+ #if defined __GNUC__ && __GNUC__ >= 4
217
+ #pragma GCC visibility pop
218
+ #endif
219
+
220
+ #if defined(__cplusplus)
221
+ #if 0
222
+ { /* satisfy cc-mode */
223
+ #endif
224
+ } /* extern "C" { */
225
+ #endif
226
+
227
+ #endif /* RUBY_INTERNAL_H */