ruby-prof 0.11.2-x86-mingw32 → 0.12.1-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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>
|