Fix RPC codegen

This commit is contained in:
Wojtek Figat
2023-02-10 13:37:02 +01:00
parent a099bd25f6
commit e9fa76c34a

View File

@@ -1360,7 +1360,9 @@ namespace Flax.Build.Plugins
var jumpIfBodyStart = il.Create(OpCodes.Nop); // if block body
var jumpIf2Start = il.Create(OpCodes.Nop); // 2nd part of the if
var jumpBodyStart = il.Create(OpCodes.Nop); // original method body start
var jumpBodyEnd = il.Body.Instructions.First(x => x.OpCode == OpCodes.Ret);
var jumpBodyEnd = il.Body.Instructions.Last(x => x.OpCode == OpCodes.Ret && x.Previous != null);
if (jumpBodyEnd == null)
throw new Exception("Missing IL Return op code in method " + method.Name);
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 0));
il.InsertBefore(ilStart, il.Create(OpCodes.Brfalse_S, jumpIf2Start));
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
@@ -1410,7 +1412,13 @@ namespace Flax.Build.Plugins
il.InsertBefore(ilStart, il.Create(OpCodes.Nop));
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
il.InsertBefore(ilStart, il.Create(OpCodes.Ldc_I4_2));
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, jumpBodyEnd));
var tmp = il.Create(OpCodes.Nop);
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, tmp));
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyStart));
il.InsertBefore(ilStart, tmp);
//il.InsertBefore(ilStart, il.Create(OpCodes.Ret));
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyEnd));
}
// if (client && networkMode == NetworkManagerMode.Server) return;
@@ -1419,7 +1427,12 @@ namespace Flax.Build.Plugins
il.InsertBefore(ilStart, il.Create(OpCodes.Nop));
il.InsertBefore(ilStart, il.Create(OpCodes.Ldloc, varsStart + 2));
il.InsertBefore(ilStart, il.Create(OpCodes.Ldc_I4_1));
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, jumpBodyEnd));
var tmp = il.Create(OpCodes.Nop);
il.InsertBefore(ilStart, il.Create(OpCodes.Beq_S, tmp));
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyStart));
il.InsertBefore(ilStart, tmp);
//il.InsertBefore(ilStart, il.Create(OpCodes.Ret));
il.InsertBefore(ilStart, il.Create(OpCodes.Br, jumpBodyEnd));
}
// Continue to original method body