Skip to content

Commit 61ba148

Browse files
committed
Some cleanup, typo fixes, improvements [map {}.joinToString() to joinToString() {}], 2.0.4
1 parent ad8af20 commit 61ba148

9 files changed

Lines changed: 72 additions & 66 deletions

File tree

‎build.gradle‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
buildscript {
2-
ext.kotlin_version = '1.1.2-3'
2+
ext.kotlin_version = '1.1.3-2'
33

44
repositories {
55
maven { url 'http://dl.bintray.com/kotlin/kotlin-eap-1.1' }
@@ -17,7 +17,7 @@ plugins {
1717
}
1818

1919
group 'com.github.jonathanxd'
20-
version '2.0.3u'
20+
version '2.0.4'
2121

2222
apply plugin: 'java'
2323
apply plugin: 'kotlin'

‎src/main/kotlin/com/github/jonathanxd/bytecodedisassembler/ClassNodeParser.kt‎

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ object ClassNodeParser {
5252
appender.append("}")
5353
}
5454

55-
if(classNode.sourceFile != null || classNode.sourceDebug != null)
55+
if (classNode.sourceFile != null || classNode.sourceDebug != null)
5656
appender.append("")
5757

5858
classNode.outerClass?.let {
@@ -67,7 +67,7 @@ object ClassNodeParser {
6767
appender.append("outerMethodDesc: ${Util.parseDesc(it)}")
6868
}
6969

70-
if(classNode.outerClass != null || classNode.outerMethod != null || classNode.outerMethodDesc != null)
70+
if (classNode.outerClass != null || classNode.outerMethod != null || classNode.outerMethodDesc != null)
7171
appender.append("")
7272

7373
val modsStr = Util.parseAsModifiersStr(Util.CLASS, classNode.access)
@@ -84,43 +84,43 @@ object ClassNodeParser {
8484

8585
appender.append("")
8686

87-
val idented = Appender.FourIndent(appender)
87+
val indented = Appender.FourIndent(appender)
8888

8989
// Inner classes
9090
val innerClasses = classNode.innerClasses.orEmpty() as List<InnerClassNode>
9191

9292
innerClasses.forEach {
93-
idented.append(parseInnerClassNode(it))
93+
indented.append(parseInnerClassNode(it))
9494
}
9595

96-
if(innerClasses.isNotEmpty())
96+
if (innerClasses.isNotEmpty())
9797
appender.append("")
9898

9999
// Fields
100100

101101
val fields = classNode.fields.orEmpty() as List<FieldNode>
102102

103103
fields.forEach {
104-
idented.append(parseFieldNode(it))
104+
indented.append(parseFieldNode(it))
105105
}
106106

107-
if(fields.isNotEmpty())
107+
if (fields.isNotEmpty())
108108
appender.append("")
109109

110110
// Methods
111111

112112
val methods = classNode.methods.orEmpty() as List<MethodNode>
113113

114114
methods.forEach {
115-
idented.append(parseMethodNode(it, appendFrames))
115+
indented.append(parseMethodNode(it, appendFrames))
116116
}
117117

118118
appender.append("}")
119119

120120
}
121121

122122
@Suppress("UNCHECKED_CAST")
123-
fun parseAnnotationNode(annotationNode: AnnotationNode): String {
123+
private fun parseAnnotationNode(annotationNode: AnnotationNode): String {
124124
val desc = annotationNode.desc
125125
val buffer = StringBuilder()
126126

@@ -138,7 +138,7 @@ object ClassNodeParser {
138138
return buffer.toString()
139139
}
140140

141-
fun parseAnnotationValue(name: String?, value: Any?, buffer: StringBuilder) {
141+
private fun parseAnnotationValue(name: String?, value: Any?, buffer: StringBuilder) {
142142
name?.let {
143143
buffer.append("$it = ")
144144
}
@@ -173,13 +173,13 @@ object ClassNodeParser {
173173
buffer.append(Util.parseArrayValue(value))
174174
}
175175

176-
fun parseInnerClassNode(innerClassNode: InnerClassNode): String {
176+
private fun parseInnerClassNode(innerClassNode: InnerClassNode): String {
177177
return "!access: ${Util.parseAccess(Util.CLASS, innerClassNode.access)} (${innerClassNode.access})\n" +
178178
"${Util.parseAsModifiersStr(Util.CLASS, innerClassNode.access)} ${Util.parseType(innerClassNode.outerName)}.${innerClassNode.innerName} -> ${Util.parseType(innerClassNode.name)}"
179179
}
180180

181181
@Suppress("UNCHECKED_CAST")
182-
fun parseFieldNode(fieldNode: FieldNode): String {
182+
private fun parseFieldNode(fieldNode: FieldNode): String {
183183
val buffer = StringBuilder()
184184

185185

@@ -190,7 +190,7 @@ object ClassNodeParser {
190190
}
191191

192192
val annotations = (fieldNode.visibleAnnotations.orEmpty() + fieldNode.invisibleAnnotations.orEmpty()) as List<AnnotationNode>
193-
if(annotations.isNotEmpty()) {
193+
if (annotations.isNotEmpty()) {
194194
annotations.forEach {
195195
buffer.append(parseAnnotationNode(it))
196196
buffer.append("\n")
@@ -199,14 +199,14 @@ object ClassNodeParser {
199199

200200
buffer.append("${Util.parseAsModifiersStr(Util.FIELD, fieldNode.access)} ${Util.parseType(fieldNode.desc)} ${fieldNode.name}")
201201

202-
if(fieldNode.value != null)
202+
if (fieldNode.value != null)
203203
buffer.append(" = ${fieldNode.value}")
204204

205205
return buffer.toString()
206206
}
207207

208208
@Suppress("UNCHECKED_CAST")
209-
fun parseMethodNode(methodNode: MethodNode, appendFrames: Boolean): String {
209+
private fun parseMethodNode(methodNode: MethodNode, appendFrames: Boolean): String {
210210
val appender = Appender.Joiner(StringJoiner("\n"))
211211

212212
appender.append("!access: ${Util.parseAccess(Util.METHOD, methodNode.access)} (${methodNode.access})")
@@ -215,12 +215,13 @@ object ClassNodeParser {
215215
appender.append("!signature: $it")
216216
}
217217

218-
methodNode.annotationDefault?.let{
218+
methodNode.annotationDefault?.let {
219219
appender.append("!annotationDefault: ${parseAnnotationValue(null, it, StringBuilder())}")
220220
}
221221

222-
val throws = methodNode.exceptions?.let { it as List<String>
223-
if(it.isNotEmpty())
222+
val throws = methodNode.exceptions?.let {
223+
it as List<String>
224+
if (it.isNotEmpty())
224225
" throws ${it.map { Util.parseType(it) }.joinToString(" ")}"
225226
else
226227
""
@@ -235,7 +236,7 @@ object ClassNodeParser {
235236

236237
val parameterAnnotations = ((methodNode.visibleParameterAnnotations.orEmpty() as Array<List<*>>) + (methodNode.invisibleParameterAnnotations.orEmpty() as Array<List<*>>)) as Array<List<AnnotationNode>>
237238

238-
if(parameterAnnotations.isNotEmpty()) {
239+
if (parameterAnnotations.isNotEmpty()) {
239240
appender.append("!parametersAnnotations [")
240241

241242
val twoIndented = Appender.TwoIndent(appender)
@@ -257,7 +258,7 @@ object ClassNodeParser {
257258

258259
val annotations = (methodNode.visibleAnnotations.orEmpty() + methodNode.invisibleAnnotations.orEmpty()) as List<AnnotationNode>
259260

260-
if(annotations.isNotEmpty()) {
261+
if (annotations.isNotEmpty()) {
261262
annotations.forEach {
262263
appender.append(parseAnnotationNode(it))
263264
}
@@ -277,18 +278,18 @@ object ClassNodeParser {
277278

278279
val insnList = methodNode.instructions
279280

280-
insnList?.let { if(it.size() > 0) it[0] }
281+
insnList?.let { if (it.size() > 0) it[0] }
281282

282283
val instructions = insnList?.toArray().orEmpty().filterNotNull()
283284

284-
// Map labe names
285-
instructions.forEach { if(it is LabelNode) mapper.getLabelName(it.label) }
285+
// Map label names
286+
instructions.forEach { if (it is LabelNode) mapper.getLabelName(it.label) }
286287

287288
MethodInstructionsParser.parse(instructions, mapper, indented, twoIndented, appendFrames)
288289

289290
val tryCatchBlocks = methodNode.tryCatchBlocks.orEmpty() as List<TryCatchBlockNode>
290291

291-
if(tryCatchBlocks.isNotEmpty()) {
292+
if (tryCatchBlocks.isNotEmpty()) {
292293
twoIndented.append("TryCatchBlocks {")
293294

294295
tryCatchBlocks.forEach {
@@ -305,7 +306,7 @@ object ClassNodeParser {
305306

306307
val localVariables = methodNode.localVariables.orEmpty() as List<LocalVariableNode>
307308

308-
if(localVariables.isNotEmpty()) {
309+
if (localVariables.isNotEmpty()) {
309310
twoIndented.append("LocalVariables {")
310311

311312
localVariables.forEach {

‎src/main/kotlin/com/github/jonathanxd/bytecodedisassembler/Disassembler.kt‎

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,21 +68,24 @@ object Disassembler {
6868

6969
return disassemble(
7070
bytes = Files.readAllBytes(path),
71-
hash = hash,
71+
appendHash = hash,
7272
appendFrames = appendFrames,
7373
appender = appender
7474
)
7575
}
7676

7777
@JvmStatic
7878
@JvmOverloads
79-
fun disassemble(bytes: ByteArray, hash: Boolean = false, appendFrames: Boolean = true, appender: Appender = Appender.Joiner(StringJoiner("\n"))): String {
80-
if (hash) {
79+
fun disassemble(bytes: ByteArray,
80+
appendHash: Boolean = false,
81+
appendFrames: Boolean = true,
82+
appender: Appender = Appender.Joiner(StringJoiner("\n"))): String {
83+
if (appendHash) {
8184
val digest = MessageDigest.getInstance("MD5")
8285
val hash = digest.digest(bytes)
8386
val hex = StringBuilder()
8487

85-
for (i in 0..hash.size - 1) {
88+
for (i in 0 until hash.size) {
8689
if (0xff and hash[i].toInt() < 0x10) {
8790
hex.append("0" + Integer.toHexString(0xFF and hash[i].toInt()))
8891
} else {

‎src/main/kotlin/com/github/jonathanxd/bytecodedisassembler/LabelMapper.kt‎

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,19 @@ class LabelMapper {
3838
fun getLabelName(label: LabelNode): String? = this.getLabelName(label.label)
3939

4040
fun getLabelName(label: Label?): String? {
41-
if(label == null)
41+
if (label == null)
4242
return "null"
4343

44-
if(labels.containsKey(label)) {
45-
return labels[label]!!
44+
return if (this.labels.containsKey(label)) {
45+
this.labels[label]!!
4646
} else {
47-
val labelName = "Label_$lastLabelN"
47+
val labelName = "Label_${this.lastLabelN}"
4848

49-
++lastLabelN
49+
this.lastLabelN++
5050

51-
labels[label] = labelName
51+
this.labels[label] = labelName
5252

53-
return labelName
53+
labelName
5454
}
5555
}
5656

‎src/main/kotlin/com/github/jonathanxd/bytecodedisassembler/MethodInstructionsParser.kt‎

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,20 @@ import org.objectweb.asm.tree.*
3434

3535
object MethodInstructionsParser {
3636

37-
internal fun parse(instructions: List<AbstractInsnNode>, labelMapper: LabelMapper, normalAppender: Appender, shortAppender: Appender, appendFrames: Boolean) {
37+
internal fun parse(instructions: List<AbstractInsnNode>,
38+
labelMapper: LabelMapper,
39+
normalAppender: Appender,
40+
shortAppender: Appender,
41+
appendFrames: Boolean) {
3842

39-
instructions.forEachIndexed { i, it ->
43+
instructions.forEachIndexed { _, it ->
4044
when (it) {
4145
is MultiANewArrayInsnNode -> normalAppender.append("multiANewArray ${Util.parseType(it.desc)} ${it.dims}")
4246
is FrameNode -> {
4347
if (appendFrames) {
4448
val typeName = Util.getFrameName(it.type)
45-
val localStr = Util.parseLocalsOrStack(it.local?.toTypedArray().orEmpty())
46-
val stackStr = Util.parseLocalsOrStack(it.stack?.toTypedArray().orEmpty())
49+
val localStr = Util.parseLocalsOrStack(it.local?.toTypedArray().orEmpty(), labelMapper)
50+
val stackStr = Util.parseLocalsOrStack(it.stack?.toTypedArray().orEmpty(), labelMapper)
4751

4852
shortAppender.append(" FRAME[type: $typeName, locals: ${it.local.orEmpty().size}, local: $localStr, stacks: ${it.stack.orEmpty().size}, stack: $stackStr]")
4953
}
@@ -116,7 +120,7 @@ object MethodInstructionsParser {
116120

117121
val ex2 = Appender.FourIndent(normalAppender)
118122

119-
if(bsmArgsStr.isNotEmpty()) {
123+
if (bsmArgsStr.isNotEmpty()) {
120124
ex2.append("// Arguments")
121125
bsmArgsStr.forEach {
122126
ex2.append(it)

0 commit comments

Comments
 (0)