| // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package com.android.tools.r8.naming; |
| |
| import com.android.tools.r8.naming.ClassNamingForNameMapper.MappedRange; |
| import java.util.List; |
| |
| public class MappedRangeUtils { |
| |
| static int addAllInlineFramesUntilOutermostCaller( |
| List<MappedRange> mappedRanges, int index, List<MappedRange> listToAdd) { |
| assert index < mappedRanges.size(); |
| while (isInlineMappedRange(mappedRanges, index)) { |
| listToAdd.add(mappedRanges.get(index++)); |
| } |
| listToAdd.add(mappedRanges.get(index++)); |
| return index; |
| } |
| |
| static boolean isInlineMappedRange(List<MappedRange> mappedRanges, int index) { |
| // We are comparing against the next entry so we need a buffer of one. |
| if (index + 1 >= mappedRanges.size()) { |
| return false; |
| } |
| return isInlineMappedRange(mappedRanges.get(index), mappedRanges.get(index + 1)); |
| } |
| |
| static boolean isInlineMappedRange(MappedRange previous, MappedRange next) { |
| if (previous.minifiedRange == null) { |
| return false; |
| } |
| return next.getOriginalRangeOrIdentity() != null |
| && previous.minifiedRange.equals(next.minifiedRange); |
| } |
| |
| // TODO(b/286781273): Remove when fixed. |
| @Deprecated() |
| static boolean isInlineMappedRangeForComposition(List<MappedRange> mappedRanges, int index) { |
| // We are comparing against the next entry so we need a buffer of one. |
| if (index + 1 >= mappedRanges.size()) { |
| return false; |
| } |
| return isInlineMappedRangeForComposition(mappedRanges.get(index), mappedRanges.get(index + 1)); |
| } |
| |
| // TODO(b/286781273): Remove when fixed. |
| @Deprecated |
| static boolean isInlineMappedRangeForComposition(MappedRange previous, MappedRange next) { |
| if (previous.minifiedRange == null) { |
| return false; |
| } |
| return next.getOriginalRangeOrIdentity() != null |
| // TODO(b/286781273): As a temporary fix, we check for the original range being cardinal. |
| && next.getOriginalRangeOrIdentity().isCardinal |
| && previous.minifiedRange.equals(next.minifiedRange); |
| } |
| } |