()
| 1335 | } |
| 1336 | |
| 1337 | func (c *compiler) optimize() { |
| 1338 | for i, op := range c.bytecode { |
| 1339 | switch op { |
| 1340 | case OpJumpIfTrue, OpJumpIfFalse, OpJumpIfNil, OpJumpIfNotNil: |
| 1341 | target := i + c.arguments[i] + 1 |
| 1342 | for target < len(c.bytecode) && c.bytecode[target] == op { |
| 1343 | target += c.arguments[target] + 1 |
| 1344 | } |
| 1345 | c.arguments[i] = target - i - 1 |
| 1346 | } |
| 1347 | } |
| 1348 | } |
| 1349 | |
| 1350 | func kind(t reflect.Type) reflect.Kind { |
| 1351 | if t == nil { |