GithubHelp home page GithubHelp logo

bacil's People

Contributors

jagotu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

bacil's Issues

Plan for calling C# symbols arbitrarily

I know this project is nowhere near the point of Java <-> C# interop yet, but I can't get it off my mind.

What will calling C# code from Java code look like? I'm not familiar with how namespaces, statics, etc. work in .NET libraries. I want to assume it can't be similar to JS, because unlike in JS, in C# not every identifier is a value, but I haven't yet dived as deep into Truffle as I would like.

Any update?

Hi @jagotu !
Your project looks amazing :)
Any update??
What kinds of programs can it currently run?
I know it's a bit early but your project would get public attention if you published interesting benchmarks.

Even simple loops don't get unrolled in high/mid/low tiers

While checking the reason for lower performance of some benchmarks, I noticed that if loops remain after TruffleTier (which they seem to do as TruffleTier just peels the bytecode loop), no later tiers unroll them even though form the graphs should fullfill rules for the LoopFullUnrollPhase that runs in all three of these tiers. This prevents other optimizations and constant folding that could be achieved by unrolling the loop.

For example, this procedure:

static int simpletest()
{
    int result = 0;
    for (int i = 0; i < 5; i++)
    {
        result += i;
    }
    return result;
}

Copmiles to this graph after TruffleTier:

loop2

And the LoopNode survives even after low tier:

loop6

I've tried to debug the LoopFullUnrollPhase and it seems the detection of counted loops happens only once, when the loop is still too complex to be recognized as counted. It could very well be a bug/imperfection in truffle/graal itself, but I don't currently have the time to investigate.

Fixing this and making sure that the loops are unrolled should provide a significant boost to the slowest of benchmarks, like nbody, which loops over an array of 6 plantes and none of the virtual calls can be constantized due to the lack of unrolling.

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.