19 if (variable ==
nullptr) {
24 destruct_instructions.
add(variable, &destruct_instr);
32 if (variable ==
nullptr) {
37 if (destruct_instr ==
nullptr) {
43 while (!destruct_instr->
prev().is_empty()) {
47 cursor.
set_next(procedure, after_destruct_instr);
53 destruct_instr->
set_next(next_instr);
63 if (prev_cursors.
size() != 1) {
69 if (current_instr ==
nullptr) {
bool add(const Key &key, const Value &value)
Value pop_default(const Key &key, const Value &default_value)
constexpr int64_t size() const
void set_next(MFInstruction *instruction)
Span< MFVariable * > params()
void set_next(MFInstruction *instruction)
MFInstruction * instruction() const
void set_next(MFProcedure &procedure, MFInstruction *new_instruction) const
MFInstructionType type() const
Span< MFInstructionCursor > prev() const
void move_destructs_up(MFProcedure &procedure, MFInstruction &block_end_instr)