aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChocolArm64/ATranslator.cs26
1 files changed, 16 insertions, 10 deletions
diff --git a/ChocolArm64/ATranslator.cs b/ChocolArm64/ATranslator.cs
index 02c18efd..f1bc2cff 100644
--- a/ChocolArm64/ATranslator.cs
+++ b/ChocolArm64/ATranslator.cs
@@ -107,25 +107,31 @@ namespace ChocolArm64
ATranslatedSub Subroutine = Context.GetSubroutine();
- if (SubBlocks.Contains(Position))
+ lock (SubBlocks)
{
- SubBlocks.Remove(Position);
+ if (SubBlocks.Contains(Position))
+ {
+ SubBlocks.Remove(Position);
- Subroutine.SetType(ATranslatedSubType.SubBlock);
- }
- else
- {
- Subroutine.SetType(ATranslatedSubType.SubTier0);
+ Subroutine.SetType(ATranslatedSubType.SubBlock);
+ }
+ else
+ {
+ Subroutine.SetType(ATranslatedSubType.SubTier0);
+ }
}
CachedSubs.AddOrUpdate(Position, Subroutine, (Key, OldVal) => Subroutine);
AOpCode LastOp = Block.GetLastOp();
- if (LastOp.Emitter != AInstEmit.Ret &&
- LastOp.Emitter != AInstEmit.Br)
+ lock (SubBlocks)
{
- SubBlocks.Add(LastOp.Position + 4);
+ if (LastOp.Emitter != AInstEmit.Ret &&
+ LastOp.Emitter != AInstEmit.Br)
+ {
+ SubBlocks.Add(LastOp.Position + 4);
+ }
}
return Subroutine;