src/share/vm/ci/bcEscapeAnalyzer.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8076112 Sdiff src/share/vm/ci

src/share/vm/ci/bcEscapeAnalyzer.cpp

Print this page




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()) {


src/share/vm/ci/bcEscapeAnalyzer.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File