Skip to content

Instantly share code, notes, and snippets.

@vaskoz
Created December 29, 2012 20:44
Show Gist options
  • Save vaskoz/4409247 to your computer and use it in GitHub Desktop.
Save vaskoz/4409247 to your computer and use it in GitHub Desktop.
Bytecode of 2 methods in Switch.java
public java.lang.String switchTest(java.lang.String);
Code:
0: aconst_null
1: astore_2
2: aload_1
3: astore_3
4: iconst_m1
5: istore 4
7: aload_3
8: invokevirtual #2 // Method java/lang/String.hashCode:()I
11: lookupswitch { // 3
-681733281: 74
97299: 59
101574: 44
default: 86
}
44: aload_3
45: ldc #3 // String foo
47: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
50: ifeq 86
53: iconst_0
54: istore 4
56: goto 86
59: aload_3
60: ldc #5 // String bar
62: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
65: ifeq 86
68: iconst_1
69: istore 4
71: goto 86
74: aload_3
75: ldc #6 // String foo:bar
77: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
80: ifeq 86
83: iconst_2
84: istore 4
86: iload 4
88: tableswitch { // 0 to 2
0: 116
1: 122
2: 128
default: 134
}
116: ldc #7 // String foo1
118: astore_2
119: goto 137
122: ldc #8 // String bar1
124: astore_2
125: goto 137
128: ldc #9 // String foo1:bar1
130: astore_2
131: goto 137
134: ldc #10 // String no match
136: astore_2
137: aload_2
138: areturn
public java.lang.String ifThenElseTest(java.lang.String);
Code:
0: aconst_null
1: astore_2
2: ldc #3 // String foo
4: aload_1
5: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
8: ifeq 17
11: ldc #7 // String foo1
13: astore_2
14: goto 50
17: ldc #5 // String bar
19: aload_1
20: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
23: ifeq 32
26: ldc #8 // String bar1
28: astore_2
29: goto 50
32: ldc #9 // String foo1:bar1
34: aload_1
35: invokevirtual #4 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
38: ifeq 47
41: ldc #9 // String foo1:bar1
43: astore_2
44: goto 50
47: ldc #10 // String no match
49: astore_2
50: aload_2
51: areturn
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment