aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/opcodes.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <geffobscura@gmail.com>2015-10-07 05:39:43 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2015-10-17 04:30:42 +0800
commitb19627804400901ba003f6e401366cb7d3c4290f (patch)
tree0fbfa3f118df85737b72764b0765a22cbf4c7b2a /core/vm/opcodes.go
parent9d61d78de6ad20822b2b48d6c4e3779369ea7331 (diff)
downloadgo-tangerine-b19627804400901ba003f6e401366cb7d3c4290f.tar.gz
go-tangerine-b19627804400901ba003f6e401366cb7d3c4290f.tar.zst
go-tangerine-b19627804400901ba003f6e401366cb7d3c4290f.zip
core/vm: added JIT segmenting / optimisations
* multi-push segments * static jumps segments
Diffstat (limited to 'core/vm/opcodes.go')
-rw-r--r--core/vm/opcodes.go12
1 files changed, 12 insertions, 0 deletions
diff --git a/core/vm/opcodes.go b/core/vm/opcodes.go
index 986c35ef8..46905baac 100644
--- a/core/vm/opcodes.go
+++ b/core/vm/opcodes.go
@@ -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