Skip to content

Commit

Permalink
[MIRROR] Add defines for byond-tracy support [MDB IGNORE] (Skyrat-SS1…
Browse files Browse the repository at this point in the history
…3#17301)

* Add defines for byond-tracy support (#70931)

Adds `USE_BYOND_TRACY`, which automatically loads a given
prof.dll/libprof.so using https://github.com/mafemergency/byond-tracy/.

Not intended for use in production, and we do not ship a copy of
byond-tracy. It is extremely easy to compile yourself, but if you're
someone interesting enough to play around with this then let me know and
I can just give you a build.

I'm going to be using this for init profiling.

* Add defines for byond-tracy support

Co-authored-by: Mothblocks <35135081+Mothblocks@users.noreply.github.com>
  • Loading branch information
SkyratBot and Mothblocks authored Nov 1, 2022
1 parent 7df0919 commit 6bd1352
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 1 deletion.
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -219,6 +219,10 @@ aux*.dll
libaux*.so
aux*.pdb

# byond-tracy, we intentionally do not ship this and do not want to maintain it
prof.dll
libprof.so

# JavaScript tools
**/node_modules

Expand Down
8 changes: 7 additions & 1 deletion code/_compile_options.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,15 @@
#define GC_FAILURE_HARD_LOOKUP
#endif // REFERENCE_DOING_IT_LIVE

// If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between
// #define UNIT_TESTS

// If this is uncommented, will attempt to load and initialize prof.dll/libprof.so.
// We do not ship byond-tracy. Build it yourself here: https://github.com/mafemergency/byond-tracy/
// #define USE_BYOND_TRACY

// If defined, we will NOT defer asset generation till later in the game, and will instead do it all at once, during initiialize
//#define DO_NOT_DEFER_ASSETS
//#define UNIT_TESTS //If this is uncommented, we do a single run though of the game setup and tear down process with unit tests in between

/// If this is uncommented, Autowiki will generate edits and shut down the server.
/// Prefer the autowiki build target instead.
Expand Down
20 changes: 20 additions & 0 deletions code/game/world.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ GLOBAL_VAR(restart_counter)
* All atoms in both compiled and uncompiled maps are initialized()
*/
/world/New()
#ifdef USE_BYOND_TRACY
#warn USE_BYOND_TRACY is enabled
init_byond_tracy()
#endif

log_world("World loaded at [time_stamp()]!")

Expand Down Expand Up @@ -395,6 +399,22 @@ GLOBAL_VAR(restart_counter)
/world/proc/on_tickrate_change()
SStimer?.reset_buckets()

/world/proc/init_byond_tracy()
var/library

switch (system_type)
if (MS_WINDOWS)
library = "prof.dll"
if (UNIX)
library = "libprof.so"
else
CRASH("Unsupported platform: [system_type]")

var/init_result = call(library, "init")()
if (init_result != "0")
CRASH("Error initializing byond-tracy: [init_result]")


/world/Profile(command, type, format)
if((command & PROFILE_STOP) || !global.config?.loaded || !CONFIG_GET(flag/forbid_all_profiling))
. = ..()
Expand Down

0 comments on commit 6bd1352

Please sign in to comment.