WebGLThreadingPatcher
WebGLThreadingPatcher copied to clipboard
Not working with Unity 6
Error: IL2CPP error for method 'System.Void System.Threading.<>_GenericWrapper::.ctor(System.Action1<T>)' in assembly 'E:\Projekti\Unity\Gundy Fishing - Copy\Library\Bee\artifacts\WebGL\ManagedStripped\mscorlib.dll' System.InvalidOperationException: Attempting to return from void method 'System.Void System.Threading.<>_GenericWrapper::.ctor(System.Action1<T>)' when there are values on the stack. Is this invalid IL code?
@kantagara see https://github.com/VolodymyrBS/WebGLThreadingPatcher/issues/6#issuecomment-1962730261
WebGLPostBuildCallback.cs:
@@ -162,7 +162,7 @@ static MethodDefinition CreateConstructor(ModuleDefinition moduleDefinition, Fie
ctor.Parameters.Add(new ParameterDefinition(callbackField.FieldType));
var ilProcessor = ctor.Body.GetILProcessor();
ilProcessor.Emit(OpCodes.Ldarg_0);
- ilProcessor.Emit(OpCodes.Call, new MethodReference(".ctor", moduleDefinition.TypeSystem.Void, moduleDefinition.TypeSystem.Object));
+ ilProcessor.Emit(OpCodes.Call, new MethodReference(".ctor", moduleDefinition.TypeSystem.Void, moduleDefinition.TypeSystem.Object) { HasThis = true });
ilProcessor.Emit(OpCodes.Ldarg_0);
ilProcessor.Emit(OpCodes.Ldarg_1);
ilProcessor.Emit(OpCodes.Stfld, callbackField);