1 /* 2 * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 3 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. 4 * 5 * 6 * 7 * 8 * 9 * 10 * 11 * 12 * 13 * 14 * 15 * 16 * 17 * 18 * 19 * 20 * 21 * 22 * 23 */ 24 25 package sun.jvm.hotspot.oops; 26 27 import java.io.*; 28 import java.util.*; 29 import sun.jvm.hotspot.debugger.*; 30 import sun.jvm.hotspot.runtime.*; 31 import sun.jvm.hotspot.types.*; 32 import sun.jvm.hotspot.utilities.*; 33 34 // ArrayData 35 // 36 // A ArrayData is a base class for accessing profiling data which does 37 // not have a statically known size. It consists of an array length 38 // and an array start. 39 abstract class ArrayData extends ProfileData { 40 41 static final int arrayLenOffSet = 0; 42 static final int arrayStartOffSet = 1; 43 44 int arrayUintAt(int index) { 45 int aindex = index + arrayStartOffSet; 46 return uintAt(aindex); 47 } 48 int arrayIntAt(int index) { 49 int aindex = index + arrayStartOffSet; 50 return intAt(aindex); 51 } 52 Oop arrayOopAt(int index) { 53 int aindex = index + arrayStartOffSet; 54 return oopAt(aindex); 55 } 56 57 // Code generation support for subclasses. 58 static int arrayElementOffset(int index) { 59 return cellOffset(arrayStartOffSet + index); 60 } 61 62 ArrayData(DataLayout layout) { 63 super(layout); 64 } 65 66 static int staticCellCount() { 67 return -1; 68 } 69 70 int arrayLen() { 71 return intAt(arrayLenOffSet); 72 } 73 74 public int cellCount() { 75 return arrayLen() + 1; 76 } 77 78 // Code generation support 79 static int arrayLenOffset() { 80 return cellOffset(arrayLenOffSet); 81 } 82 static int arrayStartOffset() { 83 return cellOffset(arrayStartOffSet); 84 } 85 86 }