ruby-prof 0.11.3 → 0.12.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/CHANGES +27 -0
  2. data/README.rdoc +14 -14
  3. data/bin/ruby-prof +275 -266
  4. data/ext/ruby_prof/rp_call_info.c +33 -24
  5. data/ext/ruby_prof/rp_call_info.h +2 -1
  6. data/ext/ruby_prof/rp_measure.c +1 -1
  7. data/ext/ruby_prof/rp_measure.h +1 -1
  8. data/ext/ruby_prof/rp_measure_allocations.c +1 -1
  9. data/ext/ruby_prof/rp_measure_cpu_time.c +1 -1
  10. data/ext/ruby_prof/rp_measure_gc_runs.c +1 -1
  11. data/ext/ruby_prof/rp_measure_gc_time.c +1 -1
  12. data/ext/ruby_prof/rp_measure_memory.c +1 -1
  13. data/ext/ruby_prof/rp_measure_process_time.c +2 -2
  14. data/ext/ruby_prof/rp_measure_wall_time.c +2 -2
  15. data/ext/ruby_prof/rp_method.c +11 -24
  16. data/ext/ruby_prof/rp_method.h +2 -3
  17. data/ext/ruby_prof/rp_stack.c +48 -7
  18. data/ext/ruby_prof/rp_stack.h +3 -3
  19. data/ext/ruby_prof/rp_thread.c +26 -17
  20. data/ext/ruby_prof/rp_thread.h +3 -3
  21. data/ext/ruby_prof/ruby_prof.c +7 -86
  22. data/ext/ruby_prof/ruby_prof.h +1 -1
  23. data/ext/ruby_prof/vc/ruby_prof.sln +12 -6
  24. data/ext/ruby_prof/vc/ruby_prof_18.vcxproj +110 -0
  25. data/ext/ruby_prof/vc/{ruby_prof.vcxproj → ruby_prof_19.vcxproj} +4 -1
  26. data/ext/ruby_prof/vc/ruby_prof_20.vcxproj +112 -0
  27. data/ext/ruby_prof/version.h +4 -4
  28. data/lib/ruby-prof.rb +1 -0
  29. data/lib/ruby-prof/call_info.rb +1 -1
  30. data/lib/ruby-prof/call_info_visitor.rb +4 -2
  31. data/lib/ruby-prof/compatibility.rb +6 -1
  32. data/lib/ruby-prof/method_info.rb +1 -1
  33. data/lib/ruby-prof/printers/call_info_printer.rb +1 -1
  34. data/lib/ruby-prof/printers/call_stack_printer.rb +3 -3
  35. data/lib/ruby-prof/printers/dot_printer.rb +1 -1
  36. data/lib/ruby-prof/printers/flat_printer.rb +4 -4
  37. data/lib/ruby-prof/printers/flat_printer_with_line_numbers.rb +2 -2
  38. data/lib/ruby-prof/printers/graph_html_printer.rb +3 -3
  39. data/lib/ruby-prof/printers/graph_printer.rb +15 -15
  40. data/lib/ruby-prof/thread.rb +22 -0
  41. data/ruby-prof.gemspec +2 -1
  42. data/test/basic_test.rb +77 -45
  43. data/test/call_info_test.rb +78 -0
  44. data/test/call_info_visitor_test.rb +1 -1
  45. data/test/dynamic_method_test.rb +14 -8
  46. data/test/measure_cpu_time_test.rb +23 -12
  47. data/test/measure_process_time_test.rb +21 -170
  48. data/test/measure_wall_time_test.rb +59 -13
  49. data/test/method_elimination_test.rb +30 -19
  50. data/test/pause_resume_test.rb +129 -22
  51. data/test/prime.rb +0 -1
  52. data/test/printers_test.rb +7 -18
  53. data/test/recursive_test.rb +4 -48
  54. data/test/test_helper.rb +30 -10
  55. data/test/test_suite.rb +1 -2
  56. metadata +23 -5
  57. data/test/pause_test.rb +0 -57
  58. 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
  #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 = prof_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 = prof_frame_is_paused(frame);
153
- prof_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 = prof_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
- prof_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();
@@ -354,19 +299,17 @@ prof_event_hook(rb_event_flag_t event, NODE *node, VALUE self, ID mid, VALUE kla
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 = prof_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 = prof_stack_peek(thread_data->stack);
526
- prof_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 = prof_stack_peek(thread_data->stack);
537
- prof_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
@@ -0,0 +1,110 @@
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
+ <ItemGroup>
14
+ <ClInclude Include="..\rp_call_info.h" />
15
+ <ClInclude Include="..\rp_measure.h" />
16
+ <ClInclude Include="..\rp_method.h" />
17
+ <ClInclude Include="..\rp_stack.h" />
18
+ <ClInclude Include="..\rp_thread.h" />
19
+ <ClInclude Include="..\ruby_prof.h" />
20
+ <ClInclude Include="..\version.h" />
21
+ </ItemGroup>
22
+ <ItemGroup>
23
+ <ClCompile Include="..\rp_call_info.c" />
24
+ <ClCompile Include="..\rp_measure.c" />
25
+ <ClCompile Include="..\rp_measure_allocations.c" />
26
+ <ClCompile Include="..\rp_measure_cpu_time.c" />
27
+ <ClCompile Include="..\rp_measure_gc_runs.c" />
28
+ <ClCompile Include="..\rp_measure_gc_time.c" />
29
+ <ClCompile Include="..\rp_measure_memory.c" />
30
+ <ClCompile Include="..\rp_measure_process_time.c" />
31
+ <ClCompile Include="..\rp_measure_wall_time.c" />
32
+ <ClCompile Include="..\rp_method.c" />
33
+ <ClCompile Include="..\rp_stack.c" />
34
+ <ClCompile Include="..\rp_thread.c" />
35
+ <ClCompile Include="..\ruby_prof.c" />
36
+ </ItemGroup>
37
+ <PropertyGroup Label="Globals">
38
+ <ProjectGuid>{7789FC23-D053-4733-9ED1-D6CE099E1237}</ProjectGuid>
39
+ <Keyword>Win32Proj</Keyword>
40
+ <RootNamespace>ruby_prof_18</RootNamespace>
41
+ </PropertyGroup>
42
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
43
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
44
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
45
+ <UseDebugLibraries>true</UseDebugLibraries>
46
+ <CharacterSet>Unicode</CharacterSet>
47
+ <PlatformToolset>v110</PlatformToolset>
48
+ </PropertyGroup>
49
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
50
+ <ConfigurationType>DynamicLibrary</ConfigurationType>
51
+ <UseDebugLibraries>false</UseDebugLibraries>
52
+ <WholeProgramOptimization>true</WholeProgramOptimization>
53
+ <CharacterSet>Unicode</CharacterSet>
54
+ <PlatformToolset>v110</PlatformToolset>
55
+ </PropertyGroup>
56
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
57
+ <ImportGroup Label="ExtensionSettings">
58
+ </ImportGroup>
59
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
60
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
61
+ </ImportGroup>
62
+ <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
63
+ <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
64
+ </ImportGroup>
65
+ <PropertyGroup Label="UserMacros" />
66
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
67
+ <LinkIncremental>true</LinkIncremental>
68
+ <OutDir>C:\MinGW\local\src\ruby-prof\lib\1.8</OutDir>
69
+ <TargetExt>.so</TargetExt>
70
+ <TargetName>ruby_prof</TargetName>
71
+ </PropertyGroup>
72
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
73
+ <LinkIncremental>false</LinkIncremental>
74
+ </PropertyGroup>
75
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
76
+ <ClCompile>
77
+ <PrecompiledHeader>NotUsing</PrecompiledHeader>
78
+ <WarningLevel>Level3</WarningLevel>
79
+ <Optimization>Disabled</Optimization>
80
+ <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;RUBY_PROF_18_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
81
+ <AdditionalIncludeDirectories>C:\MinGW\local\ruby187vc\lib\ruby\1.8\i386-mswin32_100</AdditionalIncludeDirectories>
82
+ </ClCompile>
83
+ <Link>
84
+ <SubSystem>Windows</SubSystem>
85
+ <GenerateDebugInformation>true</GenerateDebugInformation>
86
+ <AdditionalLibraryDirectories>C:\MinGW\local\ruby187vc\lib</AdditionalLibraryDirectories>
87
+ <AdditionalDependencies>msvcr100-ruby18.lib;%(AdditionalDependencies)</AdditionalDependencies>
88
+ <ModuleDefinitionFile>ruby_prof.def</ModuleDefinitionFile>
89
+ </Link>
90
+ </ItemDefinitionGroup>
91
+ <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
92
+ <ClCompile>
93
+ <WarningLevel>Level3</WarningLevel>
94
+ <PrecompiledHeader>Use</PrecompiledHeader>
95
+ <Optimization>MaxSpeed</Optimization>
96
+ <FunctionLevelLinking>true</FunctionLevelLinking>
97
+ <IntrinsicFunctions>true</IntrinsicFunctions>
98
+ <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;RUBY_PROF_18_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
99
+ </ClCompile>
100
+ <Link>
101
+ <SubSystem>Windows</SubSystem>
102
+ <GenerateDebugInformation>true</GenerateDebugInformation>
103
+ <EnableCOMDATFolding>true</EnableCOMDATFolding>
104
+ <OptimizeReferences>true</OptimizeReferences>
105
+ </Link>
106
+ </ItemDefinitionGroup>
107
+ <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
108
+ <ImportGroup Label="ExtensionTargets">
109
+ </ImportGroup>
110
+ </Project>
@@ -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>