ruby-prof 0.11.2-x86-mingw32 → 0.12.1-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGES +27 -0
- data/README.rdoc +15 -15
- data/Rakefile +5 -0
- data/bin/ruby-prof +274 -265
- data/ext/ruby_prof/rp_call_info.c +33 -24
- data/ext/ruby_prof/rp_call_info.h +2 -1
- data/ext/ruby_prof/rp_measure.c +1 -1
- data/ext/ruby_prof/rp_measure.h +1 -1
- data/ext/ruby_prof/rp_measure_allocations.c +1 -1
- data/ext/ruby_prof/rp_measure_cpu_time.c +1 -1
- data/ext/ruby_prof/rp_measure_gc_runs.c +1 -1
- data/ext/ruby_prof/rp_measure_gc_time.c +1 -1
- data/ext/ruby_prof/rp_measure_memory.c +1 -1
- data/ext/ruby_prof/rp_measure_process_time.c +2 -2
- data/ext/ruby_prof/rp_measure_wall_time.c +2 -2
- data/ext/ruby_prof/rp_method.c +11 -24
- data/ext/ruby_prof/rp_method.h +2 -3
- data/ext/ruby_prof/rp_stack.c +55 -14
- data/ext/ruby_prof/rp_stack.h +10 -10
- data/ext/ruby_prof/rp_thread.c +30 -21
- data/ext/ruby_prof/rp_thread.h +3 -3
- data/ext/ruby_prof/ruby_prof.c +9 -88
- data/ext/ruby_prof/ruby_prof.h +1 -1
- data/ext/ruby_prof/vc/ruby_prof.sln +12 -6
- data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +2 -0
- data/ext/ruby_prof/vc/{ruby_prof.vcxproj → ruby_prof_19.vcxproj} +4 -1
- data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +112 -0
- data/ext/ruby_prof/version.h +4 -4
- data/lib/1.8/ruby_prof.so +0 -0
- data/lib/1.9/ruby_prof.so +0 -0
- data/lib/2.0/ruby_prof.so +0 -0
- data/lib/ruby-prof.rb +1 -0
- data/lib/ruby-prof/call_info.rb +1 -1
- data/lib/ruby-prof/call_info_visitor.rb +4 -2
- data/lib/ruby-prof/compatibility.rb +13 -3
- data/lib/ruby-prof/method_info.rb +1 -1
- data/lib/ruby-prof/printers/call_info_printer.rb +1 -1
- data/lib/ruby-prof/printers/call_stack_printer.rb +3 -3
- data/lib/ruby-prof/printers/dot_printer.rb +2 -2
- data/lib/ruby-prof/printers/flat_printer.rb +4 -4
- data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +2 -2
- data/lib/ruby-prof/printers/graph_html_printer.rb +3 -4
- data/lib/ruby-prof/printers/graph_printer.rb +15 -15
- data/lib/ruby-prof/profile.rb +1 -1
- data/lib/ruby-prof/rack.rb +0 -5
- data/lib/ruby-prof/thread.rb +22 -0
- data/ruby-prof.gemspec +2 -1
- data/test/basic_test.rb +77 -45
- data/test/call_info_test.rb +78 -0
- data/test/call_info_visitor_test.rb +1 -1
- data/test/dynamic_method_test.rb +14 -8
- data/test/measure_cpu_time_test.rb +23 -12
- data/test/measure_process_time_test.rb +21 -170
- data/test/measure_wall_time_test.rb +59 -13
- data/test/method_elimination_test.rb +30 -19
- data/test/pause_resume_test.rb +129 -22
- data/test/prime.rb +1 -2
- data/test/printers_test.rb +8 -17
- data/test/recursive_test.rb +6 -50
- data/test/test_helper.rb +30 -10
- data/test/test_suite.rb +1 -2
- metadata +23 -7
- data/test/bug_test.rb +0 -6
- data/test/gc_test.rb +0 -35
- data/test/pause_test.rb +0 -57
- data/test/prime_test.rb +0 -13
data/ext/ruby_prof/rp_thread.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Copyright (C) 2005-
|
1
|
+
/* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
3
3
|
|
4
4
|
#include "ruby_prof.h"
|
@@ -10,9 +10,8 @@ thread_data_t*
|
|
10
10
|
thread_data_create()
|
11
11
|
{
|
12
12
|
thread_data_t* result = ALLOC(thread_data_t);
|
13
|
-
result->stack =
|
13
|
+
result->stack = prof_stack_create();
|
14
14
|
result->method_table = method_table_create();
|
15
|
-
result->top = NULL;
|
16
15
|
result->object = Qnil;
|
17
16
|
result->methods = Qnil;
|
18
17
|
return result;
|
@@ -42,9 +41,8 @@ static void
|
|
42
41
|
thread_data_free(thread_data_t* thread_data)
|
43
42
|
{
|
44
43
|
thread_data_ruby_gc_free(thread_data);
|
45
|
-
thread_data->top = NULL;
|
46
44
|
method_table_free(thread_data->method_table);
|
47
|
-
|
45
|
+
prof_stack_free(thread_data->stack);
|
48
46
|
|
49
47
|
thread_data->thread_id = Qnil;
|
50
48
|
|
@@ -68,7 +66,9 @@ prof_thread_mark(thread_data_t *thread)
|
|
68
66
|
if (thread->methods != Qnil)
|
69
67
|
rb_gc_mark(thread->methods);
|
70
68
|
|
71
|
-
|
69
|
+
if (thread->thread_id != Qnil)
|
70
|
+
rb_gc_mark(thread->thread_id);
|
71
|
+
|
72
72
|
st_foreach(thread->method_table, mark_methods, 0);
|
73
73
|
}
|
74
74
|
|
@@ -157,7 +157,7 @@ switch_thread(void* prof, VALUE thread_id)
|
|
157
157
|
thread_data_t *thread_data = threads_table_lookup(profile, thread_id);
|
158
158
|
|
159
159
|
/* Get current frame for this thread */
|
160
|
-
prof_frame_t *frame =
|
160
|
+
prof_frame_t *frame = prof_stack_peek(thread_data->stack);
|
161
161
|
|
162
162
|
/* Update the time this thread waited for another thread */
|
163
163
|
if (frame)
|
@@ -170,7 +170,7 @@ switch_thread(void* prof, VALUE thread_id)
|
|
170
170
|
and reset this thread's last context switch to 0.*/
|
171
171
|
if (profile->last_thread_data)
|
172
172
|
{
|
173
|
-
prof_frame_t *last_frame =
|
173
|
+
prof_frame_t *last_frame = prof_stack_peek(profile->last_thread_data->stack);
|
174
174
|
if (last_frame)
|
175
175
|
last_frame->switch_time = measurement;
|
176
176
|
}
|
@@ -179,6 +179,28 @@ switch_thread(void* prof, VALUE thread_id)
|
|
179
179
|
return thread_data;
|
180
180
|
}
|
181
181
|
|
182
|
+
int pause_thread(st_data_t key, st_data_t value, st_data_t data)
|
183
|
+
{
|
184
|
+
thread_data_t* thread_data = (thread_data_t *) value;
|
185
|
+
prof_profile_t* profile = (prof_profile_t*)data;
|
186
|
+
|
187
|
+
prof_frame_t* frame = prof_stack_peek(thread_data->stack);
|
188
|
+
prof_frame_pause(frame, profile->measurement_at_pause_resume);
|
189
|
+
|
190
|
+
return ST_CONTINUE;
|
191
|
+
}
|
192
|
+
|
193
|
+
int unpause_thread(st_data_t key, st_data_t value, st_data_t data)
|
194
|
+
{
|
195
|
+
thread_data_t* thread_data = (thread_data_t *) value;
|
196
|
+
prof_profile_t* profile = (prof_profile_t*)data;
|
197
|
+
|
198
|
+
prof_frame_t* frame = prof_stack_peek(thread_data->stack);
|
199
|
+
prof_frame_unpause(frame, profile->measurement_at_pause_resume);
|
200
|
+
|
201
|
+
return ST_CONTINUE;
|
202
|
+
}
|
203
|
+
|
182
204
|
static int
|
183
205
|
collect_methods(st_data_t key, st_data_t value, st_data_t result)
|
184
206
|
{
|
@@ -220,18 +242,6 @@ prof_thread_methods(VALUE self)
|
|
220
242
|
return thread->methods;
|
221
243
|
}
|
222
244
|
|
223
|
-
/* call-seq:
|
224
|
-
method -> MethodInfo
|
225
|
-
|
226
|
-
Returns the top level method for this thread (ie, the starting
|
227
|
-
method). */
|
228
|
-
static VALUE
|
229
|
-
prof_thread_top_method(VALUE self)
|
230
|
-
{
|
231
|
-
thread_data_t* thread = prof_get_thread(self);
|
232
|
-
return prof_method_wrap(thread->top);
|
233
|
-
}
|
234
|
-
|
235
245
|
void rp_init_thread()
|
236
246
|
{
|
237
247
|
cRpThread = rb_define_class_under(mProf, "Thread", rb_cObject);
|
@@ -239,5 +249,4 @@ void rp_init_thread()
|
|
239
249
|
|
240
250
|
rb_define_method(cRpThread, "id", prof_thread_id, 0);
|
241
251
|
rb_define_method(cRpThread, "methods", prof_thread_methods, 0);
|
242
|
-
rb_define_method(cRpThread, "top_method", prof_thread_top_method, 0);
|
243
252
|
}
|
data/ext/ruby_prof/rp_thread.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Copyright (C) 2005-
|
1
|
+
/* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
3
3
|
|
4
4
|
#ifndef __RP_THREAD__
|
@@ -12,7 +12,6 @@ typedef struct
|
|
12
12
|
VALUE thread_id; /* Thread id */
|
13
13
|
st_table* method_table; /* Methods called in the thread */
|
14
14
|
prof_stack_t* stack; /* Stack of frames */
|
15
|
-
prof_method_t* top; /* The top method called in this thread */
|
16
15
|
} thread_data_t;
|
17
16
|
|
18
17
|
void rp_init_thread();
|
@@ -21,6 +20,7 @@ thread_data_t* switch_thread(void* prof, VALUE thread_id);
|
|
21
20
|
void threads_table_free(st_table *table);
|
22
21
|
VALUE prof_thread_wrap(thread_data_t *thread);
|
23
22
|
void prof_thread_mark(thread_data_t *thread);
|
24
|
-
|
23
|
+
int pause_thread(st_data_t key, st_data_t value, st_data_t data);
|
24
|
+
int unpause_thread(st_data_t key, st_data_t value, st_data_t data);
|
25
25
|
|
26
26
|
#endif //__RP_THREAD__
|
data/ext/ruby_prof/ruby_prof.c
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Copyright (C) 2005-
|
1
|
+
/* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
3
3
|
|
4
4
|
/* ruby-prof tracks the time spent executing every method in ruby programming.
|
@@ -116,80 +116,24 @@ static prof_method_t*
|
|
116
116
|
|
117
117
|
method = create_method(event, klass, mid, source_file, line);
|
118
118
|
method_table_insert(thread_data->method_table, method->key, method);
|
119
|
-
|
120
|
-
/* Is this the first method added to the thread? */
|
121
|
-
if (!thread_data->top)
|
122
|
-
thread_data->top = method;
|
123
119
|
}
|
124
120
|
return method;
|
125
121
|
}
|
126
122
|
|
127
|
-
static prof_frame_t*
|
128
|
-
pop_frame(prof_profile_t* profile, thread_data_t *thread_data)
|
129
|
-
{
|
130
|
-
prof_frame_t *frame = NULL;
|
131
|
-
prof_frame_t* parent_frame = NULL;
|
132
|
-
prof_call_info_t *call_info;
|
133
|
-
double measurement = profile->measurer->measure();
|
134
|
-
double total_time;
|
135
|
-
double self_time;
|
136
|
-
#ifdef _MSC_VER
|
137
|
-
BOOL frame_paused;
|
138
|
-
#else
|
139
|
-
_Bool frame_paused;
|
140
|
-
#endif
|
141
|
-
|
142
|
-
frame = stack_pop(thread_data->stack); // only time it's called
|
143
|
-
|
144
|
-
/* Frame can be null. This can happen if RubProf.start is called from
|
145
|
-
a method that exits. And it can happen if an exception is raised
|
146
|
-
in code that is being profiled and the stack unwinds (RubyProf is
|
147
|
-
not notified of that by the ruby runtime. */
|
148
|
-
if (frame == NULL)
|
149
|
-
return NULL;
|
150
|
-
|
151
|
-
/* Calculate the total time this method took */
|
152
|
-
frame_paused = frame_is_paused(frame);
|
153
|
-
frame_unpause(frame, measurement);
|
154
|
-
total_time = measurement - frame->start_time - frame->dead_time;
|
155
|
-
self_time = total_time - frame->child_time - frame->wait_time;
|
156
|
-
|
157
|
-
/* Update information about the current method */
|
158
|
-
call_info = frame->call_info;
|
159
|
-
call_info->called++;
|
160
|
-
call_info->total_time += total_time;
|
161
|
-
call_info->self_time += self_time;
|
162
|
-
call_info->wait_time += frame->wait_time;
|
163
|
-
|
164
|
-
parent_frame = stack_peek(thread_data->stack);
|
165
|
-
if (parent_frame)
|
166
|
-
{
|
167
|
-
parent_frame->child_time += total_time;
|
168
|
-
parent_frame->dead_time += frame->dead_time;
|
169
|
-
|
170
|
-
// Repause parent if currently paused
|
171
|
-
if (frame_paused)
|
172
|
-
frame_pause(parent_frame, measurement);
|
173
|
-
|
174
|
-
call_info->line = parent_frame->line;
|
175
|
-
}
|
176
|
-
|
177
|
-
return frame;
|
178
|
-
}
|
179
|
-
|
180
123
|
static int
|
181
124
|
pop_frames(st_data_t key, st_data_t value, st_data_t data)
|
182
125
|
{
|
183
126
|
VALUE thread_id = (VALUE)key;
|
184
127
|
thread_data_t* thread_data = (thread_data_t *) value;
|
185
128
|
prof_profile_t* profile = (prof_profile_t*) data;
|
129
|
+
double measurement = profile->measurer->measure();
|
186
130
|
|
187
131
|
if (!profile->last_thread_data || profile->last_thread_data->thread_id != thread_id)
|
188
132
|
thread_data = switch_thread(profile, thread_id);
|
189
133
|
else
|
190
134
|
thread_data = profile->last_thread_data;
|
191
135
|
|
192
|
-
while (
|
136
|
+
while (prof_stack_pop(thread_data->stack, measurement))
|
193
137
|
{
|
194
138
|
}
|
195
139
|
|
@@ -280,7 +224,8 @@ prof_event_hook(rb_event_flag_t event, NODE *node, VALUE self, ID mid, VALUE kla
|
|
280
224
|
/* Special case - skip any methods from the mProf
|
281
225
|
module or cProfile class since they clutter
|
282
226
|
the results but aren't important to them results. */
|
283
|
-
if (self == mProf || klass == cProfile)
|
227
|
+
if (self == mProf || klass == cProfile)
|
228
|
+
return;
|
284
229
|
|
285
230
|
/* Get the current thread information. */
|
286
231
|
thread = rb_thread_current();
|
@@ -298,7 +243,7 @@ prof_event_hook(rb_event_flag_t event, NODE *node, VALUE self, ID mid, VALUE kla
|
|
298
243
|
thread_data = profile->last_thread_data;
|
299
244
|
|
300
245
|
/* Get the current frame for the current thread. */
|
301
|
-
frame =
|
246
|
+
frame = prof_stack_peek(thread_data->stack);
|
302
247
|
|
303
248
|
switch (event) {
|
304
249
|
case RUBY_EVENT_LINE:
|
@@ -350,23 +295,21 @@ prof_event_hook(rb_event_flag_t event, NODE *node, VALUE self, ID mid, VALUE kla
|
|
350
295
|
// Unpause the parent frame. If currently paused then:
|
351
296
|
// 1) The child frame will begin paused.
|
352
297
|
// 2) The parent will inherit the child's dead time.
|
353
|
-
|
298
|
+
prof_frame_unpause(frame, measurement);
|
354
299
|
}
|
355
300
|
|
356
301
|
/* Push a new frame onto the stack for a new c-call or ruby call (into a method) */
|
357
|
-
frame =
|
302
|
+
frame = prof_stack_push(thread_data->stack, measurement);
|
358
303
|
frame->call_info = call_info;
|
359
304
|
frame->call_info->depth = frame->depth;
|
360
|
-
frame->start_time = measurement;
|
361
305
|
frame->pause_time = profile->paused == Qtrue ? measurement : -1;
|
362
|
-
frame->dead_time = 0;
|
363
306
|
frame->line = rb_sourceline();
|
364
307
|
break;
|
365
308
|
}
|
366
309
|
case RUBY_EVENT_RETURN:
|
367
310
|
case RUBY_EVENT_C_RETURN:
|
368
311
|
{
|
369
|
-
|
312
|
+
prof_stack_pop(thread_data->stack, measurement);
|
370
313
|
break;
|
371
314
|
}
|
372
315
|
}
|
@@ -517,28 +460,6 @@ prof_initialize(int argc, VALUE *argv, VALUE self)
|
|
517
460
|
return self;
|
518
461
|
}
|
519
462
|
|
520
|
-
static int pause_thread(st_data_t key, st_data_t value, st_data_t data)
|
521
|
-
{
|
522
|
-
thread_data_t* thread_data = (thread_data_t *) value;
|
523
|
-
prof_profile_t* profile = (prof_profile_t*) data;
|
524
|
-
|
525
|
-
prof_frame_t* frame = stack_peek(thread_data->stack);
|
526
|
-
frame_pause(frame, profile->measurement_at_pause_resume);
|
527
|
-
|
528
|
-
return ST_CONTINUE;
|
529
|
-
}
|
530
|
-
|
531
|
-
static int unpause_thread(st_data_t key, st_data_t value, st_data_t data)
|
532
|
-
{
|
533
|
-
thread_data_t* thread_data = (thread_data_t *) value;
|
534
|
-
prof_profile_t* profile = (prof_profile_t*) data;
|
535
|
-
|
536
|
-
prof_frame_t* frame = stack_peek(thread_data->stack);
|
537
|
-
frame_unpause(frame, profile->measurement_at_pause_resume);
|
538
|
-
|
539
|
-
return ST_CONTINUE;
|
540
|
-
}
|
541
|
-
|
542
463
|
/* call-seq:
|
543
464
|
paused? -> boolean
|
544
465
|
|
data/ext/ruby_prof/ruby_prof.h
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
/* Copyright (C) 2005-
|
1
|
+
/* Copyright (C) 2005-2013 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
|
2
2
|
Please see the LICENSE file for copyright and distribution information */
|
3
3
|
|
4
4
|
#ifndef __RUBY_PROF_H__
|
@@ -1,24 +1,30 @@
|
|
1
1
|
|
2
2
|
Microsoft Visual Studio Solution File, Format Version 11.00
|
3
3
|
# Visual Studio 2010
|
4
|
-
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof", "ruby_prof.vcxproj", "{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}"
|
5
|
-
EndProject
|
6
4
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_18", "ruby_prof_18.vcxproj", "{7789FC23-D053-4733-9ED1-D6CE099E1237}"
|
7
5
|
EndProject
|
6
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_19", "ruby_prof_19.vcxproj", "{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}"
|
7
|
+
EndProject
|
8
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ruby_prof_20", "ruby_prof_20.vcxproj", "{6B4978F4-3B5F-4D38-81A8-069EC28CC069}"
|
9
|
+
EndProject
|
8
10
|
Global
|
9
11
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
10
12
|
Debug|Win32 = Debug|Win32
|
11
13
|
Release|Win32 = Release|Win32
|
12
14
|
EndGlobalSection
|
13
15
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
14
|
-
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
15
|
-
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.Build.0 = Debug|Win32
|
16
|
-
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.ActiveCfg = Release|Win32
|
17
|
-
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.Build.0 = Release|Win32
|
18
16
|
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Debug|Win32.ActiveCfg = Debug|Win32
|
19
17
|
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Debug|Win32.Build.0 = Debug|Win32
|
20
18
|
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Release|Win32.ActiveCfg = Release|Win32
|
21
19
|
{7789FC23-D053-4733-9ED1-D6CE099E1237}.Release|Win32.Build.0 = Release|Win32
|
20
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.ActiveCfg = Debug|Win32
|
21
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Debug|Win32.Build.0 = Debug|Win32
|
22
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.ActiveCfg = Release|Win32
|
23
|
+
{5AF7F29A-B100-4D61-95DA-DB21D7C8C1B8}.Release|Win32.Build.0 = Release|Win32
|
24
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Debug|Win32.ActiveCfg = Debug|Win32
|
25
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Debug|Win32.Build.0 = Debug|Win32
|
26
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Release|Win32.ActiveCfg = Release|Win32
|
27
|
+
{6B4978F4-3B5F-4D38-81A8-069EC28CC069}.Release|Win32.Build.0 = Release|Win32
|
22
28
|
EndGlobalSection
|
23
29
|
GlobalSection(SolutionProperties) = preSolution
|
24
30
|
HideSolutionNode = FALSE
|
@@ -44,12 +44,14 @@
|
|
44
44
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
45
45
|
<UseDebugLibraries>true</UseDebugLibraries>
|
46
46
|
<CharacterSet>Unicode</CharacterSet>
|
47
|
+
<PlatformToolset>v110</PlatformToolset>
|
47
48
|
</PropertyGroup>
|
48
49
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
49
50
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
50
51
|
<UseDebugLibraries>false</UseDebugLibraries>
|
51
52
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
52
53
|
<CharacterSet>Unicode</CharacterSet>
|
54
|
+
<PlatformToolset>v110</PlatformToolset>
|
53
55
|
</PropertyGroup>
|
54
56
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
55
57
|
<ImportGroup Label="ExtensionSettings">
|
@@ -20,12 +20,14 @@
|
|
20
20
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
21
21
|
<UseDebugLibraries>true</UseDebugLibraries>
|
22
22
|
<CharacterSet>Unicode</CharacterSet>
|
23
|
+
<PlatformToolset>v110</PlatformToolset>
|
23
24
|
</PropertyGroup>
|
24
25
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
25
26
|
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
26
27
|
<UseDebugLibraries>false</UseDebugLibraries>
|
27
28
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
28
29
|
<CharacterSet>Unicode</CharacterSet>
|
30
|
+
<PlatformToolset>v110</PlatformToolset>
|
29
31
|
</PropertyGroup>
|
30
32
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
31
33
|
<ImportGroup Label="ExtensionSettings">
|
@@ -41,6 +43,7 @@
|
|
41
43
|
<LinkIncremental>true</LinkIncremental>
|
42
44
|
<OutDir>..\..\..\lib\1.9</OutDir>
|
43
45
|
<TargetExt>.so</TargetExt>
|
46
|
+
<TargetName>ruby_prof</TargetName>
|
44
47
|
</PropertyGroup>
|
45
48
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
46
49
|
<LinkIncremental>false</LinkIncremental>
|
@@ -52,7 +55,7 @@
|
|
52
55
|
<WarningLevel>Level3</WarningLevel>
|
53
56
|
<Optimization>Disabled</Optimization>
|
54
57
|
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
55
|
-
<AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-
|
58
|
+
<AdditionalIncludeDirectories>C:\MinGW\local\ruby193vc\include\ruby-1.9.1;C:\MinGW\local\ruby193vc\include\ruby-1.9.1\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
56
59
|
</ClCompile>
|
57
60
|
<Link>
|
58
61
|
<SubSystem>Windows</SubSystem>
|
@@ -0,0 +1,112 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
3
|
+
<ItemGroup Label="ProjectConfigurations">
|
4
|
+
<ProjectConfiguration Include="Debug|Win32">
|
5
|
+
<Configuration>Debug</Configuration>
|
6
|
+
<Platform>Win32</Platform>
|
7
|
+
</ProjectConfiguration>
|
8
|
+
<ProjectConfiguration Include="Release|Win32">
|
9
|
+
<Configuration>Release</Configuration>
|
10
|
+
<Platform>Win32</Platform>
|
11
|
+
</ProjectConfiguration>
|
12
|
+
</ItemGroup>
|
13
|
+
<PropertyGroup Label="Globals">
|
14
|
+
<ProjectGuid>{6B4978F4-3B5F-4D38-81A8-069EC28CC069}</ProjectGuid>
|
15
|
+
<Keyword>Win32Proj</Keyword>
|
16
|
+
<RootNamespace>ruby_prof</RootNamespace>
|
17
|
+
</PropertyGroup>
|
18
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
19
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
20
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
21
|
+
<UseDebugLibraries>true</UseDebugLibraries>
|
22
|
+
<CharacterSet>Unicode</CharacterSet>
|
23
|
+
<PlatformToolset>v110</PlatformToolset>
|
24
|
+
</PropertyGroup>
|
25
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
26
|
+
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
27
|
+
<UseDebugLibraries>false</UseDebugLibraries>
|
28
|
+
<WholeProgramOptimization>true</WholeProgramOptimization>
|
29
|
+
<CharacterSet>Unicode</CharacterSet>
|
30
|
+
<PlatformToolset>v110</PlatformToolset>
|
31
|
+
</PropertyGroup>
|
32
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
33
|
+
<ImportGroup Label="ExtensionSettings">
|
34
|
+
</ImportGroup>
|
35
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
36
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
37
|
+
</ImportGroup>
|
38
|
+
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
39
|
+
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
40
|
+
</ImportGroup>
|
41
|
+
<PropertyGroup Label="UserMacros" />
|
42
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
43
|
+
<LinkIncremental>true</LinkIncremental>
|
44
|
+
<OutDir>..\..\..\lib\2.0</OutDir>
|
45
|
+
<TargetExt>.so</TargetExt>
|
46
|
+
<TargetName>ruby_prof</TargetName>
|
47
|
+
</PropertyGroup>
|
48
|
+
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
49
|
+
<LinkIncremental>false</LinkIncremental>
|
50
|
+
</PropertyGroup>
|
51
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
52
|
+
<ClCompile>
|
53
|
+
<PrecompiledHeader>
|
54
|
+
</PrecompiledHeader>
|
55
|
+
<WarningLevel>Level3</WarningLevel>
|
56
|
+
<Optimization>Disabled</Optimization>
|
57
|
+
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
58
|
+
<AdditionalIncludeDirectories>C:\MinGW\local\ruby200vc\include\ruby-2.0.0;C:\MinGW\local\ruby200vc\include\ruby-2.0.0\i386-mswin32_110;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
59
|
+
</ClCompile>
|
60
|
+
<Link>
|
61
|
+
<SubSystem>Windows</SubSystem>
|
62
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
63
|
+
<AdditionalLibraryDirectories>C:\MinGW\local\ruby200vc\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
64
|
+
<AdditionalDependencies>msvcr100-ruby200.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
65
|
+
<ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
|
66
|
+
</Link>
|
67
|
+
</ItemDefinitionGroup>
|
68
|
+
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
69
|
+
<ClCompile>
|
70
|
+
<WarningLevel>Level3</WarningLevel>
|
71
|
+
<PrecompiledHeader>
|
72
|
+
</PrecompiledHeader>
|
73
|
+
<Optimization>MaxSpeed</Optimization>
|
74
|
+
<FunctionLevelLinking>true</FunctionLevelLinking>
|
75
|
+
<IntrinsicFunctions>true</IntrinsicFunctions>
|
76
|
+
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RUBY_PROF_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
77
|
+
</ClCompile>
|
78
|
+
<Link>
|
79
|
+
<SubSystem>Windows</SubSystem>
|
80
|
+
<GenerateDebugInformation>true</GenerateDebugInformation>
|
81
|
+
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
82
|
+
<OptimizeReferences>true</OptimizeReferences>
|
83
|
+
</Link>
|
84
|
+
</ItemDefinitionGroup>
|
85
|
+
<ItemGroup>
|
86
|
+
<ClInclude Include="..\rp_call_info.h" />
|
87
|
+
<ClInclude Include="..\rp_measure.h" />
|
88
|
+
<ClInclude Include="..\rp_method.h" />
|
89
|
+
<ClInclude Include="..\rp_stack.h" />
|
90
|
+
<ClInclude Include="..\rp_thread.h" />
|
91
|
+
<ClInclude Include="..\ruby_prof.h" />
|
92
|
+
<ClInclude Include="..\version.h" />
|
93
|
+
</ItemGroup>
|
94
|
+
<ItemGroup>
|
95
|
+
<ClCompile Include="..\rp_call_info.c" />
|
96
|
+
<ClCompile Include="..\rp_measure.c" />
|
97
|
+
<ClCompile Include="..\rp_measure_allocations.c" />
|
98
|
+
<ClCompile Include="..\rp_measure_cpu_time.c" />
|
99
|
+
<ClCompile Include="..\rp_measure_gc_runs.c" />
|
100
|
+
<ClCompile Include="..\rp_measure_gc_time.c" />
|
101
|
+
<ClCompile Include="..\rp_measure_memory.c" />
|
102
|
+
<ClCompile Include="..\rp_measure_process_time.c" />
|
103
|
+
<ClCompile Include="..\rp_measure_wall_time.c" />
|
104
|
+
<ClCompile Include="..\rp_method.c" />
|
105
|
+
<ClCompile Include="..\rp_stack.c" />
|
106
|
+
<ClCompile Include="..\rp_thread.c" />
|
107
|
+
<ClCompile Include="..\ruby_prof.c" />
|
108
|
+
</ItemGroup>
|
109
|
+
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
110
|
+
<ImportGroup Label="ExtensionTargets">
|
111
|
+
</ImportGroup>
|
112
|
+
</Project>
|