blob: f73fd91fd5fbb2aa02caf884fee828a647732e47 [file] [log] [blame]
Mads Ager418d1ca2017-05-22 09:35:49 +02001// Copyright (c) 2016, the R8 project authors. Please see the AUTHORS file
2// for details. All rights reserved. Use of this source code is governed by a
3// BSD-style license that can be found in the LICENSE file.
4package arrayaccess;
5
6public class ArrayAccess {
7
8 public static int loadStoreBoolean(int i, boolean b) {
9 boolean[] array = new boolean[i + 2];
10 array[i] = b;
11 array[i + 1] = !array[i];
12 return (array[i] ? 1 : 0) + (array[i + 1] ? 1 : 0);
13 }
14
15 public static int loadStoreByte(int i) {
16 byte[] array = new byte[i + 2];
17 array[i] = 1;
18 array[i + 1] = (byte) (array[i] + (byte) 1);
19 return array[i] + array[i + 1];
20 }
21
22 public static int loadStoreChar(int i) {
23 char[] array = new char[i + 2];
24 array[i] = 1;
25 array[i + 1] = (char) (array[i] + (char) 1);
26 return array[i] + array[i + 1];
27 }
28
29 public static int loadStoreShort(int i) {
30 short[] array = new short[i + 2];
31 array[i] = 1;
32 array[i + 1] = (short) (array[i] + (short) 1);
33 return array[i] + array[i + 1];
34 }
35
36 public static float loadStoreFloat(int i) {
37 float[] array = new float[i + 2];
38 array[i] = 1.0f;
39 array[i + 1] = array[i] + 1.0f;
40 return array[i] + array[i + 1];
41 }
42
43 public static double loadStoreDouble(int i) {
44 double[] array = new double[i + 2];
45 array[i] = 1.0;
46 array[i + 1] = array[i] + 1.0;
47 return array[i] + array[i + 1];
48 }
49
50 public static int loadStoreObject(int i, Object o) {
51 Object[] array = new Object[i + 2];
52 array[i] = o;
53 array[i + 1] = o;
54 return 1 + (array[i].hashCode() - array[i + 1].hashCode());
55 }
56
57 public static int loadStoreArray(int i, Object[] os) {
58 Object[][] array = new Object[i + 2][];
59 array[i] = os;
60 array[i + 1] = os;
61 return array[i].length + array[i + 1].length;
62 }
63
64 public static void main(String[] args) {
65 int i = 0;
66 i += loadStoreBoolean(1, true);
67 i += loadStoreByte(0);
68 i += loadStoreChar(1);
69 i += loadStoreShort(2);
70 i += loadStoreFloat(3);
71 i += loadStoreDouble(4);
72 i += loadStoreObject(1, "foo");
73 i += loadStoreArray(1, new Object[10]);
74 System.out.println("37=" + i);
75 }
76}