Skip to content

Commit 0920563

Browse files
committed
1.0.9
1 parent d2b609a commit 0920563

8 files changed

Lines changed: 258 additions & 79 deletions

File tree

Packages/blueamulet.udonsharpoptimizer/Editor/BlueAmulet.UdonSharpOptimizer.asmdef

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
"VRC.SDK3.Editor",
77
"VRC.SDKBase",
88
"VRC.SDKBase.Editor",
9+
"UdonSharp.Runtime",
910
"UdonSharp.Editor"
1011
],
1112
"includePlatforms": [

Packages/blueamulet.udonsharpoptimizer/Editor/Optimizer.cs

Lines changed: 239 additions & 74 deletions
Large diffs are not rendered by default.

Packages/blueamulet.udonsharpoptimizer/Editor/OptimizerEditorWindow.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ internal class OptimizerEditorWindow : EditorWindow
1313
SerializedProperty _optimization3;
1414
SerializedProperty _optimization4;
1515
SerializedProperty _optimizationVar;
16+
SerializedProperty _optimizationBR;
17+
SerializedProperty _optimizationSL;
1618
SerializedProperty _optimizationThis;
1719

1820
[MenuItem("Tools/UdonSharp Optimizer")]
@@ -31,6 +33,8 @@ public void OnEnable()
3133
_optimization3 = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableOPT03));
3234
_optimization4 = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableOPT04));
3335
_optimizationVar = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableVariableReduction));
36+
_optimizationBR = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableBlockReduction));
37+
_optimizationSL = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableStoreLoad));
3438
_optimizationThis = _settingsSO.FindProperty(nameof(OptimizerSettings.EnableThisBugFix));
3539
}
3640

@@ -73,9 +77,12 @@ public void OnGUI()
7377
EditorGUILayout.PropertyField(_optimization2, false);
7478
EditorGUILayout.PropertyField(_optimization3, false);
7579
EditorGUILayout.PropertyField(_optimization4, false);
80+
EditorGUILayout.Space();
7681
EditorGUILayout.PropertyField(_optimizationVar, false);
7782
using (new EditorGUI.DisabledScope(!_settings.EnableVariableReduction))
7883
{
84+
EditorGUILayout.PropertyField(_optimizationBR, false);
85+
EditorGUILayout.PropertyField(_optimizationSL, false);
7986
EditorGUILayout.PropertyField(_optimizationThis, false);
8087
}
8188
}

Packages/blueamulet.udonsharpoptimizer/Editor/OptimizerInject.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Unoffical UdonSharp Optimizer
2+
* Unofficial UdonSharp Optimizer
33
* Integrates the Optimizer with UdonSharp
44
* Written by BlueAmulet
55
*/
@@ -25,7 +25,7 @@ internal static class OptimizerInject
2525
private static readonly MethodInfo optimizerInject = AccessTools.Method(typeof(Optimizer), nameof(Optimizer.OptimizeProgram));
2626

2727
private static bool patchSuccess;
28-
public static bool PatchSuccess { get => patchSuccess; }
28+
public static bool PatchSuccess => patchSuccess;
2929

3030
static OptimizerInject()
3131
{
@@ -117,7 +117,7 @@ private static IEnumerable<CodeInstruction> TranspilerDump(IEnumerable<CodeInstr
117117
return instrs;
118118
}
119119

120-
public static int LocalIndex(CodeInstruction code)
120+
private static int LocalIndex(CodeInstruction code)
121121
{
122122
if (code.opcode == OpCodes.Ldloc_0 || code.opcode == OpCodes.Stloc_0) return 0;
123123
else if (code.opcode == OpCodes.Ldloc_1 || code.opcode == OpCodes.Stloc_1) return 1;

Packages/blueamulet.udonsharpoptimizer/Editor/OptimizerSettings.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ internal class OptimizerSettings : ScriptableObject
2424
public bool EnableOPT04 = true;
2525
[Tooltip("Reduce amount of temporary variables")]
2626
public bool EnableVariableReduction = true;
27+
[Tooltip("Map variables to same variable in different blocks")]
28+
public bool EnableBlockReduction = true;
29+
[Tooltip("Map Store+Load variables to same variable")]
30+
public bool EnableStoreLoad = true;
2731
[Tooltip("Fix extra __this_ variables")]
2832
public bool EnableThisBugFix = true;
2933

Packages/blueamulet.udonsharpoptimizer/README.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ Changelog:
1616
1.0.5 - Added ExternWrite+Copy check for variables, added missing jump checks
1717
1.0.6 - Added tail call optimization
1818
1.0.7 - Single .unitypackage installation
19-
1.0.8 - Added basic Settings panel
19+
1.0.8 - Added basic Settings panel
20+
1.0.9 - Moved TCO into first pass, added block based variable reduction

Packages/blueamulet.udonsharpoptimizer/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "blueamulet.udonsharpoptimizer",
33
"displayName": "UdonSharpOptimizer",
4-
"version": "1.0.8",
4+
"version": "1.0.9",
55
"description": "UdonSharp postprocessor to reduce instruction and variable counts",
66
"gitDependencies": {},
77
"vpmDependencies": {

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,4 @@ UdonSharp makes a *LOT* of temporary variables. We detect places where we can re
2626
1.0.6 - Added tail call optimization
2727
1.0.7 - Single .unitypackage installation
2828
1.0.8 - Added basic Settings panel
29+
1.0.9 - Moved TCO into first pass, added block based variable reduction

0 commit comments

Comments
 (0)