2925 return &bc_floatref; 2926 case bc_lldc2_w: 2927 return &bc_longref; 2928 case bc_dldc2_w: 2929 return &bc_doubleref; 2930 case bc_sldc: 2931 case bc_sldc_w: 2932 return &bc_stringref; 2933 case bc_cldc: 2934 case bc_cldc_w: 2935 return &bc_classref; 2936 case bc_qldc: case bc_qldc_w: 2937 return &bc_loadablevalueref; 2938 2939 case bc_getstatic: 2940 case bc_putstatic: 2941 case bc_getfield: 2942 case bc_putfield: 2943 return &bc_fieldref; 2944 2945 case bc_invokevirtual: 2946 case bc_invokespecial: 2947 case bc_invokestatic: 2948 return &bc_methodref; 2949 case bc_invokeinterface: 2950 return &bc_imethodref; 2951 case bc_invokedynamic: 2952 return &bc_indyref; 2953 2954 case bc_new: 2955 case bc_anewarray: 2956 case bc_checkcast: 2957 case bc_instanceof: 2958 case bc_multianewarray: 2959 return &bc_classref; 2960 } 2961 return null; 2962 } 2963 2964 maybe_inline 4160 //int lVal = bc_label.getInt(); 4161 if (bc < bc_goto_w) { 4162 put_label(curIP, 2); //putu2(lVal & 0xFFFF); 4163 } else { 4164 assert(bc <= bc_jsr_w); 4165 put_label(curIP, 4); //putu4(lVal); 4166 } 4167 assert((int)to_bci(curIP) == curPC); 4168 continue; 4169 } 4170 bc_which = ref_band_for_op(bc); 4171 if (bc_which != null) { 4172 entry* ref = bc_which->getRefCommon(bc_which->ix, bc_which->nullOK); 4173 CHECK; 4174 if (ref == null && bc_which == &bc_classref) { 4175 // Shorthand for class self-references. 4176 ref = thisClass; 4177 } 4178 origBC = bc; 4179 switch (bc) { 4180 case bc_ildc: 4181 case bc_cldc: 4182 case bc_fldc: 4183 case bc_sldc: 4184 case bc_qldc: 4185 origBC = bc_ldc; 4186 break; 4187 case bc_ildc_w: 4188 case bc_cldc_w: 4189 case bc_fldc_w: 4190 case bc_sldc_w: 4191 case bc_qldc_w: 4192 origBC = bc_ldc_w; 4193 break; 4194 case bc_lldc2_w: 4195 case bc_dldc2_w: 4196 origBC = bc_ldc2_w; 4197 break; 4198 case bc_new: 4199 newClass = ref; | 2925 return &bc_floatref; 2926 case bc_lldc2_w: 2927 return &bc_longref; 2928 case bc_dldc2_w: 2929 return &bc_doubleref; 2930 case bc_sldc: 2931 case bc_sldc_w: 2932 return &bc_stringref; 2933 case bc_cldc: 2934 case bc_cldc_w: 2935 return &bc_classref; 2936 case bc_qldc: case bc_qldc_w: 2937 return &bc_loadablevalueref; 2938 2939 case bc_getstatic: 2940 case bc_putstatic: 2941 case bc_getfield: 2942 case bc_putfield: 2943 return &bc_fieldref; 2944 2945 case _invokespecial_int: 2946 case _invokestatic_int: 2947 return &bc_imethodref; 2948 case bc_invokevirtual: 2949 case bc_invokespecial: 2950 case bc_invokestatic: 2951 return &bc_methodref; 2952 case bc_invokeinterface: 2953 return &bc_imethodref; 2954 case bc_invokedynamic: 2955 return &bc_indyref; 2956 2957 case bc_new: 2958 case bc_anewarray: 2959 case bc_checkcast: 2960 case bc_instanceof: 2961 case bc_multianewarray: 2962 return &bc_classref; 2963 } 2964 return null; 2965 } 2966 2967 maybe_inline 4163 //int lVal = bc_label.getInt(); 4164 if (bc < bc_goto_w) { 4165 put_label(curIP, 2); //putu2(lVal & 0xFFFF); 4166 } else { 4167 assert(bc <= bc_jsr_w); 4168 put_label(curIP, 4); //putu4(lVal); 4169 } 4170 assert((int)to_bci(curIP) == curPC); 4171 continue; 4172 } 4173 bc_which = ref_band_for_op(bc); 4174 if (bc_which != null) { 4175 entry* ref = bc_which->getRefCommon(bc_which->ix, bc_which->nullOK); 4176 CHECK; 4177 if (ref == null && bc_which == &bc_classref) { 4178 // Shorthand for class self-references. 4179 ref = thisClass; 4180 } 4181 origBC = bc; 4182 switch (bc) { 4183 case _invokestatic_int: 4184 origBC = bc_invokestatic; 4185 break; 4186 case _invokespecial_int: 4187 origBC = bc_invokespecial; 4188 break; 4189 case bc_ildc: 4190 case bc_cldc: 4191 case bc_fldc: 4192 case bc_sldc: 4193 case bc_qldc: 4194 origBC = bc_ldc; 4195 break; 4196 case bc_ildc_w: 4197 case bc_cldc_w: 4198 case bc_fldc_w: 4199 case bc_sldc_w: 4200 case bc_qldc_w: 4201 origBC = bc_ldc_w; 4202 break; 4203 case bc_lldc2_w: 4204 case bc_dldc2_w: 4205 origBC = bc_ldc2_w; 4206 break; 4207 case bc_new: 4208 newClass = ref; |