Ryan Houdek
ffee22d3fd
Merge pull request #1417 from lioncash/cpuid
...
CPUID: Call handler functions directly
2021-12-02 14:14:20 -08:00
Ryan Houdek
b93871ff55
Merge pull request #1416 from lioncash/strong
...
IR: Convert NodeID into a strong type
2021-12-02 13:39:24 -08:00
lioncash
352f0a1133
CPUID: Call handler functions directly
...
Given the calls are all internal, we can store the function pointers
directly and call them with the this pointer instead of indirecting
through std::bind and std::function.
2021-12-02 16:34:43 -05:00
Ryan Houdek
6c93b6f775
Merge pull request #1412 from Sonicadvance1/socket_logger
...
Adds Socket logger and tool
2021-12-02 13:32:04 -08:00
lioncash
f806577c46
RegisterAllocationPass: Use std::optional instead of magic value
...
Instead of using UINT32_MAX to communicate not found, we can return an
empty optional instance.
2021-12-02 15:17:19 -05:00
lioncash
fac4022302
IR: Convert NodeID into a strong type
...
Converts the NodeID alias into a strongly-typed structure, which will
allow catching attempts to pass NodeIDs into incorrect APIs at
compile-time.
2021-12-02 15:04:57 -05:00
lioncash
b5b3cb252a
BucketList: Pass T to Next explicitly
...
Without this, the internal BucketList type will always be allocated with
T as a uint32_t, due to the default type for T, even if T is specified
differently in other code.
2021-12-02 14:55:44 -05:00
Ryan Houdek
f2292c08e9
FEXLoader: Adds Socket logging path
...
Adds a new OutputSocket config option that when set will force all logs
to go through a socket.
This allows us to avoid polluting the guest application's output through
a socket instead of a file. Alleviating the issue of a file output
overwriting when multiple applications are ran.
2021-11-30 12:05:45 -08:00
Tony Wasserka
5542360948
Thunks: Fail if thunking is enabled for a library that isn't installed
...
Previously, the host thunk would seemingly succeed to load even when
the corresponding host library could not be loaded, leading to obscure
crashes later throughout execution.
2021-11-30 17:39:01 +01:00
Ryan Houdek
559f7128c3
Netstream: Use MSG_NOSIGNAL to avoid signals on socket
...
If the socket was closed then Linux would raise a EPIPE signal.
We don't want this, so avoid it with this flag
2021-11-29 13:14:33 -08:00
Ryan Houdek
5c1f14a155
FEXCore: Moves NetStream to Utils
...
The Frontend will want to use this
2021-11-29 13:14:32 -08:00
Ryan Houdek
9b43f94f51
Merge pull request #1407 from lioncash/irgen
...
IR.json/json_ir_generator: Minor touchups to generated IR utilities
2021-11-26 15:01:00 -08:00
Ryan Houdek
19a0651944
Merge pull request #1406 from lioncash/regnode
...
RegisterAllocationPass: Reduce usages of NodeIDs where applicable
2021-11-26 14:57:08 -08:00
Ryan Houdek
e027b83a06
Merge pull request #1399 from Sonicadvance1/gdbstub_improvements
...
GDBStub: Fixes a few hangs and crashes
2021-11-26 13:52:47 -08:00
lioncash
d0aa785e6f
json_ir_generator: Mark generated IR functions [[nodiscard]] where applicable
...
Marks generated functions as [[nodiscard]] where it would otherwise be a
logic bug to ignore their return values.
2021-11-26 14:09:17 -05:00
lioncash
b2f44d607f
json_ir_generator: Add helper functions for accessing header SSA args
...
In several parts of the IR we have cases where code accesses header SSA
arguments via:
Op->Header.Args[index]
which can be quite noisy when repeated quite a bit.
This adds member functions to the IR ops that have SSA arguments, that
allow it to simply be:
Op->Args(index)
2021-11-26 13:59:04 -05:00
lioncash
0aa53f726a
json_ir_generator: Remove extra tab for enum entries
...
Makes the generated indentation consistent with the rest of the file.
2021-11-26 13:28:25 -05:00
lioncash
b7e2dcc6c1
json_ir_generator: Make some utilities take a pointer to const
...
A few of these functions are just querying state or returning it, so we
can allow pointers to const to make the functions a little more
flexible.
2021-11-26 13:24:14 -05:00
lioncash
90e9010b17
json_ir_generator: Use _v equivalent of type traits
...
Same behavior, less writing.
2021-11-26 13:09:34 -05:00
lioncash
c62945e615
IR.json: Remove semicolons from MEM_OFFSET constants
...
Also avoids some -Wextra-semi warnings, given the generation script will
add semicolons for these lines.
2021-11-26 12:57:17 -05:00
lioncash
c78976adf1
json_ir_generator: Don't print out semicolons for empty entries
...
These can cause -Wextra-semi warnings on higher warning levels, so we
can just print out a newline and move on.
2021-11-26 12:55:34 -05:00
lioncash
25b9bcc652
IR.json: Mark TypeDefinition instances as constexpr
...
Create() is constexpr, so we can also mark the constants as such to
avoid potentially having static constructors.
2021-11-26 12:23:38 -05:00
lioncash
e2e2687a85
IR.json: Remove static from constants
...
Namespace-scope variables declared as const or constexpr have internal
linkage by default.
Also makes the output a little more consistent in terms of const/static
ordering.
2021-11-26 12:20:53 -05:00
lioncash
2d3aca2398
RegisterAllocationPass: Eliminate trivial casts
...
We can just specify LiveRange** as the return type of the lambdas to
allow the compiler to assume all returns are of this type.
2021-11-26 12:06:54 -05:00
lioncash
a1d1674033
RegisterAllocatorPass: Convert macro functions into concrete ones
...
Gets rid of some preprocessor leakage across the file and makes the
functions more statically typed.
2021-11-26 12:06:54 -05:00
lioncash
a281b6b38b
RegisterAllocationPass: Reduce usages of NodeIDs where applicable
...
Deduplicates some code that makes use of NodeIDs to make migration to a
strongly-typed NodeID a little more straightforward.
2021-11-26 12:06:50 -05:00
lioncash
9e0c652a9a
RegisterAllocationPass: Extract remat cost calc to its own function
...
Keeps it nicely separated from the live-range calculation code.
2021-11-26 10:52:55 -05:00
lioncash
fdc0ce7101
InterpreterOps: Mark GetFallbackInfo as static
...
This is only used within this translation unit.
2021-11-26 10:31:41 -05:00
lioncash
600b1ad88a
InterpreterOps: Mark F80CMP array as static constexpr
...
We don't need to construct this every time this code is executed.
2021-11-26 10:26:37 -05:00
Stefanos Kornilios Mitsis Poiitidis
28cb1240b4
jit/arm64: COND_FGT should map to gt, not hi, as it is not FGTU
2021-11-25 22:32:02 +02:00
lioncash
e4c1a285ce
Interpreter: Build op handler table at compile-time
...
We can create the table at compile-time, since we already have the
function labels available ahead of time.
This also centralizes the op table in one read-only location
2021-11-25 00:18:04 -05:00
Ryan Houdek
1f306d666c
Merge pull request #1401 from lioncash/nodeid
...
IR: Add type alias for Node IDs
2021-11-24 17:12:58 -08:00
lioncash
0c697af5fb
Passes: Make use of NodeID alias where applicable
...
Unifies the passes so that they're using the NodeID alias as well.
2021-11-24 17:15:09 -05:00
lioncash
e6ad608226
IR: Add alias for Node IDs
...
In quite a few places we have a raw primitive to represent an IR node's
ID. This can make reading some bits of the API (or the passes) a little
confusing to take in, since there's no meaningful type name for some
data structure members.
We can provide an alias that communicates this directly to the reader.
This also has the nice benefit of providing a single point of definition
for node IDs which can allow for easier changes in the future (e.g.
making Node IDs strongly-typed etc).
2021-11-24 17:15:06 -05:00
lioncash
1cf0c335a6
BucketList: Compare against T{} instead of zero directly
...
Allows BucketList to work with types that aren't a direct numeric
primitive, so long as the object has equality operators defined and are
default constructible
2021-11-24 17:09:20 -05:00
lioncash
52ed4a97cf
BucketList: Generify Append() and Erase()
...
BucketList allows choosing an arbitrary type, but the interface was
assuming uint32_t was only desirable
2021-11-24 17:01:52 -05:00
lioncash
db6cbbe7d4
BucketList: Remove dereference to static member
...
We can reference this directly, since it'll be the same for the lifetime
of the class. Other member functions already do this as well.
2021-11-24 16:57:00 -05:00
lioncash
70a66cdff2
BucketList: Resolve signed/unsigned mismatches in API
...
The size of the bucket list is expressed as an unsigned value, but all
indexing was taking place with a signed value.
2021-11-24 16:51:12 -05:00
Ryan Houdek
ef772c3ef4
Merge pull request #1400 from lioncash/service
...
CompileService: Store WorkItem instances as unique_ptr
2021-11-24 10:41:05 -08:00
Ryan Houdek
8ab6830fef
Merge pull request #1388 from Sonicadvance1/reduce_signal_stalls
...
Arm64: Reduce the chance of hanging on reentrant allocations
2021-11-24 10:36:07 -08:00
lioncash
5d62a8cedc
CompileService: Store WorkItem instances as unique_ptr
...
Lets us simplify our GC management a little bit and also makes it so we
won't potentially leak memory if an exception occurs anywhere.
2021-11-24 11:48:46 -05:00
Ryan Houdek
262c1c55d2
GDBStub: Fixes a few hangs and crashes
...
Enough to get a backtrace sometimes but otherwise still pretty finicky.
2021-11-23 17:45:23 -08:00
Ryan Houdek
6913a8b5ec
Dispatcher: Initialize Context member states in StoreThreadState
...
In the case of storing a thread state without a guest signal then this
would be filled with garbage data.
This would then cause a crash on thread restart.
Only happens using gdbstub
2021-11-23 17:42:32 -08:00
Ryan Houdek
5345f7fa37
Merge pull request #1392 from Sonicadvance1/race_condition_compileservice
...
FEXCore: Fixes CompileService race condition on thread creation
2021-11-23 13:05:34 -08:00
Ryan Houdek
966272ceaf
Merge pull request #1398 from lioncash/math
...
FEXCore: Centralize alignment utility functions in one header
2021-11-23 11:33:48 -08:00
lioncash
bb881c5c9b
FEXCore: Centralize alignment utility functions
...
Previously, these alignment functions were in four separate places. We
can centralize these in one predictable spot to remove a little
duplication.
2021-11-23 14:21:48 -05:00
Ryan Houdek
97e3a36427
Merge pull request #1386 from Sonicadvance1/ensure_compileservice_signals
...
JIT: Ensures signals in compileservice JIT space is handled
2021-11-23 10:39:20 -08:00
Lioncash
38b9e85f4f
LogManager: Remove now unused portions of the printf-style logger
...
Now with many of the facilities from the printf logger removed, we can
narrow the exposed functions and in other cases, remove them completely.
2021-11-23 12:51:59 -05:00
Lioncash
75b2f226f6
General: Migrate over to fmt where possible
...
Migrates lingering instances of the old logger over to fmt where
applicable. This allows removing some of the old defines and functions.
The only remaining usages of the printf-based variant of the logger is
in Tests/LinuxSyscalls/Syscalls.cpp for the strace handling.
2021-11-23 12:51:57 -05:00
Ryan Houdek
23e583e131
Merge pull request #1390 from Sonicadvance1/packaging_improvements
...
Various packaging improvements
2021-11-21 18:02:51 -08:00