mirror of
https://github.com/alibaba/arthas.git
synced 2024-04-21 10:21:39 +00:00
clean unnecessarily asm dep
This commit is contained in:
@@ -139,14 +139,6 @@
|
||||
<artifactId>arthas-tunnel-client</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm-commons</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba.middleware</groupId>
|
||||
<artifactId>termd-core</artifactId>
|
||||
|
||||
@@ -4,8 +4,7 @@ import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
|
||||
import org.objectweb.asm.Type;
|
||||
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.Type;
|
||||
import com.taobao.arthas.core.util.StringUtils;
|
||||
|
||||
/**
|
||||
@@ -31,7 +30,7 @@ public class ArthasMethod {
|
||||
|
||||
try {
|
||||
ClassLoader loader = this.clazz.getClassLoader();
|
||||
final org.objectweb.asm.Type asmType = org.objectweb.asm.Type.getMethodType(methodDesc);
|
||||
final Type asmType = Type.getMethodType(methodDesc);
|
||||
|
||||
// to arg types
|
||||
final Class<?>[] argsClasses = new Class<?>[asmType.getArgumentTypes().length];
|
||||
|
||||
@@ -1,118 +0,0 @@
|
||||
package com.taobao.arthas.core.advisor;
|
||||
|
||||
import org.objectweb.asm.Opcodes;
|
||||
import org.objectweb.asm.commons.AdviceAdapter;
|
||||
|
||||
/**
|
||||
* ASM代码锁<br/>
|
||||
* Created by vlinux on 15/5/28.
|
||||
*/
|
||||
public class AsmCodeLock implements CodeLock, Opcodes {
|
||||
|
||||
private final AdviceAdapter aa;
|
||||
|
||||
// 锁标记
|
||||
private boolean isLook;
|
||||
|
||||
// 代码块开始特征数组
|
||||
private final int[] beginCodeArray;
|
||||
|
||||
// 代码块结束特征数组
|
||||
private final int[] endCodeArray;
|
||||
|
||||
// 代码匹配索引
|
||||
private int index = 0;
|
||||
|
||||
|
||||
/**
|
||||
* 用ASM构建代码锁
|
||||
*
|
||||
* @param aa ASM
|
||||
* @param beginCodeArray 代码块开始特征数组
|
||||
* 字节码流要求不能破坏执行堆栈
|
||||
* @param endCodeArray 代码块结束特征数组
|
||||
* 字节码流要求不能破坏执行堆栈
|
||||
*/
|
||||
public AsmCodeLock(AdviceAdapter aa, int[] beginCodeArray, int[] endCodeArray) {
|
||||
if (null == beginCodeArray
|
||||
|| null == endCodeArray
|
||||
|| beginCodeArray.length != endCodeArray.length) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
this.aa = aa;
|
||||
this.beginCodeArray = beginCodeArray;
|
||||
this.endCodeArray = endCodeArray;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void code(int code) {
|
||||
|
||||
final int[] codes = isLock() ? endCodeArray : beginCodeArray;
|
||||
|
||||
if (index >= codes.length) {
|
||||
reset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (codes[index] != code) {
|
||||
reset();
|
||||
return;
|
||||
}
|
||||
|
||||
if (++index == codes.length) {
|
||||
// 翻转锁状态
|
||||
isLook = !isLook;
|
||||
reset();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* 重置索引<br/>
|
||||
* 一般在代码序列判断失败时,则会对索引进行重置,冲头开始匹配特征序列
|
||||
*/
|
||||
private void reset() {
|
||||
index = 0;
|
||||
}
|
||||
|
||||
|
||||
private void asm(int opcode) {
|
||||
aa.visitInsn(opcode);
|
||||
}
|
||||
|
||||
/**
|
||||
* 锁定序列
|
||||
*/
|
||||
private void lock() {
|
||||
for (int op : beginCodeArray) {
|
||||
asm(op);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 解锁序列
|
||||
*/
|
||||
private void unLock() {
|
||||
for (int op : endCodeArray) {
|
||||
asm(op);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isLock() {
|
||||
return isLook;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lock(Block block) {
|
||||
lock();
|
||||
try {
|
||||
block.code();
|
||||
} finally {
|
||||
unLock();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
package com.taobao.arthas.core.advisor;
|
||||
|
||||
import org.objectweb.asm.commons.AdviceAdapter;
|
||||
|
||||
/**
|
||||
* 用于Tracing的代码锁
|
||||
* @author ralf0131 2016-12-28 16:46.
|
||||
*/
|
||||
public class TracingAsmCodeLock extends AsmCodeLock {
|
||||
|
||||
public TracingAsmCodeLock(AdviceAdapter aa) {
|
||||
super(
|
||||
aa,
|
||||
new int[]{
|
||||
ACONST_NULL, ICONST_0, ICONST_1, SWAP, SWAP, POP2, POP
|
||||
},
|
||||
new int[]{
|
||||
ICONST_1, ACONST_NULL, ICONST_0, SWAP, SWAP, POP, POP2
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -10,8 +10,7 @@ import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.objectweb.asm.ClassReader;
|
||||
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.ClassReader;
|
||||
import com.alibaba.arthas.deps.org.slf4j.Logger;
|
||||
import com.alibaba.arthas.deps.org.slf4j.LoggerFactory;
|
||||
import com.taobao.arthas.core.command.Constants;
|
||||
|
||||
@@ -97,7 +97,7 @@ public class SearchMethodCommand extends AnnotatedCommand {
|
||||
for (Class<?> clazz : matchedClasses) {
|
||||
try {
|
||||
for (Constructor<?> constructor : clazz.getDeclaredConstructors()) {
|
||||
String methodNameWithDescriptor = org.objectweb.asm.commons.Method.getMethod(constructor).toString();
|
||||
String methodNameWithDescriptor = com.alibaba.arthas.deps.org.objectweb.asm.commons.Method.getMethod(constructor).toString();
|
||||
if (!methodNameMatcher.matching("<init>")) {
|
||||
continue;
|
||||
}
|
||||
@@ -112,7 +112,7 @@ public class SearchMethodCommand extends AnnotatedCommand {
|
||||
}
|
||||
|
||||
for (Method method : clazz.getDeclaredMethods()) {
|
||||
String methodNameWithDescriptor = org.objectweb.asm.commons.Method.getMethod(method).toString();
|
||||
String methodNameWithDescriptor = com.alibaba.arthas.deps.org.objectweb.asm.commons.Method.getMethod(method).toString();
|
||||
if (!methodNameMatcher.matching(method.getName())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -1,11 +1,10 @@
|
||||
package com.taobao.arthas.core.command.logger;
|
||||
|
||||
import org.objectweb.asm.ClassReader;
|
||||
import org.objectweb.asm.ClassVisitor;
|
||||
import org.objectweb.asm.ClassWriter;
|
||||
import org.objectweb.asm.commons.ClassRemapper;
|
||||
import org.objectweb.asm.commons.Remapper;
|
||||
import org.objectweb.asm.commons.SimpleRemapper;
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.ClassReader;
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.ClassVisitor;
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.ClassWriter;
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.commons.ClassRemapper;
|
||||
import com.alibaba.arthas.deps.org.objectweb.asm.commons.SimpleRemapper;
|
||||
|
||||
/**
|
||||
*
|
||||
|
||||
@@ -90,16 +90,6 @@
|
||||
|
||||
<dependencyManagement>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm</artifactId>
|
||||
<version>8.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.ow2.asm</groupId>
|
||||
<artifactId>asm-commons</artifactId>
|
||||
<version>8.0.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.benf</groupId>
|
||||
<artifactId>cfr</artifactId>
|
||||
|
||||
Reference in New Issue
Block a user