(node)
| 6787 | } |
| 6788 | } |
| 6789 | markReturnNode(node) { |
| 6790 | if (this._marked.has(node)) { |
| 6791 | return false; |
| 6792 | } |
| 6793 | torch._C.AT_ASSERT(node.owningBlock().return_node() === node); |
| 6794 | const outerNode = node.owningBlock().owningNode(); |
| 6795 | if (outerNode === null || outerNode.kind() === 'prim::Reverse') { |
| 6796 | return this.mark(node); |
| 6797 | } |
| 6798 | if (outerNode.kind() === 'prim::Loop' || outerNode.kind() === 'c10::onnx::Loop') { |
| 6799 | const loop = new torch._C.LoopView(outerNode); |
| 6800 | for (let i = 0; i < loop.carriedOutputs().length; i++) { |
| 6801 | if (outerNode.kind() === 'onnx::Loop') { |
| 6802 | this._liveValues.add(loop.bodyCarriedOutputs()[i]); |
| 6803 | continue; |
| 6804 | } |
| 6805 | const innerInput = loop.bodyCarriedInputs()[i]; |
| 6806 | const innerOutput = loop.bodyCarriedOutputs()[i]; |
| 6807 | const outerOutput = loop.carriedOutputs()[i]; |
| 6808 | if (this._liveValues.has(outerOutput) || innerInput.hasUses()) { |
| 6809 | this._liveValues.add(innerOutput); |
| 6810 | } |
| 6811 | } |
| 6812 | this._liveValues.add(loop.nextCond()); |
| 6813 | } else { |
| 6814 | torch._C.AT_ASSERT(outerNode.outputs().length === node.inputs().length); |
| 6815 | for (let i = 0; i < outerNode.outputs().length; i++) { |
| 6816 | const innerOutput = node.inputs()[i]; |
| 6817 | const outerOutput = outerNode.outputs()[i]; |
| 6818 | if (!this._liveValues.has(outerOutput)) { |
| 6819 | this._liveValues.add(innerOutput); |
| 6820 | } |
| 6821 | } |
| 6822 | } |
| 6823 | this._marked.add(node); |
| 6824 | return true; |
| 6825 | } |
| 6826 | markLoop(node) { |
| 6827 | torch._C.TORCH_INTERNAL_ASSERT(node.kind() === 'prim::Loop'); |
| 6828 | let marked = false; |
no test coverage detected