Commit Graph

141 Commits

Author SHA1 Message Date
Bartosz Taudul
3ea5600900 Fix UB, lose type safety. 2018-04-03 17:51:53 +02:00
Bartosz Taudul
794f199bdc Serial queue dequeuing. 2018-04-01 20:04:35 +02:00
Bartosz Taudul
faeecdd773 Add serial queue to profiler. 2018-04-01 19:53:05 +02:00
Bartosz Taudul
3b03e849f0 Harden client code against unaligned memory access.
There shouldn't be any changes in generated code on modern
architectures, as the memcpy will be reduced to a store/load operation
identical to the one generated with plain struct member access.

GetTime( cpu ) needs special handling, as the MSVC intrinsic for rdtscp
can't store cpu identifier in a register. Using intermediate variable
would cause store to stack, read from stack, store to the destination
address. Since rdtscp is only available on x86, which handles unaligned
stores without any problems, we can have one place with direct struct
member access.
2018-03-31 14:15:04 +02:00
Bartosz Taudul
7300c2e46e Fix TRACY_NO_EXIT behavior.
Terminate event could be the first event that was sent. In such case
server immediately closed the connection, as there was no outstanding
data to receive. Fix by sending all data in the queue before sending
terminate event.
2018-01-11 13:45:13 +01:00
Bartosz Taudul
f67465e784 Reduce timer calibration delay to 200 ms. 2017-11-25 13:34:26 +01:00
Bartosz Taudul
48da593ab2 Increase calibration time to half a second. 2017-11-24 01:43:35 +01:00
Bartosz Taudul
c431747f06 Favor transfer of zones without predicted payload. 2017-11-22 02:28:12 +01:00
Bartosz Taudul
630db7112a Leaner iteration in Profiler::Dequeue(). 2017-11-22 02:07:23 +01:00
Bartosz Taudul
2f669aea41 Workaround gcc issues. 2017-11-15 10:56:27 +01:00
Bartosz Taudul
c43eb29ce0 Don't send source location pointer in query reply.
Since reply order is the same as the query order, the server already
knows what source location it receives. This observation allows placing
zone name into the source location struct.
2017-11-14 23:06:45 +01:00
Bartosz Taudul
5c872b2137 Simplify GPU context handling. 2017-11-14 00:48:26 +01:00
Bartosz Taudul
3c00ce0958 GPU context registration. 2017-11-11 19:44:09 +01:00
Bartosz Taudul
81735aea2f Support for setting zone names in lua. 2017-11-11 17:56:41 +01:00
Bartosz Taudul
59ec40c045 Preemptive transfer of source location payload. 2017-11-11 15:59:30 +01:00
Bartosz Taudul
7f3b8f4647 Preemptive message text delivery. 2017-11-11 15:41:21 +01:00
Bartosz Taudul
76e11174dc Preemptive sending of custom strings. 2017-11-11 15:22:55 +01:00
Bartosz Taudul
c2797a4cc7 Data packets can't cross data buffer boundary. 2017-11-11 15:08:03 +01:00
Bartosz Taudul
49bce256bc Fix type mismatch. 2017-11-11 14:35:46 +01:00
Bartosz Taudul
0d15d45c3a Don't send source location through the queue. 2017-11-11 14:24:22 +01:00
Bartosz Taudul
065964b216 Send data before sleeping during shutdown. 2017-11-11 14:23:55 +01:00
Bartosz Taudul
fc4e31bb8f Wait for send buffer to be full before sending data. 2017-11-11 14:16:37 +01:00
Bartosz Taudul
fb46b3cf24 Restore process name retrieval on cygwin. 2017-11-10 19:46:31 +01:00
Bartosz Taudul
f6af913fd3 Remove ability to disable LZ4 compression. 2017-11-10 17:34:11 +01:00
Bartosz Taudul
bc77aa8d26 Source location payload transfer. No storage yet. 2017-11-05 16:46:00 +01:00
Bartosz Taudul
3659afac2a Move another big buffer out of stack. 2017-11-02 17:37:10 +01:00
Bartosz Taudul
cea7cdd716 Don't create big buffers on stack. 2017-11-02 12:58:38 +01:00
Bartosz Taudul
cf3d8eb810 Manual collection of thread names on android. 2017-10-30 20:45:00 +01:00
Bartosz Taudul
8f280b147b Getting program name on android. 2017-10-30 14:59:05 +01:00
Bartosz Taudul
a220043114 Add no-cpu GetTime() variant.
In this version the address of cpu output variable is const, so there's
no stack address calculation involved.
2017-10-29 16:12:16 +01:00
Bartosz Taudul
03289175ab Lock counter also must be initialized early. 2017-10-24 22:02:49 +02:00
Bartosz Taudul
ad338a7cfd Fix message literals. 2017-10-21 12:39:26 +02:00
Bartosz Taudul
1e645665fe Initialize rpmalloc in profiler worker thread.
Thread local variables on gcc are apparently not initialized on thread
startup, but on first access to thread local variables block. Previously
it was working, because s_token was accessed before any rpmalloc
allocation could be performed. Now the first rpmalloc allocation is the
Socket class, and rpmalloc is not initialized there, as there was no
thread local access yet.
2017-10-18 23:30:54 +02:00
Bartosz Taudul
9c4316879c Add TRACY_NO_EXIT macro. 2017-10-18 20:01:12 +02:00
Bartosz Taudul
51013dc0e6 Manual allocation of socket memory. 2017-10-18 19:50:28 +02:00
Bartosz Taudul
fc94378e0c Move TracyAlloc.hpp to common. Use rpmalloc only if TRACY_ENABLE. 2017-10-18 19:50:28 +02:00
Bartosz Taudul
c5ea9c744c Do not disable lz4 in debug builds. 2017-10-18 19:50:28 +02:00
Bartosz Taudul
6a2cbe2842 Rename DISABLE_LZ4 to TRACY_DISABLE_LZ4. 2017-10-18 19:50:22 +02:00
Bartosz Taudul
7c47edc64f Terminate connection handshake. 2017-10-18 18:48:51 +02:00
Bartosz Taudul
d942b7edf1 Don't exit until all data is sent. 2017-10-17 22:02:47 +02:00
Bartosz Taudul
652dccd163 Also no need to construct more than one welcome message. 2017-10-17 21:55:40 +02:00
Bartosz Taudul
5421164f33 No need to get process name more than once. 2017-10-17 21:53:09 +02:00
Bartosz Taudul
1e3476cf36 Transfer profiler initialization time. 2017-10-17 01:10:38 +02:00
Bartosz Taudul
51f5ae4796 More precise profiler init end time measurement. 2017-10-17 01:07:54 +02:00
Bartosz Taudul
0ed789825a Measure time of initialization start. 2017-10-17 01:07:34 +02:00
Bartosz Taudul
866081bf29 Initialize tracy before anything else. 2017-10-17 00:36:15 +02:00
Bartosz Taudul
9d01b508ed One more type cast. 2017-10-17 00:25:32 +02:00
Bartosz Taudul
8a6e4d2971 Change TRACY_DISABLE to TRACY_ENABLE.
By default tracy is now disabled.
2017-10-16 21:34:39 +02:00
Bartosz Taudul
e04bd05606 Always use ShouldExit() to determine if worker should exit. 2017-10-16 21:21:42 +02:00
Bartosz Taudul
9f28205548 Use custom threading wrapper instead of std::thread.
std::thread may perform memory allocation when a thread is created (it
does so on MSVC). Tracy heap is managed by its own allocator and this
changes prevents accessing application heap.
2017-10-16 21:17:58 +02:00