diff options
author | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-10-22 03:34:32 +0800 |
---|---|---|
committer | Jeffrey Wilcke <jeffrey@ethereum.org> | 2015-10-22 03:34:32 +0800 |
commit | 58d0752fdd1c7363fb1a127cd7e0a86d7602be02 (patch) | |
tree | 84fffee930e7b6d02599f3910f284b8641c996a0 /core/vm/doc.go | |
parent | 0467a6ceec4973b00c344d2a724f7fb01a6b0aee (diff) | |
parent | 8c855324128fa824bb6a7ea8f4ed1224e727fad0 (diff) | |
download | dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar.gz dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar.bz2 dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar.lz dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar.xz dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.tar.zst dexon-58d0752fdd1c7363fb1a127cd7e0a86d7602be02.zip |
Merge pull request #1883 from obscuren/jit-vm-optimisations
core/vm: JIT segmentation
Diffstat (limited to 'core/vm/doc.go')
-rw-r--r-- | core/vm/doc.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/core/vm/doc.go b/core/vm/doc.go index ab87bf934..debbdb35e 100644 --- a/core/vm/doc.go +++ b/core/vm/doc.go @@ -24,9 +24,12 @@ invokes the JIT VM in a seperate goroutine and compiles the byte code in JIT instructions. The JIT VM, when invoked, loops around a set of pre-defined instructions until -it either runs of gas, causes an internal error, returns or stops. At a later -stage the JIT VM will see some additional features that will cause sets of -instructions to be compiled down to segments. Segments are sets of instructions -that can be run in one go saving precious time during execution. +it either runs of gas, causes an internal error, returns or stops. + +The JIT optimiser attempts to pre-compile instructions in to chunks or segments +such as multiple PUSH operations and static JUMPs. It does this by analysing the +opcodes and attempts to match certain regions to known sets. Whenever the +optimiser finds said segments it creates a new instruction and replaces the +first occurrence in the sequence. */ package vm |