Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@timyates
Created June 19, 2012 15:30
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timyates/e61f5f41175c6a8e076b to your computer and use it in GitHub Desktop.
Save timyates/e61f5f41175c6a8e076b to your computer and use it in GitHub Desktop.
Bytecode
Code that generates this:
class ResponseUtil {
static String formatBigDecimalForUI( BigDecimal value ) {
if( value == null ) {
''
} else if( value <= 0 ) {
''
} else {
roundHalfEven( value )
}
}
}
------------------------------------------
public static java.lang.String formatBigDecimalForUI(java.math.BigDecimal);
Code:
0: invokestatic #24; //Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: invokestatic #40; //Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
7: ifeq 31
10: invokestatic #43; //Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
13: ifeq 31
16: getstatic #45; //Field __$stMC:Z
19: ifne 31
22: invokestatic #48; //Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
25: ifne 31
28: goto 91
31: aload_0
32: aconst_null
33: invokestatic #54; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
36: ifeq 45
39: ldc #56; //String
41: areturn
42: goto 88
45: aload_0
46: iconst_0
47: invokestatic #62; //Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.box:(I)Ljava/lang/Object;
50: checkcast #64; //class java/lang/Integer
53: invokestatic #67; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
56: ifeq 65
59: ldc #56; //String
61: areturn
62: goto 88
65: aload_1
66: ldc #68; //int 0
68: aaload
69: invokestatic #72; //Method $get$$class$ResponseUtil:()Ljava/lang/Class;
72: aload_0
73: invokeinterface #78, 3; //InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
78: invokestatic #81; //Method $get$$class$java$lang$String:()Ljava/lang/Class;
81: invokestatic #85; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
84: checkcast #87; //class java/lang/String
87: areturn
88: goto 148
91: aload_0
92: aconst_null
93: invokestatic #54; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
96: ifeq 105
99: ldc #56; //String
101: areturn
102: goto 148
105: aload_0
106: iconst_0
107: invokestatic #62; //Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.box:(I)Ljava/lang/Object;
110: checkcast #64; //class java/lang/Integer
113: invokestatic #67; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
116: ifeq 125
119: ldc #56; //String
121: areturn
122: goto 148
125: aload_1
126: ldc #88; //int 1
128: aaload
129: invokestatic #72; //Method $get$$class$ResponseUtil:()Ljava/lang/Class;
132: aload_0
133: invokeinterface #78, 3; //InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
138: invokestatic #81; //Method $get$$class$java$lang$String:()Ljava/lang/Class;
141: invokestatic #85; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
144: checkcast #87; //class java/lang/String
147: areturn
148: aconst_null
149: areturn
Code that generates this:
class ResponseUtil {
static String formatBigDecimalForUI( BigDecimal value ) {
( value == null || value <= 0 ) ? '' : roundHalfEven( value )
}
}
------------------------------------------
public static java.lang.String formatBigDecimalForUI(java.math.BigDecimal);
Code:
0: invokestatic #24; //Method $getCallSiteArray:()[Lorg/codehaus/groovy/runtime/callsite/CallSite;
3: astore_1
4: invokestatic #40; //Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigInt:()Z
7: ifeq 31
10: invokestatic #43; //Method org/codehaus/groovy/runtime/BytecodeInterface8.isOrigZ:()Z
13: ifeq 31
16: getstatic #45; //Field __$stMC:Z
19: ifne 31
22: invokestatic #48; //Method org/codehaus/groovy/runtime/BytecodeInterface8.disabledStandardMetaClass:()Z
25: ifne 31
28: goto 92
31: aload_0
32: aconst_null
33: invokestatic #54; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
36: ifne 53
39: aload_0
40: iconst_0
41: invokestatic #60; //Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.box:(I)Ljava/lang/Object;
44: checkcast #62; //class java/lang/Integer
47: invokestatic #65; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
50: ifeq 57
53: iconst_1
54: goto 58
57: iconst_0
58: ifeq 66
61: ldc #67; //String
63: goto 79
66: aload_1
67: ldc #68; //int 0
69: aaload
70: invokestatic #72; //Method $get$$class$ResponseUtil:()Ljava/lang/Class;
73: aload_0
74: invokeinterface #78, 3; //InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
79: invokestatic #81; //Method $get$$class$java$lang$String:()Ljava/lang/Class;
82: invokestatic #85; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
85: checkcast #87; //class java/lang/String
88: areturn
89: goto 150
92: aload_0
93: aconst_null
94: invokestatic #54; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
97: ifne 114
100: aload_0
101: iconst_0
102: invokestatic #60; //Method org/codehaus/groovy/runtime/typehandling/DefaultTypeTransformation.box:(I)Ljava/lang/Object;
105: checkcast #62; //class java/lang/Integer
108: invokestatic #65; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.compareLessThanEqual:(Ljava/lang/Object;Ljava/lang/Object;)Z
111: ifeq 118
114: iconst_1
115: goto 119
118: iconst_0
119: ifeq 127
122: ldc #67; //String
124: goto 140
127: aload_1
128: ldc #88; //int 1
130: aaload
131: invokestatic #72; //Method $get$$class$ResponseUtil:()Ljava/lang/Class;
134: aload_0
135: invokeinterface #78, 3; //InterfaceMethod org/codehaus/groovy/runtime/callsite/CallSite.callStatic:(Ljava/lang/Class;Ljava/lang/Object;)Ljava/lang/Object;
140: invokestatic #81; //Method $get$$class$java$lang$String:()Ljava/lang/Class;
143: invokestatic #85; //Method org/codehaus/groovy/runtime/ScriptBytecodeAdapter.castToType:(Ljava/lang/Object;Ljava/lang/Class;)Ljava/lang/Object;
146: checkcast #87; //class java/lang/String
149: areturn
150: aconst_null
151: areturn
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment