Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(266)

Side by Side Diff: runtime/vm/profiler.cc

Issue 1858283002: Initial SIMDBC interpreter. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: address comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 #elif defined(TARGET_ARCH_ARM64) 283 #elif defined(TARGET_ARCH_ARM64)
284 bool ReturnAddressLocator::LocateReturnAddress(uword* return_address) { 284 bool ReturnAddressLocator::LocateReturnAddress(uword* return_address) {
285 ASSERT(return_address != NULL); 285 ASSERT(return_address != NULL);
286 return false; 286 return false;
287 } 287 }
288 #elif defined(TARGET_ARCH_MIPS) 288 #elif defined(TARGET_ARCH_MIPS)
289 bool ReturnAddressLocator::LocateReturnAddress(uword* return_address) { 289 bool ReturnAddressLocator::LocateReturnAddress(uword* return_address) {
290 ASSERT(return_address != NULL); 290 ASSERT(return_address != NULL);
291 return false; 291 return false;
292 } 292 }
293 #elif defined(TARGET_ARCH_DBC)
294 bool ReturnAddressLocator::LocateReturnAddress(uword* return_address) {
295 ASSERT(return_address != NULL);
296 return false;
297 }
293 #else 298 #else
294 #error ReturnAddressLocator implementation missing for this architecture. 299 #error ReturnAddressLocator implementation missing for this architecture.
295 #endif 300 #endif
296 301
297 302
298 bool SampleFilter::TimeFilterSample(Sample* sample) { 303 bool SampleFilter::TimeFilterSample(Sample* sample) {
299 if ((time_origin_micros_ == -1) || 304 if ((time_origin_micros_ == -1) ||
300 (time_extent_micros_ == -1)) { 305 (time_extent_micros_ == -1)) {
301 // No time filter passed in, always pass. 306 // No time filter passed in, always pass.
302 return true; 307 return true;
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 831
827 static Sample* SetupSample(Thread* thread, 832 static Sample* SetupSample(Thread* thread,
828 SampleBuffer* sample_buffer, 833 SampleBuffer* sample_buffer,
829 ThreadId tid) { 834 ThreadId tid) {
830 ASSERT(thread != NULL); 835 ASSERT(thread != NULL);
831 Isolate* isolate = thread->isolate(); 836 Isolate* isolate = thread->isolate();
832 ASSERT(sample_buffer != NULL); 837 ASSERT(sample_buffer != NULL);
833 Sample* sample = sample_buffer->ReserveSample(); 838 Sample* sample = sample_buffer->ReserveSample();
834 sample->Init(isolate, OS::GetCurrentMonotonicMicros(), tid); 839 sample->Init(isolate, OS::GetCurrentMonotonicMicros(), tid);
835 uword vm_tag = thread->vm_tag(); 840 uword vm_tag = thread->vm_tag();
836 #if defined(USING_SIMULATOR) 841 #if defined(USING_SIMULATOR) && !defined(TARGET_ARCH_DBC)
837 // When running in the simulator, the runtime entry function address 842 // When running in the simulator, the runtime entry function address
838 // (stored as the vm tag) is the address of a redirect function. 843 // (stored as the vm tag) is the address of a redirect function.
839 // Attempt to find the real runtime entry function address and use that. 844 // Attempt to find the real runtime entry function address and use that.
840 uword redirect_vm_tag = Simulator::FunctionForRedirect(vm_tag); 845 uword redirect_vm_tag = Simulator::FunctionForRedirect(vm_tag);
841 if (redirect_vm_tag != 0) { 846 if (redirect_vm_tag != 0) {
842 vm_tag = redirect_vm_tag; 847 vm_tag = redirect_vm_tag;
843 } 848 }
844 #endif 849 #endif
845 sample->set_vm_tag(vm_tag); 850 sample->set_vm_tag(vm_tag);
846 sample->set_user_tag(isolate->user_tag()); 851 sample->set_user_tag(isolate->user_tag());
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
933 uintptr_t pc = GetProgramCounter(); 938 uintptr_t pc = GetProgramCounter();
934 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id()); 939 Sample* sample = SetupSample(thread, sample_buffer, os_thread->trace_id());
935 sample->SetAllocationCid(cid); 940 sample->SetAllocationCid(cid);
936 sample->SetAt(0, pc); 941 sample->SetAt(0, pc);
937 } 942 }
938 } 943 }
939 944
940 945
941 void Profiler::SampleThread(Thread* thread, 946 void Profiler::SampleThread(Thread* thread,
942 const InterruptedThreadState& state) { 947 const InterruptedThreadState& state) {
948 #if defined(TARGET_ARCH_DBC)
949 // TODO(vegorov) implement simulator stack sampling.
950 return;
951 #endif
952
943 ASSERT(thread != NULL); 953 ASSERT(thread != NULL);
944 OSThread* os_thread = thread->os_thread(); 954 OSThread* os_thread = thread->os_thread();
945 ASSERT(os_thread != NULL); 955 ASSERT(os_thread != NULL);
946 Isolate* isolate = thread->isolate(); 956 Isolate* isolate = thread->isolate();
947 957
948 if (StubCode::HasBeenInitialized() && 958 if (StubCode::HasBeenInitialized() &&
949 StubCode::InJumpToExceptionHandlerStub(state.pc)) { 959 StubCode::InJumpToExceptionHandlerStub(state.pc)) {
950 // The JumpToExceptionHandler stub manually adjusts the stack pointer, 960 // The JumpToExceptionHandler stub manually adjusts the stack pointer,
951 // frame pointer, and some isolate state before jumping to a catch entry. 961 // frame pointer, and some isolate state before jumping to a catch entry.
952 // It is not safe to walk the stack when executing this stub. 962 // It is not safe to walk the stack when executing this stub.
953 return; 963 return;
954 } 964 }
955 965
956 const bool in_dart_code = thread->IsExecutingDartCode(); 966 const bool in_dart_code = thread->IsExecutingDartCode();
957 967
958 uintptr_t sp = 0; 968 uintptr_t sp = 0;
959 uintptr_t fp = state.fp; 969 uintptr_t fp = state.fp;
960 uintptr_t pc = state.pc; 970 uintptr_t pc = state.pc;
961 #if defined(USING_SIMULATOR) 971 #if defined(USING_SIMULATOR) && !defined(TARGET_ARCH_DBC)
962 Simulator* simulator = NULL; 972 Simulator* simulator = NULL;
963 #endif 973 #endif
964 974
965 if (in_dart_code) { 975 if (in_dart_code) {
966 // If we're in Dart code, use the Dart stack pointer. 976 // If we're in Dart code, use the Dart stack pointer.
967 #if defined(USING_SIMULATOR) 977 #if defined(TARGET_ARCH_DBC)
978 UNIMPLEMENTED();
979 #elif defined(USING_SIMULATOR)
968 simulator = isolate->simulator(); 980 simulator = isolate->simulator();
969 sp = simulator->get_register(SPREG); 981 sp = simulator->get_register(SPREG);
970 fp = simulator->get_register(FPREG); 982 fp = simulator->get_register(FPREG);
971 pc = simulator->get_pc(); 983 pc = simulator->get_pc();
972 #else 984 #else
973 sp = state.dsp; 985 sp = state.dsp;
974 #endif 986 #endif
975 } else { 987 } else {
976 // If we're in runtime code, use the C stack pointer. 988 // If we're in runtime code, use the C stack pointer.
977 sp = state.csp; 989 sp = state.csp;
(...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 1392
1381 1393
1382 ProcessedSampleBuffer::ProcessedSampleBuffer() 1394 ProcessedSampleBuffer::ProcessedSampleBuffer()
1383 : code_lookup_table_(new CodeLookupTable(Thread::Current())) { 1395 : code_lookup_table_(new CodeLookupTable(Thread::Current())) {
1384 ASSERT(code_lookup_table_ != NULL); 1396 ASSERT(code_lookup_table_ != NULL);
1385 } 1397 }
1386 1398
1387 #endif // !PRODUCT 1399 #endif // !PRODUCT
1388 1400
1389 } // namespace dart 1401 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698