| // Copyright (c) 2019, 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.ir.analysis.type; |
| |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| import com.android.tools.r8.TestBase; |
| import com.android.tools.r8.graph.DexItemFactory; |
| import org.junit.Test; |
| |
| public class TypeElementWidthTest extends TestBase { |
| |
| @Test |
| public void testArrayWidth() { |
| ArrayTypeElement arrayType = |
| ArrayTypeElement.create(TypeElement.getInt(), Nullability.maybeNull()); |
| assertFalse(arrayType.isSinglePrimitive()); |
| assertFalse(arrayType.isWidePrimitive()); |
| assertEquals(1, arrayType.requiredRegisters()); |
| } |
| |
| @Test |
| public void testBooleanWidth() { |
| assertTrue(TypeElement.getBoolean().isSinglePrimitive()); |
| assertFalse(TypeElement.getBoolean().isWidePrimitive()); |
| assertEquals(1, TypeElement.getBoolean().requiredRegisters()); |
| } |
| |
| @Test |
| public void testByteWidth() { |
| assertTrue(TypeElement.getByte().isSinglePrimitive()); |
| assertFalse(TypeElement.getByte().isWidePrimitive()); |
| assertEquals(1, TypeElement.getByte().requiredRegisters()); |
| } |
| |
| @Test |
| public void testCharWidth() { |
| assertTrue(TypeElement.getChar().isSinglePrimitive()); |
| assertFalse(TypeElement.getChar().isWidePrimitive()); |
| assertEquals(1, TypeElement.getChar().requiredRegisters()); |
| } |
| |
| @Test |
| public void testDoubleWidth() { |
| assertTrue(TypeElement.getDouble().isWidePrimitive()); |
| assertFalse(TypeElement.getDouble().isSinglePrimitive()); |
| assertEquals(2, TypeElement.getDouble().requiredRegisters()); |
| } |
| |
| @Test |
| public void testFloatWidth() { |
| assertTrue(TypeElement.getFloat().isSinglePrimitive()); |
| assertFalse(TypeElement.getFloat().isWidePrimitive()); |
| assertEquals(1, TypeElement.getFloat().requiredRegisters()); |
| } |
| |
| @Test |
| public void testIntWidth() { |
| assertTrue(TypeElement.getInt().isSinglePrimitive()); |
| assertFalse(TypeElement.getInt().isWidePrimitive()); |
| assertEquals(1, TypeElement.getInt().requiredRegisters()); |
| } |
| |
| @Test |
| public void testLongWidth() { |
| assertTrue(TypeElement.getLong().isWidePrimitive()); |
| assertFalse(TypeElement.getLong().isSinglePrimitive()); |
| assertEquals(2, TypeElement.getLong().requiredRegisters()); |
| } |
| |
| @Test |
| public void testReferenceWidth() { |
| DexItemFactory dexItemFactory = new DexItemFactory(); |
| ClassTypeElement referenceType = |
| ClassTypeElement.createForD8(dexItemFactory.objectType, Nullability.maybeNull()); |
| assertFalse(referenceType.isSinglePrimitive()); |
| assertFalse(referenceType.isWidePrimitive()); |
| assertEquals(1, referenceType.requiredRegisters()); |
| } |
| |
| @Test |
| public void testShortWidth() { |
| assertTrue(TypeElement.getShort().isSinglePrimitive()); |
| assertFalse(TypeElement.getShort().isWidePrimitive()); |
| assertEquals(1, TypeElement.getShort().requiredRegisters()); |
| } |
| } |