()
| 156 | } |
| 157 | |
| 158 | func (vm *VM) step() { |
| 159 | opcode, data, n, err := op.DecodeInst(vm.run.prog[vm.run.pc:]) |
| 160 | if err != nil { |
| 161 | panic(vmError(err)) |
| 162 | } |
| 163 | vm.opcode = opcode |
| 164 | vm.data = data |
| 165 | vm.runHooks(vm.beforeStep) |
| 166 | vm.charge(1) |
| 167 | vm.run.pc += n |
| 168 | switch { |
| 169 | case op.IsSmallIntOp(opcode): |
| 170 | vm.push(Int(opcode - op.MinSmallInt)) |
| 171 | case op.IsPushdataOp(opcode): |
| 172 | d := Bytes(data) |
| 173 | vm.chargeCreate(d) |
| 174 | vm.push(d) |
| 175 | default: |
| 176 | f := opFuncs[opcode] |
| 177 | f(vm) |
| 178 | } |
| 179 | vm.runHooks(vm.afterStep) |
| 180 | } |
| 181 | |
| 182 | func (vm *VM) charge(n int64) { |
| 183 | vm.runlimit -= n |
no test coverage detected