lizzie
83a28dc251
[common, core] remove uneeded memory indirection overhead at startup ( #3306 )
...
for core stuff:
just remove unique ptrs that dont need any pointer stability at all (afterall its an allocation within an allocation so yeah)
for fibers:
Main reasoning behind this is because virtualBuffer<> is stupidly fucking expensive and it also clutters my fstat view
ALSO mmap is a syscall, syscalls are bad for performance or whatever
ALSO std::vector<> is better suited for handling this kind of "fixed size thing where its like big but not THAT big" (512 KiB isn't going to kill your memory usage for each fiber...)
for core.cpp stuff
- inlines stuff into std::optional<> as opposed to std::unique_ptr<> (because yknow, we are making the Impl from an unique_ptr, allocating within an allocation is unnecessary)
- reorganizes the structures a bit so padding doesnt screw us up (it's not perfect but eh saves a measly 44 bytes)
- removes unused/dead code
- uses std::vector<> instead of std::deque<>
no perf impact expected, maybe some initialisation boost but very minimal impact nonethless
lto gets rid of most calls anyways - the heavy issue is with shared_ptr and the cache coherency from the atomics... but i clumped them together because well, they kinda do not suffer from cache coherency - hopefully not a mistake
this balloons the size of Impl to about 1.67 MB - which is fine because we throw it in the stack anyways
REST OF INTERFACES: most of them ballooned in size as well, but overhead is ok since its an allocation within an alloc, no stack is used (when it comes to storing these i mean)
Signed-off-by: lizzie lizzie@eden-emu.dev
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3306
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2026-01-16 23:39:16 +01:00
lizzie
c21f92340b
[core/hle/kernel] coalesce TLS from KernelCore to reduce query times ( #3283 )
...
- each time you reference TLS data the compiler generates calls to register _atexit() for them
- it also uses `mov %fs:%rax` or whatever, segmented moves are EXPENSIVE since they break pipeline
- occupies less TLS slots for windows :)
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3283
Reviewed-by: DraVee <dravee@eden-emu.dev >
Reviewed-by: Maufeat <sahyno1996@gmail.com >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2026-01-10 12:36:19 +01:00
lizzie
d1ac5b2e50
[qt_common, core, audio] remove duplicate string literal definitions, inline SystemManager::threadfunc, increase latency of audio shutdown ( #3030 )
...
Very small code cleanup, also remove `[[unlikely]]` because it doesn't matter + increase latency of audio render when shutting down
Signed-off-by: lizzie lizzie@eden-emu.dev
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3030
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com >
Reviewed-by: crueter <crueter@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-11-17 22:37:45 +01:00
lizzie
2dc6d773ee
[common, hle/kernel] Remove LTO_NOINLINE ( #2908 )
...
- Dont just tell the compiler what to inline/what not to inline; the compiler will be pissed off and make bad codegen
Signed-off-by: lizzie <lizzie@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2908
Reviewed-by: Caio Oliveira <caiooliveirafarias0@gmail.com >
Reviewed-by: Maufeat <sahyno1996@gmail.com >
Reviewed-by: MaranBr <maranbr@eden-emu.dev >
Reviewed-by: crueter <crueter@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-10-31 15:13:31 +01:00
lizzie
9d2681ecc9
[cmake] enable clang-cl and WoA builds ( #348 )
...
Compilation and CMake fixes for both Windows on ARM and clang-cl, meaning Windows can now be built on both MSVC and clang on both amd64 and aarch64.
Compiling on clang is *dramatically* faster so this should be useful for CI.
Co-authored-by: crueter <crueter@eden-emu.dev >
Co-authored-by: crueter <crueter@crueter.xyz >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/348
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com >
Reviewed-by: crueter <crueter@eden-emu.dev >
Co-authored-by: lizzie <lizzie@eden-emu.dev >
Co-committed-by: lizzie <lizzie@eden-emu.dev >
2025-09-09 20:47:49 +02:00
crueter
f1e74f6855
[meta] remove MicroProfile ( #185 )
...
Signed-off-by: crueter <crueter@eden-emu.dev >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/185
Reviewed-by: Lizzie <lizzie@eden-emu.dev >
2025-08-06 07:48:11 +02:00
Gamer64
1f34d836b4
Add cmake option to enable microprofile ( #179 )
...
Backported from https://github.com/azahar-emu/azahar/commit/dd9c743041308112c8dc349c5c237c04b2c4c75f .
Co-authored-by: PabloMK7 <hackyglitch2@gmail.com >
Co-authored-by: Shinmegumi <shinmegumi@eden-emu.dev >
Co-authored-by: Gamer64 <76565986+Gamer64ytb@users.noreply.github.com >
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/179
Co-authored-by: Gamer64 <gamer64@eden-emu.dev >
Co-committed-by: Gamer64 <gamer64@eden-emu.dev >
2025-08-02 17:22:38 +02:00
FearlessTobi
4d55e58ee4
scope_exit: Make constexpr
...
Allows the use of the macro in constexpr-contexts.
Also avoids some potential problems when nesting braces inside it.
2024-02-19 16:00:46 +01:00
Liam
e9dc3bd26b
kernel: add and enable system suspend type
2024-02-14 17:03:50 -05:00
Liam
49f10b2e54
am: migrate global state to per-applet state structure
2024-01-29 20:17:33 -05:00
Liam
bf50a0e0c2
kernel: fix debugger and process list lifetime
2024-01-12 18:31:33 -05:00
Narr the Reg
7a478d7b9a
Merge pull request #12454 from liamwhite/ct-stuff
...
core_timing: minor refactors
2024-01-01 13:56:31 -06:00
Liam
b9545c5a0e
core_timing: remove user data value
2023-12-23 15:36:44 -05:00
Liam
1fdcd70bad
general: properly support multiple memory instances
2023-12-22 21:52:49 -05:00
Liam
e2b5f2392e
kernel: instantiate memory separately for each guest process
2023-12-22 21:52:49 -05:00
Narr the Reg
6de39c8398
service: hid: Allow to create multiple instances of shared memory
2023-12-13 23:24:28 -06:00
Liam
f486fe3971
kernel: implement light IPC
2023-12-07 09:13:43 -05:00
Liam
3d5c6a73cb
core: refactor emulated cpu core activation
2023-12-04 10:37:16 -05:00
Liam
ae885084e2
kernel: fix extraneous ref
2023-10-21 22:16:41 -04:00
Liam
62e106dbe8
kernel: update KProcess
2023-10-21 20:03:41 -04:00
Liam
5be32a6147
kernel: make check fully constexpr for broken msvc constant folding
2023-10-20 02:34:15 -04:00
Liam
010fc2f562
kernel: update KMemoryRegionType values
2023-10-20 02:34:15 -04:00
Liam
66472af2d0
kernel: mark TLS accessors as noinline for non-MSVC LTO
2023-10-12 09:16:22 -04:00
Liam
50ce2f0b7b
kernel: remove relative task registration
2023-08-14 18:12:06 -04:00
lat9nq
30e4e8c2f4
general: Silence -Wshadow{,-uncaptured-local} warnings
...
These occur in the latest commits in LLVM Clang.
2023-07-18 19:31:35 -04:00
Liam
7afcc29ac8
kernel: match calls to Register and Unregister
2023-04-29 21:52:26 -04:00
Liam
6eaef51cf2
memory: rename global memory references to application memory
2023-03-23 20:28:47 -04:00
Liam
156516e399
kernel: use KTypedAddress for addresses
2023-03-22 09:35:16 -04:00
Liam
6828f66b42
kernel: fix clang build
2023-03-12 22:10:27 -04:00
Liam
46d09ae364
kernel: convert KThread to new style
2023-03-12 22:09:09 -04:00
Liam
842f5a4ced
kernel: remove KLinkedList
2023-03-12 22:06:53 -04:00
Liam
3c93638acf
kernel: convert KPort, KSession
2023-03-12 22:06:53 -04:00
Liam
f4e795193b
kernel: refactor priority inheritance to represent locks as C++ objects
2023-03-01 10:42:45 -05:00
Liam
1c3a93e7c4
service: refactor server architecture
...
Converts services to have their own processes
2023-02-21 12:19:25 -05:00
liamwhite
0af0887f01
Merge pull request #9771 from ameerj/host-thread-id
...
kernel: Refactor thread_local variable usage
2023-02-19 13:12:43 -05:00
Liam
edda4ad9ae
kernel: add KObjectName
2023-02-17 09:16:05 -05:00
Liam
c68577384a
general: rename CurrentProcess to ApplicationProcess
2023-02-13 19:03:12 -05:00
bunnei
86a1aa0fcc
core: kernel: k_process: Use application system resource.
2023-02-10 21:03:39 -08:00
ameerj
8467bf5224
kernel: Refactor thread_local variable usage
...
On MSVC at least, there seems to be a non-trivial overhead to calling GetHostThreadId().
This slightly reworks the host_thread_id variable to reduce some of the complexity around its usage, along with some small refactors around current_thread and dummy thread
2023-02-10 20:43:06 -05:00
Liam
31945a6e8b
kernel: fix incorrect locking order in suspension
2023-01-23 17:14:41 -05:00
Liam
71ec5c9519
kernel: workaround static shared memory initialization
2022-12-23 13:40:30 -05:00
Liam
8df44232e8
kernel: remove TimeManager
2022-12-18 20:21:24 -05:00
Liam
08d81c9726
general: improve handling of system startup failure
2022-12-06 16:13:42 -05:00
Lioncash
8b8320be4a
kernel/kernel: Ensure shutdown threads are always initialized
2022-12-05 15:19:36 -05:00
Liam
affd5c32f9
kernel/svc_types: refresh
2022-11-09 19:05:08 -05:00
bunnei
829acd963c
Merge pull request #9182 from liamwhite/services-are-processes
...
kernel: assign KProcess to service threads
2022-11-09 15:52:23 -08:00
Liam
0fc08006e5
service_thread: fix deletion
2022-11-06 19:50:51 -05:00
liamwhite
c14f27ee5f
Merge pull request #9173 from bunnei/kern-update-15
...
Kernel: Various updates for FW 15.0.x
2022-11-05 13:25:29 -04:00
Liam
c835c254a3
service_thread: register service threads to the logical owner process
2022-11-04 09:18:57 -04:00
Liam
ae2bfd082b
kernel: avoid racy behavior in global suspension
2022-11-04 09:18:57 -04:00