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.
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>