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.
Files changed (66) hide show
  1. data/CHANGES +27 -0
  2. data/README.rdoc +15 -15
  3. data/Rakefile +5 -0
  4. data/bin/ruby-prof +274 -265
  5. data/ext/ruby_prof/rp_call_info.c +33 -24
  6. data/ext/ruby_prof/rp_call_info.h +2 -1
  7. data/ext/ruby_prof/rp_measure.c +1 -1
  8. data/ext/ruby_prof/rp_measure.h +1 -1
  9. data/ext/ruby_prof/rp_measure_allocations.c +1 -1
  10. data/ext/ruby_prof/rp_measure_cpu_time.c +1 -1
  11. data/ext/ruby_prof/rp_measure_gc_runs.c +1 -1
  12. data/ext/ruby_prof/rp_measure_gc_time.c +1 -1
  13. data/ext/ruby_prof/rp_measure_memory.c +1 -1
  14. data/ext/ruby_prof/rp_measure_process_time.c +2 -2
  15. data/ext/ruby_prof/rp_measure_wall_time.c +2 -2
  16. data/ext/ruby_prof/rp_method.c +11 -24
  17. data/ext/ruby_prof/rp_method.h +2 -3
  18. data/ext/ruby_prof/rp_stack.c +55 -14
  19. data/ext/ruby_prof/rp_stack.h +10 -10
  20. data/ext/ruby_prof/rp_thread.c +30 -21
  21. data/ext/ruby_prof/rp_thread.h +3 -3
  22. data/ext/ruby_prof/ruby_prof.c +9 -88
  23. data/ext/ruby_prof/ruby_prof.h +1 -1
  24. data/ext/ruby_prof/vc/ruby_prof.sln +12 -6
  25. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +2 -0
  26. data/ext/ruby_prof/vc/{ruby_prof.vcxproj → ruby_prof_19.vcxproj} +4 -1
  27. data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +112 -0
  28. data/ext/ruby_prof/version.h +4 -4
  29. data/lib/1.8/ruby_prof.so +0 -0
  30. data/lib/1.9/ruby_prof.so +0 -0
  31. data/lib/2.0/ruby_prof.so +0 -0
  32. data/lib/ruby-prof.rb +1 -0
  33. data/lib/ruby-prof/call_info.rb +1 -1
  34. data/lib/ruby-prof/call_info_visitor.rb +4 -2
  35. data/lib/ruby-prof/compatibility.rb +13 -3
  36. data/lib/ruby-prof/method_info.rb +1 -1
  37. data/lib/ruby-prof/printers/call_info_printer.rb +1 -1
  38. data/lib/ruby-prof/printers/call_stack_printer.rb +3 -3
  39. data/lib/ruby-prof/printers/dot_printer.rb +2 -2
  40. data/lib/ruby-prof/printers/flat_printer.rb +4 -4
  41. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +2 -2
  42. data/lib/ruby-prof/printers/graph_html_printer.rb +3 -4
  43. data/lib/ruby-prof/printers/graph_printer.rb +15 -15
  44. data/lib/ruby-prof/profile.rb +1 -1
  45. data/lib/ruby-prof/rack.rb +0 -5
  46. data/lib/ruby-prof/thread.rb +22 -0
  47. data/ruby-prof.gemspec +2 -1
  48. data/test/basic_test.rb +77 -45
  49. data/test/call_info_test.rb +78 -0
  50. data/test/call_info_visitor_test.rb +1 -1
  51. data/test/dynamic_method_test.rb +14 -8
  52. data/test/measure_cpu_time_test.rb +23 -12
  53. data/test/measure_process_time_test.rb +21 -170
  54. data/test/measure_wall_time_test.rb +59 -13
  55. data/test/method_elimination_test.rb +30 -19
  56. data/test/pause_resume_test.rb +129 -22
  57. data/test/prime.rb +1 -2
  58. data/test/printers_test.rb +8 -17
  59. data/test/recursive_test.rb +6 -50
  60. data/test/test_helper.rb +30 -10
  61. data/test/test_suite.rb +1 -2
  62. metadata +23 -7
  63. data/test/bug_test.rb +0 -6
  64. data/test/gc_test.rb +0 -35
  65. data/test/pause_test.rb +0 -57
  66. data/test/prime_test.rb +0 -13
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2005-2011 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
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 = stack_create();
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
- stack_free(thread_data->stack);
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
- prof_method_mark(thread->top);
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 = stack_peek(thread_data->stack);
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 = stack_peek(profile->last_thread_data->stack);
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
  }
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2005-2011 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
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__
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2005-2011 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
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 (pop_frame(profile, thread_data))
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) return;
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 = stack_peek(thread_data->stack);
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
- frame_unpause(frame, measurement);
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 = stack_push(thread_data->stack);
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
- pop_frame(profile, thread_data);
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
 
@@ -1,4 +1,4 @@
1
- /* Copyright (C) 2005-2011 Shugo Maeda <shugo@ruby-lang.org> and Charlie Savage <cfis@savagexi.com>
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-mswin32_100;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
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>