GithubHelp home page GithubHelp logo

Comments (5)

jakubmisek avatar jakubmisek commented on May 27, 2024 1

@kekekeks the compiler mainly emits simple .ldarg+.call. Here it's probably an unimplemented optimization where due to more similar overloads, it falls back to runtime overload resolution.

from peachpie.

FibonacciFox avatar FibonacciFox commented on May 27, 2024

https://github.com/AvaloniaUI/Avalonia/blob/ffaf02cf036cd92776367cef3c0290dec9c59b84/src/Markup/Avalonia.Markup.Xaml/AvaloniaXamlLoader.cs#L10C4-L25C10

from peachpie.

jakubmisek avatar jakubmisek commented on May 27, 2024

The compiler sees several Load() overloads, so it postpones the resolution to runtime using the callsite (call_Load?0).

The fix would be to improve the compiler so it resolves the Load(object) overload in compile time - I'm not sure, why it's not resolving it already, it should.

from peachpie.

FibonacciFox avatar FibonacciFox commented on May 27, 2024

The compiler sees several Load() overloads, so it postpones the resolution to runtime using the callsite (call_Load?0).

The fix would be to improve the compiler so it resolves the Load(object) overload in compile time - I'm not sure, why it's not resolving it already, it should.

As I understand it, this problem can be solved only at the compiler level?

from peachpie.

kekekeks avatar kekekeks commented on May 27, 2024

For a reference: this is how XAML compiler task tries to match AvaloniaXamlLoader.Load(this) call.

It currently recognizes the normal

ldarg.0
call AvaloniaXamlLoader.Load(object)

pattern and the monstrosity generated by F# compiler.

The peachpie pattern won't be easily recognizable since it would require us to analyze the CallSite static variable initialization that happens elsewhere and looks like an internal implementation detail.

So the preferable solution would be for peachpie to just emit the simple ldarg.0+call sequence.

from peachpie.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.