Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Quincy379
jadx
提交
32f94b46
J
jadx
项目概览
Quincy379
/
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,发现更多精彩内容 >>
提交
32f94b46
编写于
2月 07, 2018
作者:
S
Skylot
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
core: add code lines for while loop
上级
03550649
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
24 addition
and
8 deletion
+24
-8
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
+4
-2
jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
...src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
+20
-6
未找到文件。
jadx-core/src/main/java/jadx/core/codegen/RegionGen.java
浏览文件 @
32f94b46
...
...
@@ -207,11 +207,13 @@ public class RegionGen extends InsnGen {
if
(
region
.
isConditionAtEnd
())
{
code
.
startLine
(
"do {"
);
makeRegionIndent
(
code
,
region
.
getBody
());
code
.
startLine
(
"} while ("
);
code
.
startLineWithNum
(
region
.
getConditionSourceLine
());
code
.
add
(
"} while ("
);
conditionGen
.
add
(
code
,
condition
);
code
.
add
(
");"
);
}
else
{
code
.
startLine
(
"while ("
);
code
.
startLineWithNum
(
region
.
getConditionSourceLine
());
code
.
add
(
"while ("
);
conditionGen
.
add
(
code
,
condition
);
code
.
add
(
") {"
);
makeRegionIndent
(
code
,
region
.
getBody
());
...
...
jadx-core/src/main/java/jadx/core/dex/regions/loops/LoopRegion.java
浏览文件 @
32f94b46
package
jadx.core.dex.regions.loops
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
jadx.core.dex.attributes.nodes.LoopInfo
;
import
jadx.core.dex.instructions.IfNode
;
import
jadx.core.dex.instructions.args.RegisterArg
;
...
...
@@ -9,15 +13,15 @@ import jadx.core.dex.nodes.IRegion;
import
jadx.core.dex.nodes.InsnNode
;
import
jadx.core.dex.regions.AbstractRegion
;
import
jadx.core.dex.regions.conditions.IfCondition
;
import
java.util.ArrayList
;
import
java.util.Collections
;
import
java.util.List
;
import
org.jetbrains.annotations.Nullable
;
public
final
class
LoopRegion
extends
AbstractRegion
{
private
final
LoopInfo
info
;
// loop header contains one 'if' insn, equals null for infinite loop
/**
* loop header contains one 'if' insn, equals null for infinite loop
*/
@Nullable
private
IfCondition
condition
;
private
final
BlockNode
conditionBlock
;
// instruction which must be executed before condition in every loop
...
...
@@ -27,7 +31,7 @@ public final class LoopRegion extends AbstractRegion {
private
LoopType
type
;
public
LoopRegion
(
IRegion
parent
,
LoopInfo
info
,
BlockNode
header
,
boolean
reversed
)
{
public
LoopRegion
(
IRegion
parent
,
LoopInfo
info
,
@Nullable
BlockNode
header
,
boolean
reversed
)
{
super
(
parent
);
this
.
info
=
info
;
this
.
conditionBlock
=
header
;
...
...
@@ -126,6 +130,16 @@ public final class LoopRegion extends AbstractRegion {
}
}
public
int
getConditionSourceLine
()
{
if
(
conditionBlock
!=
null
)
{
List
<
InsnNode
>
condInsns
=
conditionBlock
.
getInstructions
();
if
(!
condInsns
.
isEmpty
())
{
return
condInsns
.
get
(
0
).
getSourceLine
();
}
}
return
0
;
}
public
LoopType
getType
()
{
return
type
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录