Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Don't inline some big functions | Chris Robinson | 2023-09-16 | 1 | -40/+32 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is very dumb. Template functions are implicitly marked inline according to C++, and contrary to popular belief, "inline" *does* influence the compiler's decision to inline a function. A function the compiler may not have decided to inline normally may be inlined anyway, or issue a warning if it still decides not to inline, if explicitly or implicitly marked as such (or does inline it as requested, but then decides to not inline different functions it normally would because of a cumulative code size increase or something). Furthermore, once a function becomes inline due to being a template function, there's no way to undo it. Marking an inline function "noinline" pushes the problem the other way, causing the compiler to not inline a function it may have decided was beneficial to inline. There's no way to declare a template function to be inlined based solely on compiler heuristics, it will always be influenced by the implicit "inline" or explicit "noinline". That's what's happening here. A number of functions had been combined into a smaller number of large-ish template functions to reduce code duplication and ease maintanence, causing them to be implicitly inline as a side-effect. GCC then manages to inline these larger functions as implicitly requested, but in doing so prevents other smaller functions (which are explicitly marked inline) from being inlined due to excessive code increase and issue a warning. The "noinline" is a heavy-handed method of un-pessimizing the optimization pass, on the assumption the compiler apparently doesn't actually want to inline the template functions, but does so because they're technically marked inline. There's no good option here until it gets acknowledged that inline does mean something beyond allowing multiple definitions, and that template (and other types of) function definitions sometimes (if not most often) want to allow multiple definitions but don't want an artificial/detrimental boost in inline prioritization. /rant | |||||
* | Use duration_cast to convert nanoseconds to seconds | Chris Robinson | 2023-09-16 | 1 | -9/+14 | |
| | ||||||
* | Replace another C string with string_view | Chris Robinson | 2023-08-26 | 1 | -5/+4 | |
| | ||||||
* | Simplify building a string message | Chris Robinson | 2023-08-26 | 1 | -11/+3 | |
| | ||||||
* | Use string_view in a couple more places | Chris Robinson | 2023-08-25 | 4 | -38/+20 | |
| | ||||||
* | Allow querying AL_EFFECTSLOT_EFFECT | Chris Robinson | 2023-08-25 | 2 | -5/+13 | |
| | | | | | | | This doesn't make much sense since the effect associated with the ID may be modified and not represent the effect being played, or was even deleted and isn't a valid effect ID, but Generic Software allows querying it so it should be queryable for compatibility if nothing else. | |||||
* | Remove an unnecessary source file | Chris Robinson | 2023-08-18 | 2 | -34/+11 | |
| | ||||||
* | Use an array of bytes instead of ints for small values | Chris Robinson | 2023-08-15 | 1 | -4/+4 | |
| | ||||||
* | Don't null check the context in the direct EAX functions | Chris Robinson | 2023-08-13 | 1 | -16/+2 | |
| | ||||||
* | Add missing includes | Chris Robinson | 2023-08-11 | 2 | -0/+3 | |
| | ||||||
* | Add AL_EXT_debug functions to set/get object names | Chris Robinson | 2023-08-11 | 13 | -6/+188 | |
| | ||||||
* | More properly print string_views | Chris Robinson | 2023-08-06 | 1 | -19/+7 | |
| | ||||||
* | Fix if-comparison (#890) | Johan Mattsson | 2023-07-30 | 1 | -1/+1 | |
| | ||||||
* | Declare functions closer to where they're needed | Chris Robinson | 2023-07-26 | 7 | -131/+125 | |
| | | | | | This provides better code locality when calling implicit context functions that call their direct context variants. | |||||
* | Don't hold the property lock when setting the event callback | Chris Robinson | 2023-07-20 | 1 | -5/+3 | |
| | ||||||
* | Add missing include | Chris Robinson | 2023-07-10 | 1 | -0/+1 | |
| | ||||||
* | Use a separate function to convert AL_EVENT_TYPE_ enums | Chris Robinson | 2023-07-07 | 1 | -17/+18 | |
| | ||||||
* | Fix some typos (#872) | Dirk Stolle | 2023-07-04 | 3 | -5/+5 | |
| | ||||||
* | Always use Windows' GUID definition on Windows | Chris Robinson | 2023-06-11 | 1 | -8/+6 | |
| | ||||||
* | Use cinttypes instead of inttypes.h in C++ | Chris Robinson | 2023-06-01 | 1 | -1/+1 | |
| | ||||||
* | Rename threads.cpp/h to alsem.cpp/h | Chris Robinson | 2023-06-01 | 3 | -3/+0 | |
| | ||||||
* | Avoid duplicate NULL checks | Chris Robinson | 2023-05-25 | 2 | -50/+44 | |
| | ||||||
* | Add missing include | Chris Robinson | 2023-05-24 | 1 | -0/+1 | |
| | ||||||
* | Use a variant to hold EAX effect properties | Chris Robinson | 2023-05-24 | 14 | -394/+399 | |
| | ||||||
* | Be a bit more safe with type mangling | Chris Robinson | 2023-05-24 | 1 | -2/+2 | |
| | ||||||
* | Increment an offset only when it's used | Chris Robinson | 2023-05-24 | 1 | -1/+1 | |
| | ||||||
* | Add a compat option to change the error value with no context | Chris Robinson | 2023-05-24 | 1 | -1/+21 | |
| | ||||||
* | Properly forward from alGetFilterivDirect | Chris Robinson | 2023-05-23 | 1 | -1/+1 | |
| | ||||||
* | Use a variant to call the proper filter handler function | Chris Robinson | 2023-05-23 | 2 | -258/+259 | |
| | ||||||
* | Use a string_view for handling debug messages | Chris Robinson | 2023-05-23 | 4 | -41/+41 | |
| | ||||||
* | Use the macros to declare the indirect context thunks | Chris Robinson | 2023-05-23 | 2 | -42/+15 | |
| | ||||||
* | Make the API functions noexcept | Chris Robinson | 2023-05-22 | 7 | -79/+47 | |
| | | | | | | | | | | | Only relevant for C++, but these functions can't throw as it's a C-based API. Letting the compiler know that helps improve code generation. Extension callbacks must also not let exceptions leave the callback, or else Bad Things can happen. The macro AL_DISABLE_NOEXCEPT may be defined before including the headers to not mark functions as noexcept, but this should only be done if the caller can't otherwise be fixed. | |||||
* | Remove an unnecessary check | Chris Robinson | 2023-05-15 | 1 | -3/+0 | |
| | ||||||
* | Fix linkage definitions | Chris Robinson | 2023-05-14 | 9 | -129/+125 | |
| | ||||||
* | Don't check for a null context in direct functions | Chris Robinson | 2023-05-14 | 12 | -434/+125 | |
| | ||||||
* | Implement direct functions for EFX | Chris Robinson | 2023-05-14 | 3 | -195/+194 | |
| | ||||||
* | Implement direct functions for the debug API | Chris Robinson | 2023-05-14 | 1 | -19/+40 | |
| | ||||||
* | Implement direct functions for the listener and events | Chris Robinson | 2023-05-14 | 3 | -85/+92 | |
| | ||||||
* | Implement direct functions for sources | Chris Robinson | 2023-05-14 | 1 | -277/+272 | |
| | ||||||
* | Implement direct functions for buffers | Chris Robinson | 2023-05-14 | 2 | -181/+220 | |
| | ||||||
* | Implement direct functions for extension queries and EAX | Chris Robinson | 2023-05-14 | 2 | -11/+23 | |
| | ||||||
* | Implement direct functions for context state | Chris Robinson | 2023-05-14 | 3 | -164/+157 | |
| | ||||||
* | Avoid using al::vector unnecessarily | Chris Robinson | 2023-05-12 | 6 | -18/+20 | |
| | ||||||
* | Special-case setting a single buffer's mode | Chris Robinson | 2023-05-11 | 1 | -9/+46 | |
| | | | | To avoid extraneous allocations and extra work for a common case. | |||||
* | Avoid counting buffers multiple times in EAXSetBufferMode | Chris Robinson | 2023-05-10 | 1 | -29/+28 | |
| | ||||||
* | Mark some functions noexcept when possible | Chris Robinson | 2023-05-10 | 2 | -15/+4 | |
| | ||||||
* | Use a variant for AsyncEvent | Chris Robinson | 2023-05-08 | 1 | -40/+54 | |
| | ||||||
* | Send a debug message when disconnecting | Chris Robinson | 2023-05-08 | 1 | -5/+18 | |
| | ||||||
* | Use an inline function instead of a macro | Chris Robinson | 2023-05-08 | 1 | -13/+15 | |
| | ||||||
* | Store extension strings individually | Chris Robinson | 2023-05-08 | 2 | -11/+3 | |
| | | | | And dynamically build the full AL_EXTENSIONS string |