Exec implements the Interpretable interface method and pushes a new frame onto the stack for the duration of the block execution.
(frame *interpreter.ExecutionFrame)
| 314 | // Exec implements the Interpretable interface method and pushes a new frame onto the |
| 315 | // stack for the duration of the block execution. |
| 316 | func (b *constantBlock) Exec(frame *interpreter.ExecutionFrame) ref.Val { |
| 317 | sa := constantSlotActivation{Activation: frame.Activation, slots: b.slots, slotCount: b.slotCount} |
| 318 | sa.frame = frame.Push(sa) |
| 319 | defer sa.frame.Pop() |
| 320 | return b.expr.Exec(sa.frame) |
| 321 | } |
| 322 | |
| 323 | // Eval implements the interpreter.Interpretable interface method, and will proxy @index prefixed variable |
| 324 | // lookups into a set of constant slots determined from the plan step. |