I'm working on an interpreter, and just recently discovered graal truffle, which promises fast performance if I use it to implement the interpreter. However, from what I can the mileage varies on the interpreter's code and how easily compiler can optimize it. The interpreter I'm working on has a feature of full continuations, which I implemented using CPS transformation and trampolining for TCO. If I port this to truffle, can I hope for decent performance, or is it something that just won't fundamentally work better than regular interpreter written in java due to architecture of the code?
Full CPS transformation viability when using truffle graalvm?
158 Views Asked by Coderino Javarino At
1
There are 1 best solutions below
Related Questions in GRAALVM
- Quarkus native image crashes
- How to build native-image via client-maven-plugin that uses BouncyCastle
- Lost connection to MySQL server during aggregate UDF execution
- GraalVM - Exposing Java complex objects to JavaScript
- GraalVm Polyglot application - is it possible to evaluate kotlin script from java at runtime?
- GraalVM JavaScript in Java - How to identify an async method
- cl.exe missing when building native app using GraalVM
- Micronaut @Value does not get the environmental variable when running native image
- IntelliJ IDEA not indexing GraalVM libraries
- Missing properties file in Graal native image
- Can Spring Boot application using Consul for configuration be compiled to GraalVM native?
- How to install GraalVM with Python?
- Spring boot Native Image build error: Element in class initialization configuration must end in
- GraalVM build is failed
- GraalVM and JNA dependency
Related Questions in CONTINUATION-PASSING
- Is this definition of a tail recursive fibonacci function tail-recursive?
- Is there a real-world applicability for the continuation monad outside of academic use?
- Is there a way to make this continuation passing with codata example work in F#?
- Haskell Optimization Failure
- Continuation-Passing Style in Scheme?
- How to convert a variation of ackermann function to support tail call?
- How to await an Array of async Tasks without blowing the stack?
- In scala continuation, how to write a loop in CPS form?
- Continuations and for comprehensions -- what's the incompatibility?
- Convert to CPS (Continuation Passing Style)
- Is call/cc a copy of a stack frame or an actual jump in execution?
- How can I Implement my own List.partition using tail-recursion?
- How do I convert the following functions in JavaScript to continuation passing style (CPS)?
- The Little Schemer evens-only*&co
- What are the continuation passing style conversion rules?
Related Questions in TRAMPOLINES
- Trampolining scalaz' Monad.whileM_ to prevent stack overflow
- Coding static to instance method trampoline function with templates
- Difference between "trampoline" methods
- How to combine TaskT with the monad instance of Trampoline to get stackless async computations?
- Why doesn't Haskell need Trampolining?
- JSON.NET: Not working with MonoTouch "Ran out of trampolines of type 2 "
- Set default Execution Context in ZIO
- Using trampoline to create tree from nested arrays and covert that to string
- Trampoline based linked list (lisp tree) to string with cycles
- how to calculate the correct size to copy into the trampoline
- Full CPS transformation viability when using truffle graalvm?
- Tail recursion elimination on conditional types doesn't work
- Patching arm64 binary to replace all 'call' instructions to point to a specific function
- Basic Hook vs Trampoline Hook
- Trampolining in JavaScript - how to handle try/catch in recursive call
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
You need to make sure that continuations are constant e.g. partial evaluation must see a "constant" target through the trampoline. I haven't seen a CPS interpreter for GraalVM yet. The interpreter will be probably slower than AST or bytecode interpreters, but the compiled code should be as fast. For further technical questions please check https://github.com/oracle/graal/tree/master/truffle#community