Make sure #to:do: operates on the correct block, i.e., same block method

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Update to a new version of Graal

This version is not including the latests CallNode changes in Truffle yet, but fixes in Graal for TruffleSOM.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Made graal.sh usable without relying on absolute paths

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Updated to latest core-lib, this are updates to the rebench infrastructure

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Focus benchmarks on the jitting VMs

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Removed specialization for while nodes on non-block receivers

This is not part of SOM. #whileTrue: and #whileFalse: are only supported on the Block class.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Refactor superclass parsing to be an explicit method in the parser.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Updated to latest core-lib

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Move to latest graal version and remove all usage of old API

This is work in progress, we need to adopt the CallNode, I think.

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

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

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Implemented split in the RootNodes to do proper contextualization of inlined methods

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added DBG flag to graal.sh to be able to enable debugging with Eclipse easily

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove custom inlining heuristics

[for testing the performance impact]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Renamed signature to selector for consistency with the rest of SOM, and marked lookup as @SlowPath

All those hash table lookups should only be put on the fast path if the compiler insists.

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Complete rewrite of message send handling.

TruffleSOM follows now more closely the other Truffle languages, and especially the SimpleLanguage. We do not distinguish between node arity anymore for the send node to avoid that code duplication.

In order to facilitate specialization for primitives, we introduce n-ary expression node specializations which can be subclassed to define special cases for certain message sends, which then typically are not implemented as message sends. The n-ary variants provide the necessary `executeEvaluated(.)` methods specific to their arity.

The MessageSendNode is based on a new structure that uses a separate DispatchNode to do the method lookup and inline caching if possible. The dispatch node is specializing itself independent from the message node. This design is based on SimpleLanguage.

Detailed design changes:
 - receiver (i.e. self) is treated separately from the arguments, this is mostly a conceptual decision, because I like to have access to the receiver directly in some way
   -> the parser keeps it however still with the other arguments [TODO: clean up this inconsistency]

 - AbstractMessageNode is the root class for message sends in the 'AST'
 - renamed Arguments to SArguments to distinguish it from the frameworks class
 - we only have one Arguments class now, no special handling anymore
 - removed BlockHelper, wasn't very useful anymore
 - removed ArgumentEvaluationNode
 - ArgumentReadNode is not specialized by arity anymore, but we distinguish between normal argument read nodes and self read nodes

 -  ClassCheckNode was moved into dispatch package
   -> super check was removed, this is now done on the level of message send nodes
 - ExpressionNode now includes constructor to propagate sourceSection, not yet adopted properly [TODO: propagate source section in constructor]
 - *SendNode implementations replaced by MessageSendNode
 - introduced interface PreevaluatedExpression for specialized nodes
    -> they are used directly with the results of the evaluation of their subnodes, i.e., receiver and arguments, and therefore need this common interface independent of their arity

 - adapted specialized nodes to new design

[TODO: see whether Universe.current() use has any drawbacks]

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Added toString() to Variable

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Missing calls to adoptChild

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Remove Object[] from type system, was only needed for the ArgumentEvaluationNode, which got removed

Signed-off-by: Stefan Marr <git@stefan-marr.de>
Move execute(.) to superclass (Invokable)

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