Update SvcTable.cs
This commit is contained in:
parent
2fd3f3c326
commit
b55b680332
1 changed files with 43 additions and 28 deletions
|
@ -165,10 +165,14 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BindingFlags staticNonPublic = BindingFlags.NonPublic | BindingFlags.Static;
|
||||||
|
|
||||||
// Print all the arguments for debugging purposes.
|
// Print all the arguments for debugging purposes.
|
||||||
int inputArgsCount = methodArgs.Length - byRefArgsCount;
|
int inputArgsCount = methodArgs.Length - byRefArgsCount;
|
||||||
|
|
||||||
generator.Emit(OpCodes.Ldc_I4_S, inputArgsCount);
|
if (inputArgsCount != 0)
|
||||||
|
{
|
||||||
|
generator.Emit(OpCodes.Ldc_I4, inputArgsCount);
|
||||||
|
|
||||||
generator.Emit(OpCodes.Newarr, typeof(object));
|
generator.Emit(OpCodes.Newarr, typeof(object));
|
||||||
|
|
||||||
|
@ -179,8 +183,7 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
argsFormat += $" {methodArgs[index].Name}: 0x{{{index}:X8}},";
|
argsFormat += $" {methodArgs[index].Name}: 0x{{{index}:X8}},";
|
||||||
|
|
||||||
generator.Emit(OpCodes.Dup);
|
generator.Emit(OpCodes.Dup);
|
||||||
generator.Emit(OpCodes.Ldc_I4_S, index);
|
generator.Emit(OpCodes.Ldc_I4, index);
|
||||||
generator.Emit(OpCodes.Conv_I);
|
|
||||||
|
|
||||||
generator.Emit(OpCodes.Ldarg_1);
|
generator.Emit(OpCodes.Ldarg_1);
|
||||||
generator.Emit(OpCodes.Ldc_I4, byRefArgsCount + index);
|
generator.Emit(OpCodes.Ldc_I4, byRefArgsCount + index);
|
||||||
|
@ -197,8 +200,13 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
argsFormat = argsFormat.Substring(0, argsFormat.Length - 1);
|
argsFormat = argsFormat.Substring(0, argsFormat.Length - 1);
|
||||||
|
|
||||||
generator.Emit(OpCodes.Ldstr, argsFormat);
|
generator.Emit(OpCodes.Ldstr, argsFormat);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
generator.Emit(OpCodes.Ldnull);
|
||||||
|
|
||||||
BindingFlags staticNonPublic = BindingFlags.NonPublic | BindingFlags.Static;
|
generator.Emit(OpCodes.Ldstr, svcName);
|
||||||
|
}
|
||||||
|
|
||||||
MethodInfo printArgsMethod = typeof(SvcTable).GetMethod(nameof(PrintArguments), staticNonPublic);
|
MethodInfo printArgsMethod = typeof(SvcTable).GetMethod(nameof(PrintArguments), staticNonPublic);
|
||||||
|
|
||||||
|
@ -325,6 +333,18 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
throw new InvalidSvcException($"Method \"{svcName}\" has a invalid ref type \"{type.Name}\".");
|
throw new InvalidSvcException($"Method \"{svcName}\" has a invalid ref type \"{type.Name}\".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void PrintArguments(object[] argValues, string formatOrSvcName)
|
||||||
|
{
|
||||||
|
if (argValues != null)
|
||||||
|
{
|
||||||
|
Logger.PrintDebug(LogClass.KernelSvc, string.Format(formatOrSvcName, argValues));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Logger.PrintDebug(LogClass.KernelSvc, formatOrSvcName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void PrintResult(KernelResult result, string svcName)
|
private static void PrintResult(KernelResult result, string svcName)
|
||||||
{
|
{
|
||||||
if (result != KernelResult.Success &&
|
if (result != KernelResult.Success &&
|
||||||
|
@ -339,10 +359,5 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
|
||||||
Logger.PrintDebug(LogClass.KernelSvc, $"{svcName} returned result {result}.");
|
Logger.PrintDebug(LogClass.KernelSvc, $"{svcName} returned result {result}.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void PrintArguments(object[] argValues, string format)
|
|
||||||
{
|
|
||||||
Logger.PrintDebug(LogClass.KernelSvc, string.Format(format, argValues));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Add table
Add a link
Reference in a new issue