From 0036abde634eb2e18d858bcaf1c284b4bdf8892c Mon Sep 17 00:00:00 2001 From: Nikita Tsukanov Date: Sat, 27 Apr 2019 11:13:28 +0300 Subject: [PATCH] Use local pooling for pseudo-attached property --- ...aloniaXamlIlTransformInstanceAttachedProperties.cs | 11 ++++++----- src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs index 241b0f12a3..fc1f325dc5 100644 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs @@ -154,11 +154,12 @@ namespace Avalonia.Markup.Xaml.XamlIl.CompilerExtensions.Transformers if (method == null) throw new XamlIlTypeSystemException( "Unable to find SetValue(AvaloniaProperty, object, BindingPriority) on AvaloniaObject"); - var loc = emitter.DefineLocal(Parent.PropertyType); - emitter - .Stloc(loc) - .Ldsfld(Parent._field) - .Ldloc(loc); + using (var loc = emitter.LocalsPool.GetLocal(Parent.PropertyType)) + emitter + .Stloc(loc.Local) + .Ldsfld(Parent._field) + .Ldloc(loc.Local); + if(Parent.PropertyType.IsValueType) emitter.Box(Parent.PropertyType); emitter diff --git a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github index 41b782f8fd..e1ae067813 160000 --- a/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github +++ b/src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github @@ -1 +1 @@ -Subproject commit 41b782f8fde6b52eb3175393fae8e3e85e673f5d +Subproject commit e1ae06781318a65810adb83b87ba56ffeafaf50b