enso/engine/runtime
Pavel Marek 53e99809e2
Store FramePointer in IR (#10729)
* Add stub of FramePointerAnalysis pass

* Add stub of FramePointerAnalysisTest

* Add more framepointer tests

* FramePointer has constructor for better debugging

* Update tests - FramePointer metadata is also in Info.Def

* FramePointerAnalysis traverses the whole IR.

* Fix test - check for metadata

* Reorder methods in FramePointerAnalysis

* Fix argument processing

* Improve some toString methods for debugging

* Fix parent levels in tests

* FramePointerAnalysis does not copy IRs

* FramePointerAnalysis metadata is Persistable

* FramePointerAnalysis attaches metadata to atom constructors

* Synthetic self argument is handled specially

* IRDumperPass is run as the last compiler pass

This ensure that one can see all the metadata on the IR.

* IRDumper can dump alias analysis metadata

* FramePointerMeta has meaningful toString

* FramePointerAnalysis process case expressions

* Fix javadoc links

* FramePointer is attached to GenericAnnotation expression

* IRDumper handles case type patterns

* FramePointer is attached to argument default value expressions

* Add test for default argument value metadata

* Attach frame pointer to default value expressions even if they have no alias graph

* FramePointerAnalysis can run inline on expression

* Fixes after rebase

* Fix annotation processing

* Add tests for no frame pointers on global symbol usages

* Do not use AliasAnalysis in IrToTruffle.

Also refactor NameResolutionAlgorithm to not use AliasMetadata

* Remove unused methods from LocalScope

* Remove unused import

* fmt

* Fix scala.MatchError for case patterns

* Do not use absolute code locations in the test.

Test on Windows fails because of different length of new lines.
2024-08-16 14:28:37 +02:00
..
src Store FramePointer in IR (#10729) 2024-08-16 14:28:37 +02:00
README.md Add a markdown style guide (#1022) 2020-07-21 13:59:40 +01:00

Enso Runtime

The Enso runtime is responsible for the actual execution of Enso code. This means that it encompasses the following functionality:

  • Parsing: Taking Enso code as input and generating an AST that maintains a sophisticated set of information about the input.
  • Desugaring: Reducing the user-facing Enso code into a simplified language known as Core.
  • Type Inference: Inferring the types of bindings in the user's code.
  • Type Checking: Checking that the inferred and provided types for bindings match up across the codebase.
  • Optimisation: Static optimisation processes to improve the performance of the user's program.
  • Code Execution: Actually running the Enso code.
  • Introspection Hooks: Providing hooks into the running code to allow the language server to inspect information about the code as it runs.

Truffle Nodes creation convention

All Truffle nodes that are expected to be created as part of ASTs should implement a public, static build method for creating an instance. If the node is DSL generated, the build method should delegate to the autogenerated create method, so that nodes are always created with build. Such a convention allows us to easily switch node back and forth between manual and DSL generated implementations, without the need to change its clients.

The only exception are nodes that are never expected to be a part of an AST e.g. root nodes of builtin functions, for which an asFunction method should be implemented instead.

This convention should be implemented for every node throughout this codebase if you see one not obeying it please fix it.