ASMClassLoader.smali
.class public Lcom/alibaba/fastjson/util/ASMClassLoader;
.super Ljava/lang/ClassLoader;
.source "ASMClassLoader.java"
# static fields
.field private static DOMAIN:Ljava/security/ProtectionDomain;
.field private static classMapping:Ljava/util/Map;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Map<",
"Ljava/lang/String;",
"Ljava/lang/Class<",
"*>;>;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 6
.line 62
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
sput-object v0, Lcom/alibaba/fastjson/util/ASMClassLoader;->classMapping:Ljava/util/Map;
.line 65
new-instance v0, Lcom/alibaba/fastjson/util/ASMClassLoader$1;
invoke-direct {v0}, Lcom/alibaba/fastjson/util/ASMClassLoader$1;-><init>()V
invoke-static {v0}, Ljava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/security/ProtectionDomain;
sput-object v0, Lcom/alibaba/fastjson/util/ASMClassLoader;->DOMAIN:Ljava/security/ProtectionDomain;
const/16 v0, 0x38
new-array v1, v0, [Ljava/lang/Class;
.line 72
const-class v2, Lcom/alibaba/fastjson/JSON;
const/4 v3, 0x0
aput-object v2, v1, v3
const-class v2, Lcom/alibaba/fastjson/JSONObject;
const/4 v4, 0x1
aput-object v2, v1, v4
const/4 v2, 0x2
const-class v4, Lcom/alibaba/fastjson/JSONArray;
aput-object v4, v1, v2
const/4 v2, 0x3
const-class v4, Lcom/alibaba/fastjson/JSONPath;
aput-object v4, v1, v2
const/4 v2, 0x4
const-class v4, Lcom/alibaba/fastjson/JSONAware;
aput-object v4, v1, v2
const/4 v2, 0x5
const-class v4, Lcom/alibaba/fastjson/JSONException;
aput-object v4, v1, v2
const/4 v2, 0x6
const-class v4, Lcom/alibaba/fastjson/JSONPathException;
aput-object v4, v1, v2
const/4 v2, 0x7
const-class v4, Lcom/alibaba/fastjson/JSONReader;
aput-object v4, v1, v2
const/16 v2, 0x8
const-class v4, Lcom/alibaba/fastjson/JSONStreamAware;
aput-object v4, v1, v2
const/16 v2, 0x9
const-class v4, Lcom/alibaba/fastjson/JSONWriter;
aput-object v4, v1, v2
const/16 v2, 0xa
const-class v4, Lcom/alibaba/fastjson/TypeReference;
aput-object v4, v1, v2
const/16 v2, 0xb
const-class v4, Lcom/alibaba/fastjson/util/FieldInfo;
aput-object v4, v1, v2
const/16 v2, 0xc
const-class v4, Lcom/alibaba/fastjson/util/TypeUtils;
aput-object v4, v1, v2
const/16 v2, 0xd
const-class v4, Lcom/alibaba/fastjson/util/IOUtils;
aput-object v4, v1, v2
const/16 v2, 0xe
const-class v4, Lcom/alibaba/fastjson/util/IdentityHashMap;
aput-object v4, v1, v2
const/16 v2, 0xf
const-class v4, Lcom/alibaba/fastjson/util/ParameterizedTypeImpl;
aput-object v4, v1, v2
const/16 v2, 0x10
const-class v4, Lcom/alibaba/fastjson/util/JavaBeanInfo;
aput-object v4, v1, v2
const/16 v2, 0x11
const-class v4, Lcom/alibaba/fastjson/serializer/ObjectSerializer;
aput-object v4, v1, v2
const/16 v2, 0x12
const-class v4, Lcom/alibaba/fastjson/serializer/JavaBeanSerializer;
aput-object v4, v1, v2
const/16 v2, 0x13
const-class v4, Lcom/alibaba/fastjson/serializer/SerializeFilterable;
aput-object v4, v1, v2
const/16 v2, 0x14
const-class v4, Lcom/alibaba/fastjson/serializer/SerializeBeanInfo;
aput-object v4, v1, v2
const/16 v2, 0x15
const-class v4, Lcom/alibaba/fastjson/serializer/JSONSerializer;
aput-object v4, v1, v2
const/16 v2, 0x16
const-class v4, Lcom/alibaba/fastjson/serializer/SerializeWriter;
aput-object v4, v1, v2
const/16 v2, 0x17
const-class v4, Lcom/alibaba/fastjson/serializer/SerializeFilter;
aput-object v4, v1, v2
const/16 v2, 0x18
const-class v4, Lcom/alibaba/fastjson/serializer/Labels;
aput-object v4, v1, v2
const/16 v2, 0x19
const-class v4, Lcom/alibaba/fastjson/serializer/LabelFilter;
aput-object v4, v1, v2
const/16 v2, 0x1a
const-class v4, Lcom/alibaba/fastjson/serializer/ContextValueFilter;
aput-object v4, v1, v2
const/16 v2, 0x1b
const-class v4, Lcom/alibaba/fastjson/serializer/AfterFilter;
aput-object v4, v1, v2
const/16 v2, 0x1c
const-class v4, Lcom/alibaba/fastjson/serializer/BeforeFilter;
aput-object v4, v1, v2
const/16 v2, 0x1d
const-class v4, Lcom/alibaba/fastjson/serializer/NameFilter;
aput-object v4, v1, v2
const/16 v2, 0x1e
const-class v4, Lcom/alibaba/fastjson/serializer/PropertyFilter;
aput-object v4, v1, v2
const/16 v2, 0x1f
const-class v4, Lcom/alibaba/fastjson/serializer/PropertyPreFilter;
aput-object v4, v1, v2
const/16 v2, 0x20
const-class v4, Lcom/alibaba/fastjson/serializer/ValueFilter;
aput-object v4, v1, v2
const/16 v2, 0x21
const-class v4, Lcom/alibaba/fastjson/serializer/SerializerFeature;
aput-object v4, v1, v2
const/16 v2, 0x22
const-class v4, Lcom/alibaba/fastjson/serializer/ContextObjectSerializer;
aput-object v4, v1, v2
const/16 v2, 0x23
const-class v4, Lcom/alibaba/fastjson/serializer/SerialContext;
aput-object v4, v1, v2
const/16 v2, 0x24
const-class v4, Lcom/alibaba/fastjson/serializer/SerializeConfig;
aput-object v4, v1, v2
const/16 v2, 0x25
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/JavaBeanDeserializer;
aput-object v4, v1, v2
const/16 v2, 0x26
const-class v4, Lcom/alibaba/fastjson/parser/ParserConfig;
aput-object v4, v1, v2
const/16 v2, 0x27
const-class v4, Lcom/alibaba/fastjson/parser/DefaultJSONParser;
aput-object v4, v1, v2
const/16 v2, 0x28
const-class v4, Lcom/alibaba/fastjson/parser/JSONLexer;
aput-object v4, v1, v2
const/16 v2, 0x29
const-class v4, Lcom/alibaba/fastjson/parser/JSONLexerBase;
aput-object v4, v1, v2
const/16 v2, 0x2a
const-class v4, Lcom/alibaba/fastjson/parser/ParseContext;
aput-object v4, v1, v2
const/16 v2, 0x2b
const-class v4, Lcom/alibaba/fastjson/parser/JSONToken;
aput-object v4, v1, v2
const/16 v2, 0x2c
const-class v4, Lcom/alibaba/fastjson/parser/SymbolTable;
aput-object v4, v1, v2
const/16 v2, 0x2d
const-class v4, Lcom/alibaba/fastjson/parser/Feature;
aput-object v4, v1, v2
const/16 v2, 0x2e
const-class v4, Lcom/alibaba/fastjson/parser/JSONScanner;
aput-object v4, v1, v2
const/16 v2, 0x2f
const-class v4, Lcom/alibaba/fastjson/parser/JSONReaderScanner;
aput-object v4, v1, v2
const/16 v2, 0x30
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/AutowiredObjectDeserializer;
aput-object v4, v1, v2
const/16 v2, 0x31
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/ObjectDeserializer;
aput-object v4, v1, v2
const/16 v2, 0x32
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/ExtraProcessor;
aput-object v4, v1, v2
const/16 v2, 0x33
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/ExtraProcessable;
aput-object v4, v1, v2
const/16 v2, 0x34
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/ExtraTypeProvider;
aput-object v4, v1, v2
const/16 v2, 0x35
const-class v4, Lcom/alibaba/fastjson/serializer/BeanContext;
aput-object v4, v1, v2
const/16 v2, 0x36
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/FieldDeserializer;
aput-object v4, v1, v2
const/16 v2, 0x37
const-class v4, Lcom/alibaba/fastjson/parser/deserializer/DefaultFieldDeserializer;
aput-object v4, v1, v2
:goto_160
if-ge v3, v0, :cond_170
.line 134
aget-object v2, v1, v3
.line 135
sget-object v4, Lcom/alibaba/fastjson/util/ASMClassLoader;->classMapping:Ljava/util/Map;
invoke-virtual {v2}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v5
invoke-interface {v4, v5, v2}, Ljava/util/Map;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
add-int/lit8 v3, v3, 0x1
goto :goto_160
:cond_170
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 140
invoke-static {}, Lcom/alibaba/fastjson/util/ASMClassLoader;->getParentClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
invoke-direct {p0, v0}, Ljava/lang/ClassLoader;-><init>(Ljava/lang/ClassLoader;)V
return-void
.end method
.method public constructor <init>(Ljava/lang/ClassLoader;)V
.registers 2
.line 144
invoke-direct {p0, p1}, Ljava/lang/ClassLoader;-><init>(Ljava/lang/ClassLoader;)V
return-void
.end method
.method static getParentClassLoader()Ljava/lang/ClassLoader;
.registers 2
.line 148
invoke-static {}, Ljava/lang/Thread;->currentThread()Ljava/lang/Thread;
move-result-object v0
invoke-virtual {v0}, Ljava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
if-eqz v0, :cond_14
.line 151
:try_start_a
const-class v1, Lcom/alibaba/fastjson/JSON;
invoke-virtual {v1}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
:try_end_13
.catch Ljava/lang/ClassNotFoundException; {:try_start_a .. :try_end_13} :catch_14
return-object v0
.line 157
:catch_14
:cond_14
const-class v0, Lcom/alibaba/fastjson/JSON;
invoke-virtual {v0}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object v0
return-object v0
.end method
# virtual methods
.method public defineClassPublic(Ljava/lang/String;[BII)Ljava/lang/Class;
.registers 11
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"[BII)",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/ClassFormatError;
}
.end annotation
.line 174
sget-object v5, Lcom/alibaba/fastjson/util/ASMClassLoader;->DOMAIN:Ljava/security/ProtectionDomain;
move-object v0, p0
move-object v1, p1
move-object v2, p2
move v3, p3
move v4, p4
invoke-virtual/range {v0 .. v5}, Lcom/alibaba/fastjson/util/ASMClassLoader;->defineClass(Ljava/lang/String;[BIILjava/security/ProtectionDomain;)Ljava/lang/Class;
move-result-object p1
return-object p1
.end method
.method public isExternalClass(Ljava/lang/Class;)Z
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class<",
"*>;)Z"
}
.end annotation
.line 180
invoke-virtual {p1}, Ljava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;
move-result-object p1
const/4 v0, 0x0
if-nez p1, :cond_8
return v0
:cond_8
move-object v1, p0
:goto_9
if-eqz v1, :cond_13
if-ne v1, p1, :cond_e
return v0
.line 192
:cond_e
invoke-virtual {v1}, Ljava/lang/ClassLoader;->getParent()Ljava/lang/ClassLoader;
move-result-object v1
goto :goto_9
:cond_13
const/4 p1, 0x1
return p1
.end method
.method protected loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/String;",
"Z)",
"Ljava/lang/Class<",
"*>;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/ClassNotFoundException;
}
.end annotation
.line 161
sget-object v0, Lcom/alibaba/fastjson/util/ASMClassLoader;->classMapping:Ljava/util/Map;
invoke-interface {v0, p1}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/Class;
if-eqz v0, :cond_b
return-object v0
.line 167
:cond_b
:try_start_b
invoke-super {p0, p1, p2}, Ljava/lang/ClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
move-result-object p1
:try_end_f
.catch Ljava/lang/ClassNotFoundException; {:try_start_b .. :try_end_f} :catch_10
return-object p1
:catch_10
move-exception p1
.line 169
throw p1
.end method