| 5164 | } |
| 5165 | |
| 5166 | function removeCommonRoots(stacks) { |
| 5167 | var current = stacks[0]; |
| 5168 | for (var i = 1; i < stacks.length; ++i) { |
| 5169 | var prev = stacks[i]; |
| 5170 | var currentLastIndex = current.length - 1; |
| 5171 | var currentLastLine = current[currentLastIndex]; |
| 5172 | var commonRootMeetPoint = -1; |
| 5173 | |
| 5174 | for (var j = prev.length - 1; j >= 0; --j) { |
| 5175 | if (prev[j] === currentLastLine) { |
| 5176 | commonRootMeetPoint = j; |
| 5177 | break; |
| 5178 | } |
| 5179 | } |
| 5180 | |
| 5181 | for (var j = commonRootMeetPoint; j >= 0; --j) { |
| 5182 | var line = prev[j]; |
| 5183 | if (current[currentLastIndex] === line) { |
| 5184 | current.pop(); |
| 5185 | currentLastIndex--; |
| 5186 | } else { |
| 5187 | break; |
| 5188 | } |
| 5189 | } |
| 5190 | current = prev; |
| 5191 | } |
| 5192 | } |
| 5193 | |
| 5194 | function cleanStack(stack) { |
| 5195 | var ret = []; |