560 lines
18 KiB
Java
560 lines
18 KiB
Java
package com.google.android.gms.internal.measurement;
|
|
|
|
import java.lang.reflect.Field;
|
|
import java.nio.Buffer;
|
|
import java.nio.ByteBuffer;
|
|
import java.nio.ByteOrder;
|
|
import java.security.AccessController;
|
|
import java.util.logging.Level;
|
|
import java.util.logging.Logger;
|
|
import libcore.io.Memory;
|
|
import sun.misc.Unsafe;
|
|
|
|
/* loaded from: classes.dex */
|
|
final class zzxj {
|
|
private static final Logger a = Logger.getLogger(zzxj.class.getName());
|
|
private static final Unsafe b = d();
|
|
private static final Class<?> c = zztb.b();
|
|
private static final boolean d = d(Long.TYPE);
|
|
private static final boolean e = d(Integer.TYPE);
|
|
private static final zzd f;
|
|
private static final boolean g;
|
|
private static final boolean h;
|
|
private static final long i;
|
|
private static final long j;
|
|
private static final boolean k;
|
|
|
|
static final class zza extends zzd {
|
|
zza(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(long j, byte b) {
|
|
Memory.pokeByte((int) (j & (-1)), b);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final boolean c(Object obj, long j) {
|
|
return zzxj.k ? zzxj.i(obj, j) : zzxj.j(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final float d(Object obj, long j) {
|
|
return Float.intBitsToFloat(a(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final double e(Object obj, long j) {
|
|
return Double.longBitsToDouble(b(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final byte f(Object obj, long j) {
|
|
return zzxj.k ? zzxj.g(obj, j) : zzxj.h(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, byte b) {
|
|
if (zzxj.k) {
|
|
zzxj.a(obj, j, b);
|
|
} else {
|
|
zzxj.b(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, boolean z) {
|
|
if (zzxj.k) {
|
|
zzxj.b(obj, j, z);
|
|
} else {
|
|
zzxj.c(obj, j, z);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, float f) {
|
|
a(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, double d) {
|
|
a(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(byte[] bArr, long j, long j2, long j3) {
|
|
Memory.pokeByteArray((int) (j2 & (-1)), bArr, (int) j, (int) j3);
|
|
}
|
|
}
|
|
|
|
static final class zzb extends zzd {
|
|
zzb(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(long j, byte b) {
|
|
Memory.pokeByte(j, b);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final boolean c(Object obj, long j) {
|
|
return zzxj.k ? zzxj.i(obj, j) : zzxj.j(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final float d(Object obj, long j) {
|
|
return Float.intBitsToFloat(a(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final double e(Object obj, long j) {
|
|
return Double.longBitsToDouble(b(obj, j));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final byte f(Object obj, long j) {
|
|
return zzxj.k ? zzxj.g(obj, j) : zzxj.h(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, byte b) {
|
|
if (zzxj.k) {
|
|
zzxj.a(obj, j, b);
|
|
} else {
|
|
zzxj.b(obj, j, b);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, boolean z) {
|
|
if (zzxj.k) {
|
|
zzxj.b(obj, j, z);
|
|
} else {
|
|
zzxj.c(obj, j, z);
|
|
}
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, float f) {
|
|
a(obj, j, Float.floatToIntBits(f));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, double d) {
|
|
a(obj, j, Double.doubleToLongBits(d));
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(byte[] bArr, long j, long j2, long j3) {
|
|
Memory.pokeByteArray(j2, bArr, (int) j, (int) j3);
|
|
}
|
|
}
|
|
|
|
static final class zzc extends zzd {
|
|
zzc(Unsafe unsafe) {
|
|
super(unsafe);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(long j, byte b) {
|
|
this.a.putByte(j, b);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final boolean c(Object obj, long j) {
|
|
return this.a.getBoolean(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final float d(Object obj, long j) {
|
|
return this.a.getFloat(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final double e(Object obj, long j) {
|
|
return this.a.getDouble(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final byte f(Object obj, long j) {
|
|
return this.a.getByte(obj, j);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, byte b) {
|
|
this.a.putByte(obj, j, b);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, boolean z) {
|
|
this.a.putBoolean(obj, j, z);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, float f) {
|
|
this.a.putFloat(obj, j, f);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(Object obj, long j, double d) {
|
|
this.a.putDouble(obj, j, d);
|
|
}
|
|
|
|
@Override // com.google.android.gms.internal.measurement.zzxj.zzd
|
|
public final void a(byte[] bArr, long j, long j2, long j3) {
|
|
this.a.copyMemory(bArr, zzxj.i + j, (Object) null, j2, j3);
|
|
}
|
|
}
|
|
|
|
static abstract class zzd {
|
|
Unsafe a;
|
|
|
|
zzd(Unsafe unsafe) {
|
|
this.a = unsafe;
|
|
}
|
|
|
|
public final int a(Object obj, long j) {
|
|
return this.a.getInt(obj, j);
|
|
}
|
|
|
|
public abstract void a(long j, byte b);
|
|
|
|
public abstract void a(Object obj, long j, byte b);
|
|
|
|
public abstract void a(Object obj, long j, double d);
|
|
|
|
public abstract void a(Object obj, long j, float f);
|
|
|
|
public abstract void a(Object obj, long j, boolean z);
|
|
|
|
public abstract void a(byte[] bArr, long j, long j2, long j3);
|
|
|
|
public final long b(Object obj, long j) {
|
|
return this.a.getLong(obj, j);
|
|
}
|
|
|
|
public abstract boolean c(Object obj, long j);
|
|
|
|
public abstract float d(Object obj, long j);
|
|
|
|
public abstract double e(Object obj, long j);
|
|
|
|
public abstract byte f(Object obj, long j);
|
|
|
|
public final void a(Object obj, long j, int i) {
|
|
this.a.putInt(obj, j, i);
|
|
}
|
|
|
|
public final void a(Object obj, long j, long j2) {
|
|
this.a.putLong(obj, j, j2);
|
|
}
|
|
}
|
|
|
|
static {
|
|
zzd zzdVar;
|
|
zzd zzdVar2 = null;
|
|
if (b != null) {
|
|
if (!zztb.a()) {
|
|
zzdVar2 = new zzc(b);
|
|
} else if (d) {
|
|
zzdVar2 = new zzb(b);
|
|
} else if (e) {
|
|
zzdVar2 = new zza(b);
|
|
}
|
|
}
|
|
f = zzdVar2;
|
|
g = f();
|
|
h = e();
|
|
i = b(byte[].class);
|
|
b(boolean[].class);
|
|
c(boolean[].class);
|
|
b(int[].class);
|
|
c(int[].class);
|
|
b(long[].class);
|
|
c(long[].class);
|
|
b(float[].class);
|
|
c(float[].class);
|
|
b(double[].class);
|
|
c(double[].class);
|
|
b(Object[].class);
|
|
c(Object[].class);
|
|
Field g2 = g();
|
|
j = (g2 == null || (zzdVar = f) == null) ? -1L : zzdVar.a.objectFieldOffset(g2);
|
|
k = ByteOrder.nativeOrder() == ByteOrder.BIG_ENDIAN;
|
|
}
|
|
|
|
private zzxj() {
|
|
}
|
|
|
|
static <T> T a(Class<T> cls) {
|
|
try {
|
|
return (T) b.allocateInstance(cls);
|
|
} catch (InstantiationException e2) {
|
|
throw new IllegalStateException(e2);
|
|
}
|
|
}
|
|
|
|
static boolean b() {
|
|
return h;
|
|
}
|
|
|
|
static boolean c() {
|
|
return g;
|
|
}
|
|
|
|
static float d(Object obj, long j2) {
|
|
return f.d(obj, j2);
|
|
}
|
|
|
|
static double e(Object obj, long j2) {
|
|
return f.e(obj, j2);
|
|
}
|
|
|
|
static Object f(Object obj, long j2) {
|
|
return f.a.getObject(obj, j2);
|
|
}
|
|
|
|
private static Field g() {
|
|
Field a2;
|
|
if (zztb.a() && (a2 = a((Class<?>) Buffer.class, "effectiveDirectAddress")) != null) {
|
|
return a2;
|
|
}
|
|
Field a3 = a((Class<?>) Buffer.class, "address");
|
|
if (a3 == null || a3.getType() != Long.TYPE) {
|
|
return null;
|
|
}
|
|
return a3;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static byte h(Object obj, long j2) {
|
|
return (byte) (a(obj, (-4) & j2) >>> ((int) ((j2 & 3) << 3)));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static boolean i(Object obj, long j2) {
|
|
return g(obj, j2) != 0;
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static boolean j(Object obj, long j2) {
|
|
return h(obj, j2) != 0;
|
|
}
|
|
|
|
private static int b(Class<?> cls) {
|
|
if (h) {
|
|
return f.a.arrayBaseOffset(cls);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
private static int c(Class<?> cls) {
|
|
if (h) {
|
|
return f.a.arrayIndexScale(cls);
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
static Unsafe d() {
|
|
try {
|
|
return (Unsafe) AccessController.doPrivileged(new zzxk());
|
|
} catch (Throwable unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
private static boolean e() {
|
|
Unsafe unsafe = b;
|
|
if (unsafe == null) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = unsafe.getClass();
|
|
cls.getMethod("objectFieldOffset", Field.class);
|
|
cls.getMethod("arrayBaseOffset", Class.class);
|
|
cls.getMethod("arrayIndexScale", Class.class);
|
|
cls.getMethod("getInt", Object.class, Long.TYPE);
|
|
cls.getMethod("putInt", Object.class, Long.TYPE, Integer.TYPE);
|
|
cls.getMethod("getLong", Object.class, Long.TYPE);
|
|
cls.getMethod("putLong", Object.class, Long.TYPE, Long.TYPE);
|
|
cls.getMethod("getObject", Object.class, Long.TYPE);
|
|
cls.getMethod("putObject", Object.class, Long.TYPE, Object.class);
|
|
if (zztb.a()) {
|
|
return true;
|
|
}
|
|
cls.getMethod("getByte", Object.class, Long.TYPE);
|
|
cls.getMethod("putByte", Object.class, Long.TYPE, Byte.TYPE);
|
|
cls.getMethod("getBoolean", Object.class, Long.TYPE);
|
|
cls.getMethod("putBoolean", Object.class, Long.TYPE, Boolean.TYPE);
|
|
cls.getMethod("getFloat", Object.class, Long.TYPE);
|
|
cls.getMethod("putFloat", Object.class, Long.TYPE, Float.TYPE);
|
|
cls.getMethod("getDouble", Object.class, Long.TYPE);
|
|
cls.getMethod("putDouble", Object.class, Long.TYPE, Double.TYPE);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Logger logger = a;
|
|
Level level = Level.WARNING;
|
|
String valueOf = String.valueOf(th);
|
|
StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 71);
|
|
sb.append("platform method missing - proto runtime falling back to safer methods: ");
|
|
sb.append(valueOf);
|
|
logger.logp(level, "com.google.protobuf.UnsafeUtil", "supportsUnsafeArrayOperations", sb.toString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static int a(Object obj, long j2) {
|
|
return f.a(obj, j2);
|
|
}
|
|
|
|
private static boolean f() {
|
|
Unsafe unsafe = b;
|
|
if (unsafe == null) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls = unsafe.getClass();
|
|
cls.getMethod("objectFieldOffset", Field.class);
|
|
cls.getMethod("getLong", Object.class, Long.TYPE);
|
|
if (g() == null) {
|
|
return false;
|
|
}
|
|
if (zztb.a()) {
|
|
return true;
|
|
}
|
|
cls.getMethod("getByte", Long.TYPE);
|
|
cls.getMethod("putByte", Long.TYPE, Byte.TYPE);
|
|
cls.getMethod("getInt", Long.TYPE);
|
|
cls.getMethod("putInt", Long.TYPE, Integer.TYPE);
|
|
cls.getMethod("getLong", Long.TYPE);
|
|
cls.getMethod("putLong", Long.TYPE, Long.TYPE);
|
|
cls.getMethod("copyMemory", Long.TYPE, Long.TYPE, Long.TYPE);
|
|
cls.getMethod("copyMemory", Object.class, Long.TYPE, Object.class, Long.TYPE, Long.TYPE);
|
|
return true;
|
|
} catch (Throwable th) {
|
|
Logger logger = a;
|
|
Level level = Level.WARNING;
|
|
String valueOf = String.valueOf(th);
|
|
StringBuilder sb = new StringBuilder(String.valueOf(valueOf).length() + 71);
|
|
sb.append("platform method missing - proto runtime falling back to safer methods: ");
|
|
sb.append(valueOf);
|
|
logger.logp(level, "com.google.protobuf.UnsafeUtil", "supportsUnsafeByteBufferOperations", sb.toString());
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static void a(Object obj, long j2, int i2) {
|
|
f.a(obj, j2, i2);
|
|
}
|
|
|
|
static long b(Object obj, long j2) {
|
|
return f.b(obj, j2);
|
|
}
|
|
|
|
static boolean c(Object obj, long j2) {
|
|
return f.c(obj, j2);
|
|
}
|
|
|
|
private static boolean d(Class<?> cls) {
|
|
if (!zztb.a()) {
|
|
return false;
|
|
}
|
|
try {
|
|
Class<?> cls2 = c;
|
|
cls2.getMethod("peekLong", cls, Boolean.TYPE);
|
|
cls2.getMethod("pokeLong", cls, Long.TYPE, Boolean.TYPE);
|
|
cls2.getMethod("pokeInt", cls, Integer.TYPE, Boolean.TYPE);
|
|
cls2.getMethod("peekInt", cls, Boolean.TYPE);
|
|
cls2.getMethod("pokeByte", cls, Byte.TYPE);
|
|
cls2.getMethod("peekByte", cls);
|
|
cls2.getMethod("pokeByteArray", cls, byte[].class, Integer.TYPE, Integer.TYPE);
|
|
cls2.getMethod("peekByteArray", cls, byte[].class, Integer.TYPE, Integer.TYPE);
|
|
return true;
|
|
} catch (Throwable unused) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
static void a(Object obj, long j2, long j3) {
|
|
f.a(obj, j2, j3);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void b(Object obj, long j2, byte b2) {
|
|
long j3 = (-4) & j2;
|
|
int i2 = (((int) j2) & 3) << 3;
|
|
a(obj, j3, ((255 & b2) << i2) | (a(obj, j3) & (~(255 << i2))));
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void c(Object obj, long j2, boolean z) {
|
|
b(obj, j2, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static byte g(Object obj, long j2) {
|
|
return (byte) (a(obj, (-4) & j2) >>> ((int) (((~j2) & 3) << 3)));
|
|
}
|
|
|
|
static void a(Object obj, long j2, boolean z) {
|
|
f.a(obj, j2, z);
|
|
}
|
|
|
|
static void a(Object obj, long j2, float f2) {
|
|
f.a(obj, j2, f2);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void b(Object obj, long j2, boolean z) {
|
|
a(obj, j2, z ? (byte) 1 : (byte) 0);
|
|
}
|
|
|
|
static void a(Object obj, long j2, double d2) {
|
|
f.a(obj, j2, d2);
|
|
}
|
|
|
|
static void a(Object obj, long j2, Object obj2) {
|
|
f.a.putObject(obj, j2, obj2);
|
|
}
|
|
|
|
static byte a(byte[] bArr, long j2) {
|
|
return f.f(bArr, i + j2);
|
|
}
|
|
|
|
static void a(byte[] bArr, long j2, byte b2) {
|
|
f.a((Object) bArr, i + j2, b2);
|
|
}
|
|
|
|
static void a(byte[] bArr, long j2, long j3, long j4) {
|
|
f.a(bArr, j2, j3, j4);
|
|
}
|
|
|
|
static void a(long j2, byte b2) {
|
|
f.a(j2, b2);
|
|
}
|
|
|
|
static long a(ByteBuffer byteBuffer) {
|
|
return f.b(byteBuffer, j);
|
|
}
|
|
|
|
private static Field a(Class<?> cls, String str) {
|
|
try {
|
|
Field declaredField = cls.getDeclaredField(str);
|
|
declaredField.setAccessible(true);
|
|
return declaredField;
|
|
} catch (Throwable unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: private */
|
|
public static void a(Object obj, long j2, byte b2) {
|
|
long j3 = (-4) & j2;
|
|
int a2 = a(obj, j3);
|
|
int i2 = ((~((int) j2)) & 3) << 3;
|
|
a(obj, j3, ((255 & b2) << i2) | (a2 & (~(255 << i2))));
|
|
}
|
|
}
|