Skip to content

Instantly share code, notes, and snippets.

@Matthewacon
Created April 2, 2016 19:36
Show Gist options
  • Save Matthewacon/4b2b8d9513311073350733da6764d451 to your computer and use it in GitHub Desktop.
Save Matthewacon/4b2b8d9513311073350733da6764d451 to your computer and use it in GitHub Desktop.
Why Oracle...
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
package sun.reflect;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import sun.reflect.FieldAccessor;
import sun.reflect.UnsafeBooleanFieldAccessorImpl;
import sun.reflect.UnsafeByteFieldAccessorImpl;
import sun.reflect.UnsafeCharacterFieldAccessorImpl;
import sun.reflect.UnsafeDoubleFieldAccessorImpl;
import sun.reflect.UnsafeFieldAccessorImpl;
import sun.reflect.UnsafeFloatFieldAccessorImpl;
import sun.reflect.UnsafeIntegerFieldAccessorImpl;
import sun.reflect.UnsafeLongFieldAccessorImpl;
import sun.reflect.UnsafeObjectFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedBooleanFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedByteFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedCharacterFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedDoubleFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedFloatFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedIntegerFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedLongFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedObjectFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedShortFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticBooleanFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticByteFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticCharacterFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticDoubleFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticFloatFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticIntegerFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticLongFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticObjectFieldAccessorImpl;
import sun.reflect.UnsafeQualifiedStaticShortFieldAccessorImpl;
import sun.reflect.UnsafeShortFieldAccessorImpl;
import sun.reflect.UnsafeStaticBooleanFieldAccessorImpl;
import sun.reflect.UnsafeStaticByteFieldAccessorImpl;
import sun.reflect.UnsafeStaticCharacterFieldAccessorImpl;
import sun.reflect.UnsafeStaticDoubleFieldAccessorImpl;
import sun.reflect.UnsafeStaticFloatFieldAccessorImpl;
import sun.reflect.UnsafeStaticIntegerFieldAccessorImpl;
import sun.reflect.UnsafeStaticLongFieldAccessorImpl;
import sun.reflect.UnsafeStaticObjectFieldAccessorImpl;
import sun.reflect.UnsafeStaticShortFieldAccessorImpl;
class UnsafeFieldAccessorFactory {
UnsafeFieldAccessorFactory() {
}
static FieldAccessor newFieldAccessor(Field var0, boolean var1) {
Class var2 = var0.getType();
boolean var3 = Modifier.isStatic(var0.getModifiers());
boolean var4 = Modifier.isFinal(var0.getModifiers());
boolean var5 = Modifier.isVolatile(var0.getModifiers());
boolean var6 = var4 || var5;
boolean var7 = var4 && (var3 || !var1);
if(var3) {
UnsafeFieldAccessorImpl.unsafe.ensureClassInitialized(var0.getDeclaringClass());
return (FieldAccessor)(!var6?(var2 == Boolean.TYPE?new UnsafeStaticBooleanFieldAccessorImpl(var0):(var2 == Byte.TYPE?new UnsafeStaticByteFieldAccessorImpl(var0):(var2 == Short.TYPE?new UnsafeStaticShortFieldAccessorImpl(var0):(var2 == Character.TYPE?new UnsafeStaticCharacterFieldAccessorImpl(var0):(var2 == Integer.TYPE?new UnsafeStaticIntegerFieldAccessorImpl(var0):(var2 == Long.TYPE?new UnsafeStaticLongFieldAccessorImpl(var0):(var2 == Float.TYPE?new UnsafeStaticFloatFieldAccessorImpl(var0):(var2 == Double.TYPE?new UnsafeStaticDoubleFieldAccessorImpl(var0):new UnsafeStaticObjectFieldAccessorImpl(var0))))))))):(var2 == Boolean.TYPE?new UnsafeQualifiedStaticBooleanFieldAccessorImpl(var0, var7):(var2 == Byte.TYPE?new UnsafeQualifiedStaticByteFieldAccessorImpl(var0, var7):(var2 == Short.TYPE?new UnsafeQualifiedStaticShortFieldAccessorImpl(var0, var7):(var2 == Character.TYPE?new UnsafeQualifiedStaticCharacterFieldAccessorImpl(var0, var7):(var2 == Integer.TYPE?new UnsafeQualifiedStaticIntegerFieldAccessorImpl(var0, var7):(var2 == Long.TYPE?new UnsafeQualifiedStaticLongFieldAccessorImpl(var0, var7):(var2 == Float.TYPE?new UnsafeQualifiedStaticFloatFieldAccessorImpl(var0, var7):(var2 == Double.TYPE?new UnsafeQualifiedStaticDoubleFieldAccessorImpl(var0, var7):new UnsafeQualifiedStaticObjectFieldAccessorImpl(var0, var7))))))))));
} else {
return (FieldAccessor)(!var6?(var2 == Boolean.TYPE?new UnsafeBooleanFieldAccessorImpl(var0):(var2 == Byte.TYPE?new UnsafeByteFieldAccessorImpl(var0):(var2 == Short.TYPE?new UnsafeShortFieldAccessorImpl(var0):(var2 == Character.TYPE?new UnsafeCharacterFieldAccessorImpl(var0):(var2 == Integer.TYPE?new UnsafeIntegerFieldAccessorImpl(var0):(var2 == Long.TYPE?new UnsafeLongFieldAccessorImpl(var0):(var2 == Float.TYPE?new UnsafeFloatFieldAccessorImpl(var0):(var2 == Double.TYPE?new UnsafeDoubleFieldAccessorImpl(var0):new UnsafeObjectFieldAccessorImpl(var0))))))))):(var2 == Boolean.TYPE?new UnsafeQualifiedBooleanFieldAccessorImpl(var0, var7):(var2 == Byte.TYPE?new UnsafeQualifiedByteFieldAccessorImpl(var0, var7):(var2 == Short.TYPE?new UnsafeQualifiedShortFieldAccessorImpl(var0, var7):(var2 == Character.TYPE?new UnsafeQualifiedCharacterFieldAccessorImpl(var0, var7):(var2 == Integer.TYPE?new UnsafeQualifiedIntegerFieldAccessorImpl(var0, var7):(var2 == Long.TYPE?new UnsafeQualifiedLongFieldAccessorImpl(var0, var7):(var2 == Float.TYPE?new UnsafeQualifiedFloatFieldAccessorImpl(var0, var7):(var2 == Double.TYPE?new UnsafeQualifiedDoubleFieldAccessorImpl(var0, var7):new UnsafeQualifiedObjectFieldAccessorImpl(var0, var7))))))))));
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment