@0x7CFE 0x7CFE released this Aug 17, 2015 · 1 commit to master since this release

Version 0.4 may be described in three words: JIT that works.

Current release completely refactors the VM logic and brings new instruction API that allows us to extract semantic information from method bytecodes. Huge amount of work was done in terms of code organization, readability and maintainability.

However, there are a lot of things to be done, so it's just the beginning.

Currently JIT provides eqal or better performance on almost all typical tasks excluding heavy usage of reflection and/or dyanmic method generation. Current JIT code is created in assumption that class and method hierarchy will not change over time. Of course this is a temporary limitation that should be fixed in later releases.

Another complex issue is fast evaluation of block return instruction. Current implementation uses exception API to perform far jump. This work OK but is terribly slow. I mean REALLY slow, 10 times slower than the software implementation and 40 times slower than implementation proposed in the fast_block_return branch. Latter uses -freg-struct-return technique which is uncommon in UNIX world and it's calling conventions. More portable implementation should pass return value using the stack (sret in terms of LLVM).

P.S.: We started filling our project wiki. Don't forget to check it out!

Assets 2

@0x7CFE 0x7CFE released this Feb 8, 2015 · 312 commits to master since this release

This is an intermediate yet important release which brings many features that were required for code performance, stability and maintainability.

One of the most important features is support for LLVM 3.3. Previously used LLVM 3.1 is now out of support in many popular distributions. So we needed to catch up.

There are noticeable bugs that were fixed in this release, such as bug in garbage collector #14 or an optimization-related bug #28.

All things together provide a good base for further development.

Next release will take advantage of almost ready branch #32 that will boost VM to the new level of self-consciousness. This will allow us to deduce the control and data flow in the code and unlock many optimizations (like #56, #58 and #17) that require such knowledge.

Assets 2

@0x7CFE 0x7CFE released this Nov 29, 2013 · 369 commits to master since this release

This is a first release of LLST that brings working LLVM JIT support.
It allows to compile Smalltalk methods into native functions which then may be executed directly.

Compiling Smalltalk into native methods may provide x50 speedup depending on the actual code being executed. You may also watch the shellcast as a quick hack-in guide.

Two archive files are provided:

Both binaries are dynamically linked stripped executables, additionally compressed by UPX.

If you experience problems with executable files make sure that you have the following dependencies for soft and full versions respectively: =>  (0xf7798000) => /lib32/ (0xf7730000) => /usr/lib/i386-linux-gnu/ (0x4124b000) => /lib/i386-linux-gnu/ (0x41338000) => /lib/i386-linux-gnu/ (0xf757b000) => /lib/i386-linux-gnu/ (0xf755c000) => /lib/i386-linux-gnu/ (0xf7519000)
        /lib/ (0xf7799000) =>  (0xf771e000) => /lib32/ (0xf76b6000) => /lib/i386-linux-gnu/ (0xf769b000) => /lib/i386-linux-gnu/ (0xf7695000) => /usr/lib/i386-linux-gnu/ (0x4124b000) => /lib/i386-linux-gnu/ (0xf7652000) => /lib/i386-linux-gnu/ (0x41338000) => /lib/i386-linux-gnu/ (0xf749e000) => /lib/i386-linux-gnu/ (0xf747e000)
        /lib/ (0xf771f000)
Assets 4
Nov 17, 2013
Merges release 0.2
* develop: (611 commits)
  Bumps version to 0.2
  Adds readme
  Fixes typos in CompletionEngine
  Moves completion engine init code to the proper place
  Adds copyleft notice to Core.ll and args.h
  Adds copyleft notice to source files
  Fixes s/Lo/Low/ in source files copyleft notice
  Adds specifying comment to TArray::operator[]
  Adds const specifier to isSmallInteger and TObject::cast<T>()
  Links to pthread only in LLVM mode
  Fixes clang warnings about unused arguments of linker
  Switch to a new radix tree by Yuuki Takano
  Adds default ctor for TSymbol::TCompareFunctor
  Renames llvm_types.ll -> Core.ll
  Calls strerror with strict std:: prefix
  Fixes correct padding in Image::readObject():byteObject
  Removes trailing whitespaces
  Prettifies memory.h
  Autodetects 64 bit architecture and sets -m32
  Add workaround for JIT compiler to handle soft compiled methods
Dec 28, 2012
dk -> default