Commit Graph

30740 Commits

Author SHA1 Message Date
Sintendo
9fe3150358 x64EmitterTest: Test 64-bit MOV with 32-bit immediate 2019-05-29 01:04:16 +02:00
Sintendo
c84f34bd50 x64Emitter: Short MOVs for 32bit immediates
Prior to this commit, the emitter would emit a 7-byte instruction when
loading a 32-bit immediate to a 64-bit register.

0:  48 c7 c0 ff ff ff 7f    mov    rax,0x7fffffff

With this change, it will check if it can instead emit a load to a
32-bit register, which takes only 5 or 6 bytes.

0:  b8 ff ff ff 7f          mov    eax,0x7fffffff
2019-05-29 01:04:09 +02:00
JosJuice
992c8bfc4e
Merge pull request #8129 from lioncash/gamefile
UICommon/GameFile: Minor cleanup
2019-05-28 17:58:41 +02:00
Lioncash
b4470ad4c2 UICommon/GameFile: Make COVER_URL a plain C string
Same behavior but doesn't take up 8 bytes in the executable to store a
pointer. While we're at it, move it into an anonymous namespace within
the UICommon namespace.
2019-05-28 07:27:41 -04:00
Lioncash
8229ada922 UICommon/GameFile: Remove unused includes
Nothing within the source file makes use of anything in those includes,
so they can be removed.
2019-05-28 07:27:41 -04:00
Lioncash
80786cd295 UICommon/GameFile: Remove unnecessary value() calls in DownloadDefaultCover()
We already check ahead of time if the optional contains a value within
it before accessing it, so we don't need to use the throwing value()
accessor. We can just directly use operator->
2019-05-28 07:27:41 -04:00
Lioncash
ab0892e5a5 UICommon/GameFile: Deduplicate string paths where applicable
Rather than construct strings twice, we can just construct it once and
reuse it. While we're at it, we can move variables closer to where
they're actually used within DownloadDefaultCover()
2019-05-28 07:27:35 -04:00
Lioncash
27ecb93b32 UICommon/GameFile: Remove unnecessary initializers
All of the standardized types have constructors that will automatically
initialize them, so the explicit initializers are redundant.
2019-05-28 07:00:15 -04:00
Lioncash
56faf750be UICommon/GameFile: std::move std::string argument in constructor
Allows for calling code to move the argument into the constructor,
avoiding a copy.
2019-05-28 06:57:48 -04:00
Lioncash
8e65869484 UICommon/GameFile: Default no-arg constructor and destructor within the cpp file
A GameFile instance contains quite a lot of non-trivial types, so
default construction and destruction in the same translation unit.
2019-05-28 05:53:40 -04:00
Lioncash
49ca31467d UICommon/GameFile: Use in-class initializers where applicable
Allows deduplicating code within the constructor initializer list.
2019-05-28 05:51:51 -04:00
Léo Lam
800d875faa
Merge pull request #8127 from lioncash/resource
UICommon/ResourcePack: Minor cleanup
2019-05-27 23:05:10 +02:00
Lioncash
f07cf9ebab UICommon/ResourcePack: Allow ReadCurrentFileUnlimited() to read into any contiguous container
This allows the same code to be used to read into a std::string, which
allows for eliminating the vector->string transfer when reading the
manifest file.

A ContiguousContainer is a concept that includes std::array,
std::string, and std::vector.
2019-05-27 13:29:40 -04:00
Lioncash
5c4d3f55da UICommon/Manager: Remove unused std::string variable in Remove() 2019-05-27 13:09:21 -04:00
Léo Lam
42de5b9a10
Merge pull request #8126 from lioncash/todo
Core/GCMemcard: Remove obsolete TODO
2019-05-27 19:04:06 +02:00
Léo Lam
525c65dd19
Merge pull request #8125 from lioncash/verify
DiscIO/VolumeVerifier: Make use of unused variable (+ minor other changes)
2019-05-27 19:03:13 +02:00
Lioncash
41cda6fe6d UICommon/ResourcePack: Use ScopeGuards to manage closing files
Makes it way harder to introduce resource leaks, and plugs the existing
resource leaks in the constructor and Install() where the file wouldn't
be closed in some error cases.
2019-05-27 13:02:04 -04:00
Léo Lam
e3be168328
Merge pull request #8124 from lioncash/http
Common/HttpRequest: Minor changes and simplifications
2019-05-27 18:59:23 +02:00
Lioncash
157a305507 UICommon/ResourcePack: Deduplicate string construction
A few cases duplicate the string patch creation, which is kind of
wasteful. We can just construct the string once.
2019-05-27 12:45:23 -04:00
Lioncash
a22cc615a9 UICommon/ResourcePack: Remove unnecessary resizes
We can simply construct the containers with the desired size in these
cases.
2019-05-27 12:37:46 -04:00
Lioncash
57701cd988 UICommon/ResourcePack: Make TEXTURE_PATH a regular array
Same behavior, only it doesn't unnecessarily store a pointer in the
executable. While we're at it, make it constexpr and move it into the
namespace.
2019-05-27 12:33:50 -04:00
Lioncash
b2b5b01eda Core/GCMemcard: Remove obsolete TODO
Now that we assume C++17, the in-file definition of the std::array can
be removed. This is all that's necessary, as constexpr used on a static
member variable implies inline (and so, automatically has C++17's static
inline behavior).
2019-05-27 11:48:38 -04:00
Lioncash
d220e33862 DiscIO/VolumeVerifier: Make no-argument overload of GetBiggestUsedOffset() const
The overload taking a partition is already a const member function, so
this one can be turned into one as well.
2019-05-27 10:40:41 -04:00
Lioncash
bf6948c1d4 DiscIO/VolumeVerifier: Use structured bindings where applicable
Allows providing better names than "first" or "second".
2019-05-27 10:40:38 -04:00
Lioncash
fa57396e97 DiscIO/VolumeVerifier: In-class initialize members where applicable
Removes redundant initializers from the constructor and provides
initializers for all members that don't already have one for consistency
(and deterministic initial state).
2019-05-27 10:40:17 -04:00
Lioncash
52eb2d0d82 DiscIO/VolumeVerifier: Default destructor within the cpp file
Given the volume verifier has quite a few non-trivial object within it,
it's best to default the destructor within the cpp file to prevent
inlining complex destruction logic elsewhere, while also making it nicer
if a forward-declared type is ever used in a member variable.
2019-05-27 10:19:51 -04:00
Lioncash
0ccaa2b5d6 DiscIO/VolumeVerifier: Take std::string by value in AddProblem()
This allows both std::moving into the function and moving the parameter
from within the function, potentially avoiding an unnecessary copy.
2019-05-27 10:17:11 -04:00
Lioncash
a1f77fd14b DiscIO/VolumeVerifier: Make use of unused variable in CheckMisc()
This variable wasn't being utilized when comments indicate that it
probably should be.
2019-05-27 10:09:55 -04:00
Lioncash
ab2adfb0a7 Common/HttpRequest: Simplify cURL initialization
std::call_once is guaranteed to execute the given callable object
exactly once. This guarantee holds even if the function is called
concurrently from several threads.

Given that, we can replace the mutex and boolean flag with
std::call_once and a std::once_flag to perform the same behavior.
2019-05-27 09:46:57 -04:00
Lioncash
b15f595130 Common/HttpRequest: Avoid unnecessary copies in loop in Fetch()
Previously, every entry pair within the map would be copied. The reason
for this is subtle.

A std::map's internal entry type is defined as:

std::pair<const Key, Value>

but the loop was declaring it as:

std::pair<Key, Value>

These two types aren't synonymous with one another and so the compiler
is required to always perform a copy.

Using structured bindings avoids this (as would plain auto or correcting
the explicit type), while also allowing the use of more appropriate
names compared to first and second.
2019-05-27 09:36:31 -04:00
Lioncash
8dc8cf8019 Common/HttpRequest: std::move callback in constructor
std::function is allowed to heap allocate in order to hold any necessary
bound data in order to execute properly (e.g. lambdas with captures), so
this avoids unnecessary reallocating.
2019-05-27 09:26:28 -04:00
Connor McLaughlin
204af41e73
Merge pull request #8122 from Pokechu22/dx11-dxgi_factory
DX11: Fix access violation on closing dolphin
2019-05-27 18:48:52 +10:00
Pokechu22
69d9d9f87a Also free when initialization fails, and move to end 2019-05-26 19:59:29 -07:00
Pokechu22
19fb3bb4fe DX11: Fix access violation on closing dolphin 2019-05-26 15:01:05 -07:00
Léo Lam
f92c17e76f
Merge pull request #7799 from Tilka/mapping
DolphinQt/Mapping: red = error, don't flash
2019-05-26 18:10:06 +02:00
Léo Lam
f819ea687a
Merge pull request #7448 from RolandMunsil/improve-cheat-search
Improve performance of cheat searching & add input validation
2019-05-26 18:07:49 +02:00
Tillmann Karras
2195ef30f3 DolphinQt/Mapping: red = error, don't flash 2019-05-26 17:59:30 +02:00
Roland Munsil
4ce7079098 CheatsManager: Improve performance of searching & add input validation
The previous implementation of cheat search would reconvert the input
string for every single memory value. Now we do it once and construct
a comparison lambda which we pass to the search code.

In addition, I also added input validation. So, for example, if you've
selected Decimal input and you try to compare against "FF",
it won't search and will instead let the user know they've entered an
invalid value. Similar logic for if you enter "1.2" in a search for
bytes. Before, it would just use 0 if it failed to convert the value.
2019-05-26 17:32:48 +02:00
Léo Lam
526698d2fc
Merge pull request #8104 from AdmiralCurtiss/memcard-folder-small
GCMemcardDirectory: Improve logic for initial load of GCI files.
2019-05-26 11:07:43 +02:00
Admiral H. Curtiss
15abb1c92d GCMemcardDirectory: Improve logic for which files are loaded into the virtual memory card.
- Files for the current game are now guaranteed to be loaded, space and validity permitting.
- Avoid showing PanicAlerts for every problem encountered, most of them aren't really important enough and will probably just annoy the user.
- And for the only error the user will definitely care about, when the save of the game they're trying to play fails to load, show an imgui message instead.
2019-05-25 21:51:36 +02:00
Admiral H. Curtiss
5af05f6714 GCMemcard/GCIFile: Implement LoadHeader(). 2019-05-25 21:49:09 +02:00
Admiral H. Curtiss
884af05589 GCMemcardDirectory: Move GCIFile class to its own file. 2019-05-25 21:49:09 +02:00
Léo Lam
9136abf07e
Merge pull request #8106 from 8times9/memcard-menubar
Qt/MenuBar: Reorder Tools menu
2019-05-25 21:19:38 +02:00
8times9
00855552e9 Qt/MenuBar: Reorder Tools menu 2019-05-25 20:22:52 +02:00
Léo Lam
edf988b465
Merge pull request #8019 from AdmiralCurtiss/gcmemcard-header-cleanup
GCMemcard: A little cleanup.
2019-05-25 19:20:43 +02:00
Admiral H. Curtiss
e390fd0f4e GCMemcard: Remove unused ability of ImportGci() to write a GCI file to disk. 2019-05-25 17:58:05 +02:00
Admiral H. Curtiss
018572018e GCMemcard: Dismantle the global return value enum into a few function specific enum classes. 2019-05-25 17:58:05 +02:00
Admiral H. Curtiss
d09303683c GCMemcard: Convert a few enums into constexprs. 2019-05-25 17:58:05 +02:00
Admiral H. Curtiss
cbc5acb8cd GCMemcard: Get rid of stray signed length in ImportGciInternal(). 2019-05-25 17:58:05 +02:00
Admiral H. Curtiss
2d38364410 GCMemcard: Remove memsets that don't do anything in GCMemcard::Format(). 2019-05-25 17:58:05 +02:00