public class jdk.internal.org.jline.utils.Levenshtein
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: jdk.internal.org.jline.utils.Levenshtein
super_class: java.lang.Object
{
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 // jdk.internal.org.jline.utils.Levenshtein this
0: .line 46
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // jdk.internal.org.jline.utils.Levenshtein this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Ljdk/internal/org/jline/utils/Levenshtein;
public static int distance(java.lang.CharSequence, java.lang.CharSequence);
descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=6, locals=2, args_size=2
start local 0 // java.lang.CharSequence lhs
start local 1 // java.lang.CharSequence rhs
0: .line 49
aload 0 /* lhs */
aload 1 /* rhs */
iconst_1
iconst_1
iconst_1
iconst_1
invokestatic jdk.internal.org.jline.utils.Levenshtein.distance:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;IIII)I
ireturn
end local 1 // java.lang.CharSequence rhs
end local 0 // java.lang.CharSequence lhs
LocalVariableTable:
Start End Slot Name Signature
0 1 0 lhs Ljava/lang/CharSequence;
0 1 1 rhs Ljava/lang/CharSequence;
MethodParameters:
Name Flags
lhs
rhs
public static int distance(java.lang.CharSequence, java.lang.CharSequence, int, int, int, int);
descriptor: (Ljava/lang/CharSequence;Ljava/lang/CharSequence;IIII)I
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=5, locals=19, args_size=6
start local 0 // java.lang.CharSequence source
start local 1 // java.lang.CharSequence target
start local 2 // int deleteCost
start local 3 // int insertCost
start local 4 // int replaceCost
start local 5 // int swapCost
0: .line 59
iconst_2
iload 5 /* swapCost */
imul
iload 3 /* insertCost */
iload 2 /* deleteCost */
iadd
if_icmpge 2
1: .line 60
new java.lang.IllegalArgumentException
dup
ldc "Unsupported cost assignment"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: .line 62
StackMap locals:
StackMap stack:
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
ifne 4
3: .line 63
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
iload 3 /* insertCost */
imul
ireturn
4: .line 65
StackMap locals:
StackMap stack:
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
ifne 6
5: .line 66
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
iload 2 /* deleteCost */
imul
ireturn
6: .line 68
StackMap locals:
StackMap stack:
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
multianewarray [[I 2
astore 6 /* table */
start local 6 // int[][] table
7: .line 69
new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 7 /* sourceIndexByCharacter */
start local 7 // java.util.Map sourceIndexByCharacter
8: .line 70
aload 0 /* source */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
aload 1 /* target */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
if_icmpeq 10
9: .line 71
aload 6 /* table */
iconst_0
aaload
iconst_0
iload 4 /* replaceCost */
iload 2 /* deleteCost */
iload 3 /* insertCost */
iadd
invokestatic java.lang.Math.min:(II)I
iastore
10: .line 73
StackMap locals: int[][] java.util.Map
StackMap stack:
aload 7 /* sourceIndexByCharacter */
aload 0 /* source */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
iconst_0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
11: .line 74
iconst_1
istore 8 /* i */
start local 8 // int i
12: goto 20
13: .line 75
StackMap locals: int
StackMap stack:
aload 6 /* table */
iload 8 /* i */
iconst_1
isub
aaload
iconst_0
iaload
iload 2 /* deleteCost */
iadd
istore 9 /* deleteDistance */
start local 9 // int deleteDistance
14: .line 76
iload 8 /* i */
iconst_1
iadd
iload 2 /* deleteCost */
imul
iload 3 /* insertCost */
iadd
istore 10 /* insertDistance */
start local 10 // int insertDistance
15: .line 77
iload 8 /* i */
iload 2 /* deleteCost */
imul
aload 0 /* source */
iload 8 /* i */
invokeinterface java.lang.CharSequence.charAt:(I)C
aload 1 /* target */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
if_icmpne 16
iconst_0
goto 17
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
StackMap stack: int
16: iload 4 /* replaceCost */
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
StackMap stack: int int
17: iadd
istore 11 /* matchDistance */
start local 11 // int matchDistance
18: .line 78
aload 6 /* table */
iload 8 /* i */
aaload
iconst_0
iload 9 /* deleteDistance */
iload 10 /* insertDistance */
invokestatic java.lang.Math.min:(II)I
iload 11 /* matchDistance */
invokestatic java.lang.Math.min:(II)I
iastore
end local 11 // int matchDistance
end local 10 // int insertDistance
end local 9 // int deleteDistance
19: .line 74
iinc 8 /* i */ 1
StackMap locals:
StackMap stack:
20: iload 8 /* i */
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
if_icmplt 13
end local 8 // int i
21: .line 80
iconst_1
istore 8 /* j */
start local 8 // int j
22: goto 30
23: .line 81
StackMap locals:
StackMap stack:
iload 8 /* j */
iconst_1
iadd
iload 3 /* insertCost */
imul
iload 2 /* deleteCost */
iadd
istore 9 /* deleteDistance */
start local 9 // int deleteDistance
24: .line 82
aload 6 /* table */
iconst_0
aaload
iload 8 /* j */
iconst_1
isub
iaload
iload 3 /* insertCost */
iadd
istore 10 /* insertDistance */
start local 10 // int insertDistance
25: .line 83
iload 8 /* j */
iload 3 /* insertCost */
imul
aload 0 /* source */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
aload 1 /* target */
iload 8 /* j */
invokeinterface java.lang.CharSequence.charAt:(I)C
if_icmpne 26
iconst_0
goto 27
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
StackMap stack: int
26: iload 4 /* replaceCost */
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
StackMap stack: int int
27: iadd
istore 11 /* matchDistance */
start local 11 // int matchDistance
28: .line 84
aload 6 /* table */
iconst_0
aaload
iload 8 /* j */
iload 9 /* deleteDistance */
iload 10 /* insertDistance */
invokestatic java.lang.Math.min:(II)I
iload 11 /* matchDistance */
invokestatic java.lang.Math.min:(II)I
iastore
end local 11 // int matchDistance
end local 10 // int insertDistance
end local 9 // int deleteDistance
29: .line 80
iinc 8 /* j */ 1
StackMap locals:
StackMap stack:
30: iload 8 /* j */
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
if_icmplt 23
end local 8 // int j
31: .line 86
iconst_1
istore 8 /* i */
start local 8 // int i
32: goto 61
33: .line 87
StackMap locals:
StackMap stack:
aload 0 /* source */
iload 8 /* i */
invokeinterface java.lang.CharSequence.charAt:(I)C
aload 1 /* target */
iconst_0
invokeinterface java.lang.CharSequence.charAt:(I)C
if_icmpne 34
iconst_0
goto 35
StackMap locals:
StackMap stack:
34: iconst_m1
StackMap locals:
StackMap stack: int
35: istore 9 /* maxSourceLetterMatchIndex */
start local 9 // int maxSourceLetterMatchIndex
36: .line 88
iconst_1
istore 10 /* j */
start local 10 // int j
37: goto 58
38: .line 89
StackMap locals: int int
StackMap stack:
aload 7 /* sourceIndexByCharacter */
aload 1 /* target */
iload 10 /* j */
invokeinterface java.lang.CharSequence.charAt:(I)C
invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Integer
astore 11 /* candidateSwapIndex */
start local 11 // java.lang.Integer candidateSwapIndex
39: .line 90
iload 9 /* maxSourceLetterMatchIndex */
istore 12 /* jSwap */
start local 12 // int jSwap
40: .line 91
aload 6 /* table */
iload 8 /* i */
iconst_1
isub
aaload
iload 10 /* j */
iaload
iload 2 /* deleteCost */
iadd
istore 13 /* deleteDistance */
start local 13 // int deleteDistance
41: .line 92
aload 6 /* table */
iload 8 /* i */
aaload
iload 10 /* j */
iconst_1
isub
iaload
iload 3 /* insertCost */
iadd
istore 14 /* insertDistance */
start local 14 // int insertDistance
42: .line 93
aload 6 /* table */
iload 8 /* i */
iconst_1
isub
aaload
iload 10 /* j */
iconst_1
isub
iaload
istore 15 /* matchDistance */
start local 15 // int matchDistance
43: .line 94
aload 0 /* source */
iload 8 /* i */
invokeinterface java.lang.CharSequence.charAt:(I)C
aload 1 /* target */
iload 10 /* j */
invokeinterface java.lang.CharSequence.charAt:(I)C
if_icmpeq 46
44: .line 95
iload 15 /* matchDistance */
iload 4 /* replaceCost */
iadd
istore 15 /* matchDistance */
45: .line 96
goto 47
46: .line 97
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int
StackMap stack:
iload 10 /* j */
istore 9 /* maxSourceLetterMatchIndex */
47: .line 100
StackMap locals:
StackMap stack:
aload 11 /* candidateSwapIndex */
ifnull 55
iload 12 /* jSwap */
iconst_m1
if_icmpeq 55
48: .line 101
aload 11 /* candidateSwapIndex */
invokevirtual java.lang.Integer.intValue:()I
istore 17 /* iSwap */
start local 17 // int iSwap
49: .line 103
iload 17 /* iSwap */
ifne 52
iload 12 /* jSwap */
ifne 52
50: .line 104
iconst_0
istore 18 /* preSwapCost */
start local 18 // int preSwapCost
51: .line 105
goto 53
end local 18 // int preSwapCost
52: .line 106
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int top int
StackMap stack:
aload 6 /* table */
iconst_0
iload 17 /* iSwap */
iconst_1
isub
invokestatic java.lang.Math.max:(II)I
aaload
iconst_0
iload 12 /* jSwap */
iconst_1
isub
invokestatic java.lang.Math.max:(II)I
iaload
istore 18 /* preSwapCost */
start local 18 // int preSwapCost
53: .line 108
StackMap locals: int
StackMap stack:
iload 18 /* preSwapCost */
iload 8 /* i */
iload 17 /* iSwap */
isub
iconst_1
isub
iload 2 /* deleteCost */
imul
iadd
iload 10 /* j */
iload 12 /* jSwap */
isub
iconst_1
isub
iload 3 /* insertCost */
imul
iadd
iload 5 /* swapCost */
iadd
istore 16 /* swapDistance */
end local 18 // int preSwapCost
end local 17 // int iSwap
start local 16 // int swapDistance
54: .line 109
goto 56
end local 16 // int swapDistance
55: .line 110
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int java.lang.Integer int int int int
StackMap stack:
ldc 2147483647
istore 16 /* swapDistance */
start local 16 // int swapDistance
56: .line 112
StackMap locals: int
StackMap stack:
aload 6 /* table */
iload 8 /* i */
aaload
iload 10 /* j */
iload 13 /* deleteDistance */
iload 14 /* insertDistance */
invokestatic java.lang.Math.min:(II)I
iload 15 /* matchDistance */
invokestatic java.lang.Math.min:(II)I
iload 16 /* swapDistance */
invokestatic java.lang.Math.min:(II)I
iastore
end local 16 // int swapDistance
end local 15 // int matchDistance
end local 14 // int insertDistance
end local 13 // int deleteDistance
end local 12 // int jSwap
end local 11 // java.lang.Integer candidateSwapIndex
57: .line 88
iinc 10 /* j */ 1
StackMap locals: java.lang.CharSequence java.lang.CharSequence int int int int int[][] java.util.Map int int int
StackMap stack:
58: iload 10 /* j */
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
if_icmplt 38
end local 10 // int j
59: .line 114
aload 7 /* sourceIndexByCharacter */
aload 0 /* source */
iload 8 /* i */
invokeinterface java.lang.CharSequence.charAt:(I)C
invokestatic java.lang.Character.valueOf:(C)Ljava/lang/Character;
iload 8 /* i */
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
end local 9 // int maxSourceLetterMatchIndex
60: .line 86
iinc 8 /* i */ 1
StackMap locals:
StackMap stack:
61: iload 8 /* i */
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
if_icmplt 33
end local 8 // int i
62: .line 116
aload 6 /* table */
aload 0 /* source */
invokeinterface java.lang.CharSequence.length:()I
iconst_1
isub
aaload
aload 1 /* target */
invokeinterface java.lang.CharSequence.length:()I
iconst_1
isub
iaload
ireturn
end local 7 // java.util.Map sourceIndexByCharacter
end local 6 // int[][] table
end local 5 // int swapCost
end local 4 // int replaceCost
end local 3 // int insertCost
end local 2 // int deleteCost
end local 1 // java.lang.CharSequence target
end local 0 // java.lang.CharSequence source
LocalVariableTable:
Start End Slot Name Signature
0 63 0 source Ljava/lang/CharSequence;
0 63 1 target Ljava/lang/CharSequence;
0 63 2 deleteCost I
0 63 3 insertCost I
0 63 4 replaceCost I
0 63 5 swapCost I
7 63 6 table [[I
8 63 7 sourceIndexByCharacter Ljava/util/Map<Ljava/lang/Character;Ljava/lang/Integer;>;
12 21 8 i I
14 19 9 deleteDistance I
15 19 10 insertDistance I
18 19 11 matchDistance I
22 31 8 j I
24 29 9 deleteDistance I
25 29 10 insertDistance I
28 29 11 matchDistance I
32 62 8 i I
36 60 9 maxSourceLetterMatchIndex I
37 59 10 j I
39 57 11 candidateSwapIndex Ljava/lang/Integer;
40 57 12 jSwap I
41 57 13 deleteDistance I
42 57 14 insertDistance I
43 57 15 matchDistance I
54 55 16 swapDistance I
56 57 16 swapDistance I
49 54 17 iSwap I
51 52 18 preSwapCost I
53 54 18 preSwapCost I
MethodParameters:
Name Flags
source
target
deleteCost
insertCost
replaceCost
swapCost
}
SourceFile: "Levenshtein.java"