aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFicture Seven <FICTURE7@gmail.com>2020-07-13 14:20:07 +0400
committerGitHub <noreply@github.com>2020-07-13 20:20:07 +1000
commit30d4f752f47217bcdc4dd05428010acf270189d0 (patch)
tree0befe872b3d9ccbd5aa4859221b3cc1e81d1cee6
parentb5127131c558ac6613e4e61df3da96031a8fa155 (diff)
Fix Node Uses/Assignments (#1376)
* Fix Node Uses/Assignments * Bump PPTC Version Number Co-authored-by: jduncanator <1518948+jduncanator@users.noreply.github.com>
-rw-r--r--ARMeilleure/IntermediateRepresentation/Node.cs53
-rw-r--r--ARMeilleure/Translation/PTC/Ptc.cs2
2 files changed, 26 insertions, 29 deletions
diff --git a/ARMeilleure/IntermediateRepresentation/Node.cs b/ARMeilleure/IntermediateRepresentation/Node.cs
index 9ce78c09..3f41d814 100644
--- a/ARMeilleure/IntermediateRepresentation/Node.cs
+++ b/ARMeilleure/IntermediateRepresentation/Node.cs
@@ -10,25 +10,12 @@ namespace ARMeilleure.IntermediateRepresentation
public Operand Destination
{
- get
- {
- return _destinations.Count != 0 ? GetDestination(0) : null;
- }
- set
- {
- if (value != null)
- {
- SetDestination(value);
- }
- else
- {
- _destinations.Clear();
- }
- }
+ get => _destinations.Count != 0 ? GetDestination(0) : null;
+ set => SetDestination(value);
}
- private List<Operand> _destinations;
- private List<Operand> _sources;
+ private readonly List<Operand> _destinations;
+ private readonly List<Operand> _sources;
private bool _clearedDest;
public int DestinationsCount => _destinations.Count;
@@ -123,13 +110,14 @@ namespace ARMeilleure.IntermediateRepresentation
private void RemoveOldDestinations()
{
- if (_destinations != null && !_clearedDest)
+ if (!_clearedDest)
{
for (int index = 0; index < _destinations.Count; index++)
{
RemoveAssignment(_destinations[index]);
}
}
+
_clearedDest = false;
}
@@ -137,13 +125,18 @@ namespace ARMeilleure.IntermediateRepresentation
{
RemoveOldDestinations();
- Resize(_destinations, 1);
+ if (destination == null)
+ {
+ _destinations.Clear();
+ _clearedDest = true;
+ }
+ else
+ {
+ Resize(_destinations, 1);
- _destinations[0] = destination;
+ _destinations[0] = destination;
- if (destination.Kind == OperandKind.LocalVariable)
- {
- destination.Assignments.Add(this);
+ AddAssignment(destination);
}
}
@@ -175,13 +168,17 @@ namespace ARMeilleure.IntermediateRepresentation
{
RemoveOldSources();
- Resize(_sources, 1);
+ if (source == null)
+ {
+ _sources.Clear();
+ }
+ else
+ {
+ Resize(_sources, 1);
- _sources[0] = source;
+ _sources[0] = source;
- if (source.Kind == OperandKind.LocalVariable)
- {
- source.Uses.Add(this);
+ AddUse(source);
}
}
diff --git a/ARMeilleure/Translation/PTC/Ptc.cs b/ARMeilleure/Translation/PTC/Ptc.cs
index b538e948..0051d25a 100644
--- a/ARMeilleure/Translation/PTC/Ptc.cs
+++ b/ARMeilleure/Translation/PTC/Ptc.cs
@@ -20,7 +20,7 @@ namespace ARMeilleure.Translation.PTC
{
private const string HeaderMagic = "PTChd";
- private const int InternalVersion = 7; //! To be incremented manually for each change to the ARMeilleure project.
+ private const int InternalVersion = 8; //! To be incremented manually for each change to the ARMeilleure project.
private const string BaseDir = "Ryujinx";