forked from Mirror/Ryujinx
Fix Node Uses/Assignments (#1376)
* Fix Node Uses/Assignments * Bump PPTC Version Number Co-authored-by: jduncanator <1518948+jduncanator@users.noreply.github.com>
This commit is contained in:
parent
b5127131c5
commit
30d4f752f4
2 changed files with 28 additions and 31 deletions
|
@ -10,25 +10,12 @@ namespace ARMeilleure.IntermediateRepresentation
|
||||||
|
|
||||||
public Operand Destination
|
public Operand Destination
|
||||||
{
|
{
|
||||||
get
|
get => _destinations.Count != 0 ? GetDestination(0) : null;
|
||||||
{
|
set => SetDestination(value);
|
||||||
return _destinations.Count != 0 ? GetDestination(0) : null;
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (value != null)
|
|
||||||
{
|
|
||||||
SetDestination(value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
_destinations.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Operand> _destinations;
|
private readonly List<Operand> _destinations;
|
||||||
private List<Operand> _sources;
|
private readonly List<Operand> _sources;
|
||||||
private bool _clearedDest;
|
private bool _clearedDest;
|
||||||
|
|
||||||
public int DestinationsCount => _destinations.Count;
|
public int DestinationsCount => _destinations.Count;
|
||||||
|
@ -123,13 +110,14 @@ namespace ARMeilleure.IntermediateRepresentation
|
||||||
|
|
||||||
private void RemoveOldDestinations()
|
private void RemoveOldDestinations()
|
||||||
{
|
{
|
||||||
if (_destinations != null && !_clearedDest)
|
if (!_clearedDest)
|
||||||
{
|
{
|
||||||
for (int index = 0; index < _destinations.Count; index++)
|
for (int index = 0; index < _destinations.Count; index++)
|
||||||
{
|
{
|
||||||
RemoveAssignment(_destinations[index]);
|
RemoveAssignment(_destinations[index]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_clearedDest = false;
|
_clearedDest = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,13 +125,18 @@ namespace ARMeilleure.IntermediateRepresentation
|
||||||
{
|
{
|
||||||
RemoveOldDestinations();
|
RemoveOldDestinations();
|
||||||
|
|
||||||
Resize(_destinations, 1);
|
if (destination == null)
|
||||||
|
|
||||||
_destinations[0] = destination;
|
|
||||||
|
|
||||||
if (destination.Kind == OperandKind.LocalVariable)
|
|
||||||
{
|
{
|
||||||
destination.Assignments.Add(this);
|
_destinations.Clear();
|
||||||
|
_clearedDest = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Resize(_destinations, 1);
|
||||||
|
|
||||||
|
_destinations[0] = destination;
|
||||||
|
|
||||||
|
AddAssignment(destination);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,13 +168,17 @@ namespace ARMeilleure.IntermediateRepresentation
|
||||||
{
|
{
|
||||||
RemoveOldSources();
|
RemoveOldSources();
|
||||||
|
|
||||||
Resize(_sources, 1);
|
if (source == null)
|
||||||
|
|
||||||
_sources[0] = source;
|
|
||||||
|
|
||||||
if (source.Kind == OperandKind.LocalVariable)
|
|
||||||
{
|
{
|
||||||
source.Uses.Add(this);
|
_sources.Clear();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Resize(_sources, 1);
|
||||||
|
|
||||||
|
_sources[0] = source;
|
||||||
|
|
||||||
|
AddUse(source);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,7 +20,7 @@ namespace ARMeilleure.Translation.PTC
|
||||||
{
|
{
|
||||||
private const string HeaderMagic = "PTChd";
|
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";
|
private const string BaseDir = "Ryujinx";
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue