1168 if (!succ->processed()) 1169 worklist.push(succ); 1170 } 1171 } 1172 } 1173 1174 bool BCEscapeAnalyzer::do_analysis() { 1175 Arena* arena = CURRENT_ENV->arena(); 1176 // identify basic blocks 1177 _methodBlocks = _method->get_method_blocks(); 1178 1179 iterate_blocks(arena); 1180 // TEMPORARY 1181 return true; 1182 } 1183 1184 vmIntrinsics::ID BCEscapeAnalyzer::known_intrinsic() { 1185 vmIntrinsics::ID iid = method()->intrinsic_id(); 1186 1187 if (iid == vmIntrinsics::_getClass || 1188 iid == vmIntrinsics::_fillInStackTrace || 1189 iid == vmIntrinsics::_hashCode) 1190 return iid; 1191 else 1192 return vmIntrinsics::_none; 1193 } 1194 1195 bool BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) { 1196 ArgumentMap arg; 1197 arg.clear(); 1198 switch (iid) { 1199 case vmIntrinsics::_getClass: 1200 _return_local = false; 1201 break; 1202 case vmIntrinsics::_fillInStackTrace: 1203 arg.set(0); // 'this' 1204 set_returned(arg); 1205 break; 1206 case vmIntrinsics::_hashCode: 1207 // initialized state is correct 1208 break; 1209 default: 1210 assert(false, "unexpected intrinsic"); 1211 } 1212 return true; 1213 } 1214 1215 void BCEscapeAnalyzer::initialize() { 1216 int i; 1217 1218 // clear escape information (method may have been deoptimized) 1219 methodData()->clear_escape_info(); 1220 1221 // initialize escape state of object parameters 1222 ciSignature* sig = method()->signature(); 1223 int j = 0; 1224 if (!method()->is_static()) { | 1168 if (!succ->processed()) 1169 worklist.push(succ); 1170 } 1171 } 1172 } 1173 1174 bool BCEscapeAnalyzer::do_analysis() { 1175 Arena* arena = CURRENT_ENV->arena(); 1176 // identify basic blocks 1177 _methodBlocks = _method->get_method_blocks(); 1178 1179 iterate_blocks(arena); 1180 // TEMPORARY 1181 return true; 1182 } 1183 1184 vmIntrinsics::ID BCEscapeAnalyzer::known_intrinsic() { 1185 vmIntrinsics::ID iid = method()->intrinsic_id(); 1186 1187 if (iid == vmIntrinsics::_getClass || 1188 iid == vmIntrinsics::_hashCode) 1189 return iid; 1190 else 1191 return vmIntrinsics::_none; 1192 } 1193 1194 bool BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) { 1195 ArgumentMap arg; 1196 arg.clear(); 1197 switch (iid) { 1198 case vmIntrinsics::_getClass: 1199 _return_local = false; 1200 break; 1201 case vmIntrinsics::_hashCode: 1202 // initialized state is correct 1203 break; 1204 default: 1205 assert(false, "unexpected intrinsic"); 1206 } 1207 return true; 1208 } 1209 1210 void BCEscapeAnalyzer::initialize() { 1211 int i; 1212 1213 // clear escape information (method may have been deoptimized) 1214 methodData()->clear_escape_info(); 1215 1216 // initialize escape state of object parameters 1217 ciSignature* sig = method()->signature(); 1218 int j = 0; 1219 if (!method()->is_static()) { |