core/vm: added JIT segmenting / optimisations

* multi-push segments
* static jumps segments
This commit is contained in:
Jeffrey Wilcke
2015-10-06 23:39:43 +02:00
parent 9d61d78de6
commit b196278044
9 changed files with 205 additions and 5 deletions

View File

@ -23,6 +23,18 @@ import (
// OpCode is an EVM opcode
type OpCode byte
func (op OpCode) IsPush() bool {
switch op {
case PUSH1, PUSH2, PUSH3, PUSH4, PUSH5, PUSH6, PUSH7, PUSH8, PUSH9, PUSH10, PUSH11, PUSH12, PUSH13, PUSH14, PUSH15, PUSH16, PUSH17, PUSH18, PUSH19, PUSH20, PUSH21, PUSH22, PUSH23, PUSH24, PUSH25, PUSH26, PUSH27, PUSH28, PUSH29, PUSH30, PUSH31, PUSH32:
return true
}
return false
}
func (op OpCode) IsStaticJump() bool {
return op == JUMP
}
const (
// 0x0 range - arithmetic ops
STOP OpCode = iota