< prev index next >
src/hotspot/share/ci/bcEscapeAnalyzer.cpp
Print this page
*** 1195,1236 ****
worklist.push(succ);
}
}
}
! bool BCEscapeAnalyzer::do_analysis() {
Arena* arena = CURRENT_ENV->arena();
// identify basic blocks
_methodBlocks = _method->get_method_blocks();
iterate_blocks(arena);
- // TEMPORARY
- return true;
}
vmIntrinsics::ID BCEscapeAnalyzer::known_intrinsic() {
vmIntrinsics::ID iid = method()->intrinsic_id();
!
! if (iid == vmIntrinsics::_getClass ||
! iid == vmIntrinsics::_hashCode)
return iid;
! else
return vmIntrinsics::_none;
}
! bool BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) {
switch (iid) {
- case vmIntrinsics::_getClass:
- _return_local = false;
- break;
case vmIntrinsics::_hashCode:
// initialized state is correct
break;
default:
assert(false, "unexpected intrinsic");
}
- return true;
}
void BCEscapeAnalyzer::initialize() {
int i;
--- 1195,1229 ----
worklist.push(succ);
}
}
}
! void BCEscapeAnalyzer::do_analysis() {
Arena* arena = CURRENT_ENV->arena();
// identify basic blocks
_methodBlocks = _method->get_method_blocks();
iterate_blocks(arena);
}
vmIntrinsics::ID BCEscapeAnalyzer::known_intrinsic() {
vmIntrinsics::ID iid = method()->intrinsic_id();
! if (iid == vmIntrinsics::_hashCode) {
return iid;
! } else {
return vmIntrinsics::_none;
+ }
}
! void BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) {
switch (iid) {
case vmIntrinsics::_hashCode:
// initialized state is correct
break;
default:
assert(false, "unexpected intrinsic");
}
}
void BCEscapeAnalyzer::initialize() {
int i;
*** 1330,1341 ****
tty->print(" intrinsic");
method()->print_short_name();
tty->print_cr(" (%d bytes)", method()->code_size());
}
- bool success;
-
initialize();
// Do not scan method if it has no object parameters and
// does not returns an object (_return_allocated is set in initialize()).
if (_arg_local.Size() == 0 && !_return_allocated) {
--- 1323,1332 ----
*** 1347,1359 ****
methodData()->set_eflag(MethodData::estimated);
return;
}
if (iid != vmIntrinsics::_none)
! success = compute_escape_for_intrinsic(iid);
else {
! success = do_analysis();
}
// don't store interprocedural escape information if it introduces
// dependencies or if method data is empty
//
--- 1338,1350 ----
methodData()->set_eflag(MethodData::estimated);
return;
}
if (iid != vmIntrinsics::_none)
! compute_escape_for_intrinsic(iid);
else {
! do_analysis();
}
// don't store interprocedural escape information if it introduces
// dependencies or if method data is empty
//
< prev index next >