| // Copyright (c) 2016, 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 arrayaccess; |
| |
| public class ArrayAccess { |
| |
| public static int loadStoreBoolean(int i, boolean b) { |
| boolean[] array = new boolean[i + 2]; |
| array[i] = b; |
| array[i + 1] = !array[i]; |
| return (array[i] ? 1 : 0) + (array[i + 1] ? 1 : 0); |
| } |
| |
| public static int loadStoreByte(int i) { |
| byte[] array = new byte[i + 2]; |
| array[i] = 1; |
| array[i + 1] = (byte) (array[i] + (byte) 1); |
| return array[i] + array[i + 1]; |
| } |
| |
| public static int loadStoreChar(int i) { |
| char[] array = new char[i + 2]; |
| array[i] = 1; |
| array[i + 1] = (char) (array[i] + (char) 1); |
| return array[i] + array[i + 1]; |
| } |
| |
| public static int loadStoreShort(int i) { |
| short[] array = new short[i + 2]; |
| array[i] = 1; |
| array[i + 1] = (short) (array[i] + (short) 1); |
| return array[i] + array[i + 1]; |
| } |
| |
| public static float loadStoreFloat(int i) { |
| float[] array = new float[i + 2]; |
| array[i] = 1.0f; |
| array[i + 1] = array[i] + 1.0f; |
| return array[i] + array[i + 1]; |
| } |
| |
| public static double loadStoreDouble(int i) { |
| double[] array = new double[i + 2]; |
| array[i] = 1.0; |
| array[i + 1] = array[i] + 1.0; |
| return array[i] + array[i + 1]; |
| } |
| |
| public static int loadStoreObject(int i, Object o) { |
| Object[] array = new Object[i + 2]; |
| array[i] = o; |
| array[i + 1] = o; |
| return 1 + (array[i].hashCode() - array[i + 1].hashCode()); |
| } |
| |
| public static int loadStoreArray(int i, Object[] os) { |
| Object[][] array = new Object[i + 2][]; |
| array[i] = os; |
| array[i + 1] = os; |
| return array[i].length + array[i + 1].length; |
| } |
| |
| public static void main(String[] args) { |
| int i = 0; |
| i += loadStoreBoolean(1, true); |
| i += loadStoreByte(0); |
| i += loadStoreChar(1); |
| i += loadStoreShort(2); |
| i += loadStoreFloat(3); |
| i += loadStoreDouble(4); |
| i += loadStoreObject(1, "foo"); |
| i += loadStoreArray(1, new Object[10]); |
| System.out.println("37=" + i); |
| } |
| } |