(v Data)
| 285 | } |
| 286 | |
| 287 | func (vm *VM) chargeCopy(v Data) { |
| 288 | var ( |
| 289 | cost int64 |
| 290 | ok = true |
| 291 | ) |
| 292 | |
| 293 | switch val := v.(type) { |
| 294 | case Bytes: |
| 295 | cost, ok = checked.AddInt64(1, int64(len(val))) |
| 296 | case Tuple: |
| 297 | cost, ok = checked.AddInt64(1, int64(len(val))) |
| 298 | } |
| 299 | if !ok { |
| 300 | panic(errors.Wrap(ErrIntOverflow, "charging copy cost")) |
| 301 | } |
| 302 | vm.charge(cost) |
| 303 | } |
| 304 | |
| 305 | // perr must be non-nil |
| 306 | func (vm *VM) recoverError(perr *error) { |