Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
tsaltedfishking
jadx
提交
b9d02ff4
J
jadx
项目概览
tsaltedfishking
/
jadx
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jadx
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
b9d02ff4
编写于
10月 12, 2022
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
refactor: remove all LinkedList usage
上级
29b64300
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
17 addition
and
20 deletion
+17
-20
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
...main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/blocks/BlockProcessor.java
...in/java/jadx/core/dex/visitors/blocks/BlockProcessor.java
+1
-2
jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
...ava/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
+3
-3
jadx-core/src/main/java/jadx/core/dex/visitors/shrink/ArgsInfo.java
...src/main/java/jadx/core/dex/visitors/shrink/ArgsInfo.java
+2
-2
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
...rc/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
+3
-3
jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
...re/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
+2
-4
jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java
...st/java/jadx/tests/integration/names/TestNameAssign2.java
+2
-2
未找到文件。
jadx-core/src/main/java/jadx/core/codegen/ConditionGen.java
浏览文件 @
b9d02ff4
package
jadx.core.codegen
;
import
java.util.ArrayDeque
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.Queue
;
import
jadx.api.ICodeWriter
;
...
...
@@ -23,7 +23,7 @@ import jadx.core.utils.exceptions.JadxRuntimeException;
public
class
ConditionGen
extends
InsnGen
{
private
static
class
CondStack
{
private
final
Queue
<
IfCondition
>
stack
=
new
LinkedList
<>();
private
final
Queue
<
IfCondition
>
stack
=
new
ArrayDeque
<>();
public
Queue
<
IfCondition
>
getStack
()
{
return
stack
;
...
...
jadx-core/src/main/java/jadx/core/dex/attributes/nodes/PhiListAttr.java
浏览文件 @
b9d02ff4
package
jadx.core.dex.attributes.nodes
;
import
java.util.
Linked
List
;
import
java.util.
Array
List
;
import
java.util.List
;
import
jadx.api.ICodeWriter
;
...
...
@@ -10,7 +10,7 @@ import jadx.core.dex.instructions.PhiInsn;
public
class
PhiListAttr
implements
IJadxAttribute
{
private
final
List
<
PhiInsn
>
list
=
new
Linked
List
<>();
private
final
List
<
PhiInsn
>
list
=
new
Array
List
<>();
@Override
public
AType
<
PhiListAttr
>
getAttrType
()
{
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/blocks/BlockProcessor.java
浏览文件 @
b9d02ff4
...
...
@@ -2,7 +2,6 @@ package jadx.core.dex.visitors.blocks;
import
java.util.ArrayList
;
import
java.util.LinkedHashSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Set
;
...
...
@@ -432,7 +431,7 @@ public class BlockProcessor extends AbstractVisitor {
BlockNode
loopHeader
=
loop
.
getStart
();
List
<
BlockNode
>
preds
=
loopHeader
.
getPredecessors
();
if
(
preds
.
size
()
>
2
)
{
List
<
BlockNode
>
blocks
=
new
Linked
List
<>(
preds
);
List
<
BlockNode
>
blocks
=
new
Array
List
<>(
preds
);
blocks
.
removeIf
(
block
->
block
.
contains
(
AFlag
.
LOOP_END
));
BlockNode
first
=
blocks
.
remove
(
0
);
BlockNode
preHeader
=
BlockSplitter
.
insertBlockBetween
(
mth
,
first
,
loopHeader
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/regions/LoopRegionVisitor.java
浏览文件 @
b9d02ff4
package
jadx.core.dex.visitors.regions
;
import
java.util.
Linked
List
;
import
java.util.
Array
List
;
import
java.util.List
;
import
org.slf4j.Logger
;
...
...
@@ -125,7 +125,7 @@ public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor
return
false
;
}
// can't make loop if argument from increment instruction is assign in loop
List
<
RegisterArg
>
args
=
new
Linked
List
<>();
List
<
RegisterArg
>
args
=
new
Array
List
<>();
incrInsn
.
getRegisterArgs
(
args
);
for
(
RegisterArg
iArg
:
args
)
{
try
{
...
...
@@ -268,7 +268,7 @@ public class LoopRegionVisitor extends AbstractVisitor implements IRegionVisitor
||
!
checkInvoke
(
nextCall
,
"java.util.Iterator"
,
"next()Ljava/lang/Object;"
))
{
return
false
;
}
List
<
InsnNode
>
toSkip
=
new
Linked
List
<>();
List
<
InsnNode
>
toSkip
=
new
Array
List
<>();
RegisterArg
iterVar
;
if
(
nextCall
.
contains
(
AFlag
.
WRAPPED
))
{
InsnArg
wrapArg
=
BlockUtils
.
searchWrappedInsnParent
(
mth
,
nextCall
);
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/shrink/ArgsInfo.java
浏览文件 @
b9d02ff4
package
jadx.core.dex.visitors.shrink
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.instructions.InsnType
;
...
...
@@ -30,7 +30,7 @@ final class ArgsInfo {
}
public
static
List
<
RegisterArg
>
getArgs
(
InsnNode
insn
)
{
List
<
RegisterArg
>
args
=
new
Linked
List
<>();
List
<
RegisterArg
>
args
=
new
Array
List
<>();
addArgs
(
insn
,
args
);
return
args
;
}
...
...
jadx-core/src/main/java/jadx/core/dex/visitors/ssa/SSATransform.java
浏览文件 @
b9d02ff4
package
jadx.core.dex.visitors.ssa
;
import
java.util.ArrayDeque
;
import
java.util.ArrayList
;
import
java.util.BitSet
;
import
java.util.Deque
;
import
java.util.Iterator
;
import
java.util.LinkedList
;
import
java.util.List
;
import
jadx.core.dex.attributes.AFlag
;
...
...
@@ -81,7 +81,7 @@ public class SSATransform extends AbstractVisitor {
int
blocksCount
=
blocks
.
size
();
BitSet
hasPhi
=
new
BitSet
(
blocksCount
);
BitSet
processed
=
new
BitSet
(
blocksCount
);
Deque
<
BlockNode
>
workList
=
new
LinkedList
<>();
Deque
<
BlockNode
>
workList
=
new
ArrayDeque
<>();
BitSet
assignBlocks
=
la
.
getAssignBlocks
(
regNum
);
for
(
int
id
=
assignBlocks
.
nextSetBit
(
0
);
id
>=
0
;
id
=
assignBlocks
.
nextSetBit
(
id
+
1
))
{
...
...
@@ -136,7 +136,7 @@ public class SSATransform extends AbstractVisitor {
RenameState
initState
=
RenameState
.
init
(
mth
);
initPhiInEnterBlock
(
initState
);
Deque
<
RenameState
>
stack
=
new
LinkedList
<>();
Deque
<
RenameState
>
stack
=
new
ArrayDeque
<>();
stack
.
push
(
initState
);
while
(!
stack
.
isEmpty
())
{
RenameState
state
=
stack
.
pop
();
...
...
jadx-core/src/main/java/jadx/core/xmlgen/ManifestAttributes.java
浏览文件 @
b9d02ff4
...
...
@@ -4,10 +4,8 @@ import java.io.InputStream;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.LinkedHashMap
;
import
java.util.LinkedList
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
import
javax.xml.parsers.DocumentBuilder
;
...
...
@@ -175,7 +173,7 @@ public class ManifestAttributes {
if
(
attr
.
getType
()
==
MAttrType
.
ENUM
)
{
return
attr
.
getValues
().
get
(
value
);
}
else
if
(
attr
.
getType
()
==
MAttrType
.
FLAG
)
{
List
<
String
>
flagList
=
new
Linked
List
<>();
List
<
String
>
flagList
=
new
Array
List
<>();
List
<
Long
>
attrKeys
=
new
ArrayList
<>(
attr
.
getValues
().
keySet
());
attrKeys
.
sort
((
a
,
b
)
->
Long
.
compare
(
b
,
a
));
// sort descending
for
(
Long
key
:
attrKeys
)
{
...
...
@@ -188,7 +186,7 @@ public class ManifestAttributes {
value
^=
key
;
}
}
return
flagList
.
stream
().
collect
(
Collectors
.
joining
(
"|"
)
);
return
String
.
join
(
"|"
,
flagList
);
}
return
null
;
}
...
...
jadx-core/src/test/java/jadx/tests/integration/names/TestNameAssign2.java
浏览文件 @
b9d02ff4
package
jadx.tests.integration.names
;
import
java.util.ArrayDeque
;
import
java.util.BitSet
;
import
java.util.Deque
;
import
java.util.LinkedList
;
import
java.util.List
;
import
org.junit.jupiter.api.Test
;
...
...
@@ -26,7 +26,7 @@ public class TestNameAssign2 extends IntegrationTest {
int
blocksCount
=
blocks
.
size
();
BitSet
hasPhi
=
new
BitSet
(
blocksCount
);
BitSet
processed
=
new
BitSet
(
blocksCount
);
Deque
<
BlockNode
>
workList
=
new
LinkedList
<>();
Deque
<
BlockNode
>
workList
=
new
ArrayDeque
<>();
BitSet
assignBlocks
=
la
.
getAssignBlocks
(
regNum
);
for
(
int
id
=
assignBlocks
.
nextSetBit
(
0
);
id
>=
0
;
id
=
assignBlocks
.
nextSetBit
(
id
+
1
))
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录