Browse Source

Use local pooling for pseudo-attached property

pull/2322/head
Nikita Tsukanov 7 years ago
parent
commit
0036abde63
  1. 11
      src/Markup/Avalonia.Markup.Xaml/XamlIl/CompilerExtensions/Transformers/AvaloniaXamlIlTransformInstanceAttachedProperties.cs
  2. 2
      src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github

11
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

2
src/Markup/Avalonia.Markup.Xaml/XamlIl/xamlil.github

@ -1 +1 @@
Subproject commit 41b782f8fde6b52eb3175393fae8e3e85e673f5d
Subproject commit e1ae06781318a65810adb83b87ba56ffeafaf50b
Loading…
Cancel
Save