aboutsummaryrefslogtreecommitdiff
path: root/ChocolArm64/Translation/TranslatedSub.cs
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2019-04-26 01:55:12 -0300
committerjduncanator <1518948+jduncanator@users.noreply.github.com>2019-04-26 14:55:12 +1000
commit8a7d99cdeae2355511d4eb43aefb76d0d886bcf8 (patch)
tree655d33f4db5dc3eb21c9c4ff5867b1179913585a /ChocolArm64/Translation/TranslatedSub.cs
parent2b8eac1bcec6d4870776b4f302d9dd7794223642 (diff)
Refactoring and optimization on CPU translation (#661)
* Refactoring and optimization on CPU translation * Remove now unused property * Rename ilBlock -> block (local) * Change equality comparison on RegisterMask for consistency Co-Authored-By: gdkchan <gab.dark.100@gmail.com> * Add back the aggressive inlining attribute to the Synchronize method * Implement IEquatable on the Register struct * Fix identation
Diffstat (limited to 'ChocolArm64/Translation/TranslatedSub.cs')
-rw-r--r--ChocolArm64/Translation/TranslatedSub.cs29
1 files changed, 9 insertions, 20 deletions
diff --git a/ChocolArm64/Translation/TranslatedSub.cs b/ChocolArm64/Translation/TranslatedSub.cs
index 8b599b7a..704e3b47 100644
--- a/ChocolArm64/Translation/TranslatedSub.cs
+++ b/ChocolArm64/Translation/TranslatedSub.cs
@@ -26,25 +26,15 @@ namespace ChocolArm64.Translation
public TranslationTier Tier { get; }
- public long IntNiRegsMask { get; }
- public long VecNiRegsMask { get; }
-
- private bool _isWorthOptimizing;
+ private bool _rejit;
private int _callCount;
- public TranslatedSub(
- DynamicMethod method,
- long intNiRegsMask,
- long vecNiRegsMask,
- TranslationTier tier,
- bool isWorthOptimizing)
+ public TranslatedSub(DynamicMethod method, TranslationTier tier, bool rejit)
{
- Method = method ?? throw new ArgumentNullException(nameof(method));;
- IntNiRegsMask = intNiRegsMask;
- VecNiRegsMask = vecNiRegsMask;
- _isWorthOptimizing = isWorthOptimizing;
- Tier = tier;
+ Method = method ?? throw new ArgumentNullException(nameof(method));;
+ Tier = tier;
+ _rejit = rejit;
}
static TranslatedSub()
@@ -82,9 +72,9 @@ namespace ChocolArm64.Translation
return Delegate(threadState, memory);
}
- public bool IsWorthOptimizing()
+ public bool Rejit()
{
- if (!_isWorthOptimizing)
+ if (!_rejit)
{
return false;
}
@@ -94,9 +84,8 @@ namespace ChocolArm64.Translation
return false;
}
- //Only return true once, so that it is
- //added to the queue only once.
- _isWorthOptimizing = false;
+ //Only return true once, so that it is added to the queue only once.
+ _rejit = false;
return true;
}