Removed support for Block>>#restart primitive

Removing the handling of the RestartLoopException is supposed to give a significant speed boost.
The primitive is not supported anymore, because we intrinsify #whileTrue: and #whileFalse:.

[TODO: change standard library to represent these loops as primitives]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
@CompilationFinal does not help for arrays

This is use of @CompilationFinal is not supported.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Give instructions on how to clone the repository

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove the null and length check, this should always hold.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Unroll the loop for initializing upvalues

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Updated graal

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Use Truffle's SourceManager

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Fixed the implementation of `super`

Super was implemented incorrectly. `super` requires lexical semantics, and not dynamic semantics, which is now encoded directly in the node. However, since we do not have a reference to the relevant class before parsing is completed, we need to lazily update the AST. And, we use a Uninitialized node for that.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Use simple instead of fully qualified class names.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove implicit int to BigInteger cast, only causes unexpected behavior

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Handle overflow cases for ints with additional specialization that uses long for calculation

This is basically the classic SOM implementation.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Try to reduce BitInteger to int where possible

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove all the dead code from the TypeSystem

Don't think we will need that.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Turn the processing of non-local returns into a Truffle node.

I hope this is semantically correct...
Now, only methods that define blocks with non-local returns will actually catch those ReturnExceptions. This should be ok, because a block checks whether the relevant method is still on the stack, and thus, there is one well defined point that should catch the exception, and that one is still maintained.

This is one of these examples, where Truffle trees are more than just ASTs. They are rather execution trees that model 'execution traces'. My feeling is now that any kind of complex control flow should be modeled as nodes. This way, the runtime actually only sees more or less straight forward control flow, because everything else is hidden by alternative nodes or in low-priority branches (BranchProfile).
[TODO-REPORT: write down a bit more on the intuition for creating truffle nodes]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Forgot the necessary `adoptChild()` call.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added BranchProfile for the non-local return handler

Signed-off-by: Stefan Marr <git@stefan-marr.de>
@ExplodeLoops in ContextualNode, also simplified

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Fields marked as @CompilationFinal should only be set in the interpreter

All sets of these fields should be guarded with `transferToInterpreterAndInvalidate()` or a check for execution in the interpreter as it is done for instance for call counts.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Inlined methods also need their own frame descriptor and frame slots to specialize separately

This change is inspired by the solution used in ZipPy.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added evaluated argument to specialize method to allow later specializations to use it

This is in preparation for inlining methods in if and while specializations.

Signed-off-by: Stefan Marr <git@stefan-marr.de>