You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
137 lines
2.6 KiB
137 lines
2.6 KiB
.class final Lcom/google/common/cache/Striped64$Cell; |
|
.super Ljava/lang/Object; |
|
.source "Striped64.java" |
|
|
|
|
|
# annotations |
|
.annotation system Ldalvik/annotation/EnclosingClass; |
|
value = Lcom/google/common/cache/Striped64; |
|
.end annotation |
|
|
|
.annotation system Ldalvik/annotation/InnerClass; |
|
accessFlags = 0x18 |
|
name = "Cell" |
|
.end annotation |
|
|
|
|
|
# static fields |
|
.field private static final UNSAFE:Lsun/misc/Unsafe; |
|
|
|
.field private static final valueOffset:J |
|
|
|
|
|
# instance fields |
|
.field volatile p0:J |
|
|
|
.field volatile p1:J |
|
|
|
.field volatile p2:J |
|
|
|
.field volatile p3:J |
|
|
|
.field volatile p4:J |
|
|
|
.field volatile p5:J |
|
|
|
.field volatile p6:J |
|
|
|
.field volatile q0:J |
|
|
|
.field volatile q1:J |
|
|
|
.field volatile q2:J |
|
|
|
.field volatile q3:J |
|
|
|
.field volatile q4:J |
|
|
|
.field volatile q5:J |
|
|
|
.field volatile q6:J |
|
|
|
.field volatile value:J |
|
|
|
|
|
# direct methods |
|
.method static constructor <clinit>()V |
|
.locals 3 |
|
|
|
.prologue |
|
.line 108 |
|
:try_start_0 |
|
invoke-static {}, Lcom/google/common/cache/Striped64;->access$000()Lsun/misc/Unsafe; |
|
|
|
move-result-object v0 |
|
|
|
sput-object v0, Lcom/google/common/cache/Striped64$Cell;->UNSAFE:Lsun/misc/Unsafe; |
|
|
|
.line 109 |
|
const-class v0, Lcom/google/common/cache/Striped64$Cell; |
|
|
|
.line 110 |
|
sget-object v1, Lcom/google/common/cache/Striped64$Cell;->UNSAFE:Lsun/misc/Unsafe; |
|
|
|
const-string v2, "value" |
|
|
|
invoke-virtual {v0, v2}, Ljava/lang/Class;->getDeclaredField(Ljava/lang/String;)Ljava/lang/reflect/Field; |
|
|
|
move-result-object v0 |
|
|
|
invoke-virtual {v1, v0}, Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J |
|
|
|
move-result-wide v0 |
|
|
|
sput-wide v0, Lcom/google/common/cache/Striped64$Cell;->valueOffset:J |
|
:try_end_0 |
|
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_0} :catch_0 |
|
|
|
.line 115 |
|
return-void |
|
|
|
.line 112 |
|
:catch_0 |
|
move-exception v0 |
|
|
|
.line 113 |
|
new-instance v1, Ljava/lang/Error; |
|
|
|
invoke-direct {v1, v0}, Ljava/lang/Error;-><init>(Ljava/lang/Throwable;)V |
|
|
|
throw v1 |
|
.end method |
|
|
|
.method constructor <init>(J)V |
|
.locals 1 |
|
|
|
.prologue |
|
.line 97 |
|
invoke-direct {p0}, Ljava/lang/Object;-><init>()V |
|
|
|
iput-wide p1, p0, Lcom/google/common/cache/Striped64$Cell;->value:J |
|
|
|
return-void |
|
.end method |
|
|
|
|
|
# virtual methods |
|
.method final cas(JJ)Z |
|
.locals 9 |
|
|
|
.prologue |
|
.line 100 |
|
sget-object v0, Lcom/google/common/cache/Striped64$Cell;->UNSAFE:Lsun/misc/Unsafe; |
|
|
|
sget-wide v2, Lcom/google/common/cache/Striped64$Cell;->valueOffset:J |
|
|
|
move-object v1, p0 |
|
|
|
move-wide v4, p1 |
|
|
|
move-wide v6, p3 |
|
|
|
invoke-virtual/range {v0 .. v7}, Lsun/misc/Unsafe;->compareAndSwapLong(Ljava/lang/Object;JJJ)Z |
|
|
|
move-result v0 |
|
|
|
return v0 |
|
.end method
|
|
|