comparison src/share/vm/ci/bcEscapeAnalyzer.cpp @ 6725:da91efe96a93

6964458: Reimplement class meta-data storage to use native memory Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author coleenp
date Sat, 01 Sep 2012 13:25:18 -0400
parents 7f813940ac35
children bb33c6fdcf0d
comparison
equal deleted inserted replaced
6724:36d1d483d5d6 6725:da91efe96a93
1300 // does not returns an object (_return_allocated is set in initialize()). 1300 // does not returns an object (_return_allocated is set in initialize()).
1301 if (_arg_local.Size() == 0 && !_return_allocated) { 1301 if (_arg_local.Size() == 0 && !_return_allocated) {
1302 // Clear all info since method's bytecode was not analysed and 1302 // Clear all info since method's bytecode was not analysed and
1303 // set pessimistic escape information. 1303 // set pessimistic escape information.
1304 clear_escape_info(); 1304 clear_escape_info();
1305 methodData()->set_eflag(methodDataOopDesc::allocated_escapes); 1305 methodData()->set_eflag(MethodData::allocated_escapes);
1306 methodData()->set_eflag(methodDataOopDesc::unknown_modified); 1306 methodData()->set_eflag(MethodData::unknown_modified);
1307 methodData()->set_eflag(methodDataOopDesc::estimated); 1307 methodData()->set_eflag(MethodData::estimated);
1308 return; 1308 return;
1309 } 1309 }
1310 1310
1311 if (iid != vmIntrinsics::_none) 1311 if (iid != vmIntrinsics::_none)
1312 success = compute_escape_for_intrinsic(iid); 1312 success = compute_escape_for_intrinsic(iid);
1330 methodData()->set_arg_returned(i); 1330 methodData()->set_arg_returned(i);
1331 } 1331 }
1332 methodData()->set_arg_modified(i, _arg_modified[i]); 1332 methodData()->set_arg_modified(i, _arg_modified[i]);
1333 } 1333 }
1334 if (_return_local) { 1334 if (_return_local) {
1335 methodData()->set_eflag(methodDataOopDesc::return_local); 1335 methodData()->set_eflag(MethodData::return_local);
1336 } 1336 }
1337 if (_return_allocated) { 1337 if (_return_allocated) {
1338 methodData()->set_eflag(methodDataOopDesc::return_allocated); 1338 methodData()->set_eflag(MethodData::return_allocated);
1339 } 1339 }
1340 if (_allocated_escapes) { 1340 if (_allocated_escapes) {
1341 methodData()->set_eflag(methodDataOopDesc::allocated_escapes); 1341 methodData()->set_eflag(MethodData::allocated_escapes);
1342 } 1342 }
1343 if (_unknown_modified) { 1343 if (_unknown_modified) {
1344 methodData()->set_eflag(methodDataOopDesc::unknown_modified); 1344 methodData()->set_eflag(MethodData::unknown_modified);
1345 } 1345 }
1346 methodData()->set_eflag(methodDataOopDesc::estimated); 1346 methodData()->set_eflag(MethodData::estimated);
1347 } 1347 }
1348 } 1348 }
1349 1349
1350 void BCEscapeAnalyzer::read_escape_info() { 1350 void BCEscapeAnalyzer::read_escape_info() {
1351 assert(methodData()->has_escape_info(), "no escape info available"); 1351 assert(methodData()->has_escape_info(), "no escape info available");
1358 _arg_stack.set(i); 1358 _arg_stack.set(i);
1359 if (methodData()->is_arg_returned(i)) 1359 if (methodData()->is_arg_returned(i))
1360 _arg_returned.set(i); 1360 _arg_returned.set(i);
1361 _arg_modified[i] = methodData()->arg_modified(i); 1361 _arg_modified[i] = methodData()->arg_modified(i);
1362 } 1362 }
1363 _return_local = methodData()->eflag_set(methodDataOopDesc::return_local); 1363 _return_local = methodData()->eflag_set(MethodData::return_local);
1364 _return_allocated = methodData()->eflag_set(methodDataOopDesc::return_allocated); 1364 _return_allocated = methodData()->eflag_set(MethodData::return_allocated);
1365 _allocated_escapes = methodData()->eflag_set(methodDataOopDesc::allocated_escapes); 1365 _allocated_escapes = methodData()->eflag_set(MethodData::allocated_escapes);
1366 _unknown_modified = methodData()->eflag_set(methodDataOopDesc::unknown_modified); 1366 _unknown_modified = methodData()->eflag_set(MethodData::unknown_modified);
1367 1367
1368 } 1368 }
1369 1369
1370 #ifndef PRODUCT 1370 #ifndef PRODUCT
1371 void BCEscapeAnalyzer::dump() { 1371 void BCEscapeAnalyzer::dump() {