| 743 | } |
| 744 | |
| 745 | void GDScriptByteCodeGenerator::write_end_or(const Address &p_target) { |
| 746 | // If here means both operands are false. |
| 747 | append_opcode(GDScriptFunction::OPCODE_ASSIGN_FALSE); |
| 748 | append(p_target); |
| 749 | // Jump away from the success condition. |
| 750 | append_opcode(GDScriptFunction::OPCODE_JUMP); |
| 751 | append(opcodes.size() + 3); |
| 752 | // Here it means one of operands is true. |
| 753 | patch_jump(logic_op_jump_pos1.back()->get()); |
| 754 | patch_jump(logic_op_jump_pos2.back()->get()); |
| 755 | logic_op_jump_pos1.pop_back(); |
| 756 | logic_op_jump_pos2.pop_back(); |
| 757 | append_opcode(GDScriptFunction::OPCODE_ASSIGN_TRUE); |
| 758 | append(p_target); |
| 759 | } |
| 760 | |
| 761 | void GDScriptByteCodeGenerator::write_start_ternary(const Address &p_target) { |
| 762 | ternary_result.push_back(p_target); |
no test coverage detected