llst
llst copied to clipboard
LLVM powered Little Smalltalk.
This PR is my first rather independent (or naïve?) attempt to realize how type inference may be used to aid JIT VM. Underlying concept is not based on any well-known...
Smalltalk being a fully dynamic language is still very structured in terms of memory organization. All objects share the same format and operate in a very simple and straightforward way....
JIT VM boosts up performance by eliminating value stack in context objects. Instead of using Smalltalk stack, we maintain values on the system level. Each `PushX` instruction generates an `llvm::Value`...
Current implementation works only if JIT method returns control in a usual way. If block return is emitted or exception is thrown, native method function is not disposed properly. Need...
Binary operators such as `+` or `*` may be endoded in two ways. Consider the following method: ``` Smalltalk increment: arg ^arg + 1 ``` One way is to encode...
In order to send a message VM need to find the method which will dispatch the message. Lookup is performed by traversing method dictionaries of receiver class, it's parent and...
### Overview Execution context of a Smalltalk method is represented by an instance of `Context` class. It holds all information required to execute a method: - Pointer to a method...
To mark arguments we have to: - alloc place for them - call gcroot - fill them with items But the lifetime of arguments lasts only 1 instruction (sendMessage). We...