This class may be removed in the future. Consider the replacements in JEP 193 'Variable Handles': http://openjdk.java.net/jeps/193
/** * Reports the scale factor for addressing elements in the storage * allocation of a given array class. */ public static int arrayIndexScale(Class<?> clazz) { return unsafe != null ? unsafe.arrayIndexScale(clazz) : -1; }
public static int arrayIndexScale( Class klass ) { int scale = unsafe.arrayIndexScale( klass ); if ( scale == 0 ) { throw new AssertionError( "Array type too narrow for unsafe access: " + klass ); } return scale; }
/** * Reports the scale factor for addressing elements in the storage * allocation of a given array class. */ public static int arrayIndexScale(Class<?> clazz) { return unsafe != null ? unsafe.arrayIndexScale(clazz) : -1; }
public final int arrayIndexScale(Class<?> clazz) { return unsafe.arrayIndexScale(clazz); }
public int arrayScaleIndex(Class c) { return this.unsafe.arrayIndexScale(c); }
U.arrayIndexScale(Object[].class), U.arrayIndexScale(boolean[].class), U.arrayIndexScale(byte[].class), U.arrayIndexScale(char[].class), U.arrayIndexScale(short[].class), U.arrayIndexScale(int[].class), U.arrayIndexScale(float[].class), U.arrayIndexScale(long[].class), U.arrayIndexScale(double[].class) );
long last = 0; int offset = unsafe.arrayBaseOffset(objects.getClass()); int scale = unsafe.arrayIndexScale(objects.getClass()); switch (scale) { case 4:
int scale = VMSupport.U.arrayIndexScale(Class.forName(data.arrayClass()));
return (int) (maxOffset + unsafe.arrayIndexScale(arrayType));
Class<?> klazz = obj.getClass(); int base = UNSAFE.arrayBaseOffset(klazz); int scale = UNSAFE.arrayIndexScale(klazz); long size = base + (scale * Array.getLength(obj)); size += CURRENT_JVM_INFORMATION.getFieldOffsetAdjustment();
private static long arrayObjectIndexScale() { if(U == null) return 0; return U.arrayIndexScale(Object[].class); }
/** * Reports the scale factor for addressing elements in the storage * allocation of a given array class. */ public static int arrayIndexScale(Class<?> clazz) { return unsafe != null ? unsafe.arrayIndexScale(clazz) : -1; }
public int arrayScaleIndex(Class c) { return this.unsafe.arrayIndexScale(c); } public long fieldOffset(Field f) {
/** * Reports the scale factor for addressing elements in the storage * allocation of a given array class. */ public static int arrayIndexScale(Class<?> clazz) { return unsafe != null ? unsafe.arrayIndexScale(clazz) : -1; }
private static long arrayObjectIndexScale() { if(U == null) return 0; return U.arrayIndexScale(Object[].class); }
@Override public int arrayIndexScale(Class<?> arrayClass) { return UNSAFE.arrayIndexScale(arrayClass); }
@Override public int arrayIndexScale(Class<?> arrayClass) { return UNSAFE.arrayIndexScale(arrayClass); }
@Override public int arrayIndexScale(String arrayComponentKlass) { if (arrayComponentKlass.equals("byte")) return U.arrayIndexScale(byte[].class); if (arrayComponentKlass.equals("boolean")) return U.arrayIndexScale(boolean[].class); if (arrayComponentKlass.equals("short")) return U.arrayIndexScale(short[].class); if (arrayComponentKlass.equals("char")) return U.arrayIndexScale(char[].class); if (arrayComponentKlass.equals("int")) return U.arrayIndexScale(int[].class); if (arrayComponentKlass.equals("float")) return U.arrayIndexScale(float[].class); if (arrayComponentKlass.equals("long")) return U.arrayIndexScale(long[].class); if (arrayComponentKlass.equals("double")) return U.arrayIndexScale(double[].class); return U.arrayIndexScale(Object[].class); }
public static int arrayIndexScale( Class klass ) { int scale = unsafe.arrayIndexScale( klass ); if ( scale == 0 ) { throw new AssertionError( "Array type too narrow for unsafe access: " + klass ); } return scale; }
public static void main(String[] args) { sun.misc.Unsafe unsafe = org.apache.ignite.internal.util.GridUnsafe.unsafe(); System.out.println(unsafe.arrayBaseOffset(byte[].class)); System.out.println(unsafe.arrayIndexScale(byte[].class)); }