blob: 421709d0a6845801902d9a916bb3c4a3b5e81563 [file] [log] [blame]
// 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);
}
}