| OLD | NEW |
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "platform/address_sanitizer.h" | 5 #include "platform/address_sanitizer.h" |
| 6 #include "platform/memory_sanitizer.h" | 6 #include "platform/memory_sanitizer.h" |
| 7 #include "platform/utils.h" | 7 #include "platform/utils.h" |
| 8 | 8 |
| 9 #include "vm/allocation.h" | 9 #include "vm/allocation.h" |
| 10 #include "vm/atomic.h" | 10 #include "vm/atomic.h" |
| (...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 891 | 891 |
| 892 if (!GetAndValidateIsolateStackBounds(thread, | 892 if (!GetAndValidateIsolateStackBounds(thread, |
| 893 fp, | 893 fp, |
| 894 sp, | 894 sp, |
| 895 &stack_lower, | 895 &stack_lower, |
| 896 &stack_upper)) { | 896 &stack_upper)) { |
| 897 // Could not get stack boundary. | 897 // Could not get stack boundary. |
| 898 return; | 898 return; |
| 899 } | 899 } |
| 900 | 900 |
| 901 Sample* sample = SetupSample(thread, sample_buffer, os_thread->id()); | 901 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id()); |
| 902 sample->SetAllocationCid(cid); | 902 sample->SetAllocationCid(cid); |
| 903 ProfilerNativeStackWalker native_stack_walker(isolate, | 903 ProfilerNativeStackWalker native_stack_walker(isolate, |
| 904 sample, | 904 sample, |
| 905 sample_buffer, | 905 sample_buffer, |
| 906 stack_lower, | 906 stack_lower, |
| 907 stack_upper, | 907 stack_upper, |
| 908 pc, | 908 pc, |
| 909 fp, | 909 fp, |
| 910 sp); | 910 sp); |
| 911 native_stack_walker.walk(); | 911 native_stack_walker.walk(); |
| 912 } else if (exited_dart_code) { | 912 } else if (exited_dart_code) { |
| 913 Sample* sample = SetupSample(thread, sample_buffer, os_thread->id()); | 913 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id()); |
| 914 sample->SetAllocationCid(cid); | 914 sample->SetAllocationCid(cid); |
| 915 ProfilerDartExitStackWalker dart_exit_stack_walker(thread, | 915 ProfilerDartExitStackWalker dart_exit_stack_walker(thread, |
| 916 isolate, | 916 isolate, |
| 917 sample, | 917 sample, |
| 918 sample_buffer); | 918 sample_buffer); |
| 919 dart_exit_stack_walker.walk(); | 919 dart_exit_stack_walker.walk(); |
| 920 } else { | 920 } else { |
| 921 // Fall back. | 921 // Fall back. |
| 922 uintptr_t pc = GetProgramCounter(); | 922 uintptr_t pc = GetProgramCounter(); |
| 923 Sample* sample = SetupSample(thread, sample_buffer, os_thread->id()); | 923 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id()); |
| 924 sample->SetAllocationCid(cid); | 924 sample->SetAllocationCid(cid); |
| 925 sample->SetAt(0, pc); | 925 sample->SetAt(0, pc); |
| 926 } | 926 } |
| 927 } | 927 } |
| 928 | 928 |
| 929 | 929 |
| 930 void Profiler::SampleThread(Thread* thread, | 930 void Profiler::SampleThread(Thread* thread, |
| 931 const InterruptedThreadState& state) { | 931 const InterruptedThreadState& state) { |
| 932 ASSERT(thread != NULL); | 932 ASSERT(thread != NULL); |
| 933 OSThread* os_thread = thread->os_thread(); | 933 OSThread* os_thread = thread->os_thread(); |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 993 | 993 |
| 994 // At this point we have a valid stack boundary for this isolate and | 994 // At this point we have a valid stack boundary for this isolate and |
| 995 // know that our initial stack and frame pointers are within the boundary. | 995 // know that our initial stack and frame pointers are within the boundary. |
| 996 SampleBuffer* sample_buffer = Profiler::sample_buffer(); | 996 SampleBuffer* sample_buffer = Profiler::sample_buffer(); |
| 997 if (sample_buffer == NULL) { | 997 if (sample_buffer == NULL) { |
| 998 // Profiler not initialized. | 998 // Profiler not initialized. |
| 999 return; | 999 return; |
| 1000 } | 1000 } |
| 1001 | 1001 |
| 1002 // Setup sample. | 1002 // Setup sample. |
| 1003 Sample* sample = SetupSample(thread, sample_buffer, os_thread->id()); | 1003 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id()); |
| 1004 // Increment counter for vm tag. | 1004 // Increment counter for vm tag. |
| 1005 VMTagCounters* counters = isolate->vm_tag_counters(); | 1005 VMTagCounters* counters = isolate->vm_tag_counters(); |
| 1006 ASSERT(counters != NULL); | 1006 ASSERT(counters != NULL); |
| 1007 counters->Increment(sample->vm_tag()); | 1007 counters->Increment(sample->vm_tag()); |
| 1008 | 1008 |
| 1009 ProfilerNativeStackWalker native_stack_walker(isolate, | 1009 ProfilerNativeStackWalker native_stack_walker(isolate, |
| 1010 sample, | 1010 sample, |
| 1011 sample_buffer, | 1011 sample_buffer, |
| 1012 stack_lower, | 1012 stack_lower, |
| 1013 stack_upper, | 1013 stack_upper, |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1361 } | 1361 } |
| 1362 } | 1362 } |
| 1363 | 1363 |
| 1364 | 1364 |
| 1365 ProcessedSampleBuffer::ProcessedSampleBuffer() | 1365 ProcessedSampleBuffer::ProcessedSampleBuffer() |
| 1366 : code_lookup_table_(new CodeLookupTable(Thread::Current())) { | 1366 : code_lookup_table_(new CodeLookupTable(Thread::Current())) { |
| 1367 ASSERT(code_lookup_table_ != NULL); | 1367 ASSERT(code_lookup_table_ != NULL); |
| 1368 } | 1368 } |
| 1369 | 1369 |
| 1370 } // namespace dart | 1370 } // namespace dart |
| OLD | NEW |