MCPcopy Create free account
hub / github.com/chain/txvm / exec

Method exec

protocol/txvm/vm.go:137–156  ·  view source on GitHub ↗
(prog []byte)

Source from the content-addressed store, hash-verified

135}
136
137func (vm *VM) exec(prog []byte) {
138 if len(vm.run.prog) > 0 {
139 vm.runstack = append(vm.runstack, vm.run)
140 defer func() {
141 vm.run = vm.runstack[len(vm.runstack)-1]
142 vm.runstack = vm.runstack[:len(vm.runstack)-1]
143 }()
144 }
145 vm.run.prog = prog
146 vm.run.pc = 0
147 for vm.run.pc < int64(len(vm.run.prog)) {
148 if vm.unwinding {
149 return
150 }
151 vm.step()
152 if vm.Finalized && vm.stopAfterFinalize {
153 break
154 }
155 }
156}
157
158func (vm *VM) step() {
159 opcode, data, n, err := op.DecodeInst(vm.run.prog[vm.run.pc:])

Callers 5

recoverExecMethod · 0.95
validateMethod · 0.95
opCallFunction · 0.80
opExecFunction · 0.80
ResumerFunction · 0.80

Calls 1

stepMethod · 0.95

Tested by 1

recoverExecMethod · 0.76